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