Sha256: 512e62277ad779493fe02872bca84a1cfa42d65adbe42e3103c8c190a8944b7f

Contents?: true

Size: 699 Bytes

Versions: 8

Compression:

Stored size: 699 Bytes

Contents

module ChefAPI
  module AclAble
    def acl_path
      resource_path + "/_acl"
    end

    def load_acl
      data = self.class.connection.get(acl_path)
      # make deep copy
      @orig_acl_data = Marshal.load(Marshal.dump(data))
      data.freeze
      @acl = data
    end

    def acl
      unless @acl
        load_acl
      end
      @acl
    end

    def save!
      super
      if @acl != @orig_acl_data
        %w{create update grant read delete}.each { |action|
          if @acl[action] != @orig_acl_data[action]
            url = "#{acl_path}/#{action}"
            self.class.connection.put(url, { action => @acl[action] }.to_json)
          end
        }
      end
    end
  end

end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
chef-infra-api-0.10.10 lib/chef-api/aclable.rb
chef-api-0.10.10 lib/chef-api/aclable.rb
chef-infra-api-0.10.7 lib/chef-api/aclable.rb
chef-api-0.10.7 lib/chef-api/aclable.rb
chef-infra-api-0.10.5 lib/chef-api/aclable.rb
chef-api-0.10.5 lib/chef-api/aclable.rb
chef-infra-api-0.10.2 lib/chef-api/aclable.rb
chef-api-0.10.2 lib/chef-api/aclable.rb