lib/build-cloud/s3bucket.rb in build-cloud-0.0.19 vs lib/build-cloud/s3bucket.rb in build-cloud-0.0.20

- old
+ new

@@ -16,18 +16,23 @@ end def create - return if exists? + policy = @options.delete(:policy) + + unless exists? - @log.info( "Creating new S3 bucket #{@options[:key]}" ) + @log.info( "Creating new S3 bucket #{@options[:key]}" ) - bucket = @s3.directories.new( @options ) - bucket.save + bucket = @s3.directories.new( @options ) + bucket.save - @log.debug( bucket.inspect ) + @log.debug( bucket.inspect ) + end + + rationalise_policies( policy ) end def read @s3.directories.select { |d| d.key == @options[:key] }.first @@ -42,8 +47,33 @@ @log.info( "Deleting S3 bucket #{@options[:key]}" ) fog_object.destroy end + + def rationalise_policies( policy ) -end + policy = JSON.parse(policy) unless policy.nil? + @log.debug("Policy inspect #{policy.inspect}") + + begin + @log.debug("Inspect #{@s3.get_bucket_policy(fog_object.key)}") + current_policy = @s3.get_bucket_policy(fog_object.key) + rescue Excon::Errors::NotFound + current_policy = nil + end + @log.debug("Current Policy inspect #{current_policy.inspect}") + + if policy.nil? and current_policy.nil? + return + elsif policy.nil? and current_policy.any? + @log.info("Existing policy here, deleting it") + @s3.delete_bucket_policy(fog_object.key) + elsif policy != current_policy + @log.info( "For bucket #{fog_object.key} adding/updating policy #{p}" ) + @s3.put_bucket_policy( fog_object.key, policy ) + end + + end + +end