Sha256: f01768debf25bf9a982c2937f43e2a1b621b1f91ed4f5df8e0019c1c3a5fac40

Contents?: true

Size: 1.15 KB

Versions: 87

Compression:

Stored size: 1.15 KB

Contents

require 'fog/core/model'

module Fog
  module Identity
    class OpenStack
      class Role < Fog::Model
        identity :id
        attribute :name

        def save
          requires :name
          data = service.create_role(name)
          merge_attributes(data.body['role'])
          true
        end

        def destroy
          requires :id
          service.delete_role(id)
          true
        end

        def add_to_user(user, tenant)
          add_remove_to_user(user, tenant, :add)
        end

        def remove_to_user(user, tenant)
          add_remove_to_user(user, tenant, :remove)
        end

        private
        def add_remove_to_user(user, tenant, ops)
          requires :id
          user_id = get_id(user)
          tenant_id = get_id(tenant)
          case ops
          when :add
            service.create_user_role(tenant_id, user_id, id).status == 200
          when :remove
            service.delete_user_role(tenant_id, user_id, id).status == 204
          end
        end

        def get_id(_)
          _.is_a?(String) ? _ : _.id
        end
      end # class Role
    end # class OpenStack
  end # module Identity
end # module Fog

Version data entries

87 entries across 87 versions & 10 rubygems

Version Path
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/openstack/models/identity/role.rb
fog-1.30.0 lib/fog/openstack/models/identity/role.rb
fog-1.29.0 lib/fog/openstack/models/identity/role.rb
fog-1.28.0 lib/fog/openstack/models/identity/role.rb
fog-1.27.0 lib/fog/openstack/models/identity/role.rb
fog-1.26.0 lib/fog/openstack/models/identity/role.rb
fog-1.25.0 lib/fog/openstack/models/identity/role.rb
nsidc-fog-1.24.1 lib/fog/openstack/models/identity/role.rb
fog-1.24.0 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.11 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.10 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.9 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.8 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.7 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.6 lib/fog/openstack/models/identity/role.rb
fog-1.23.0 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.4 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.3 lib/fog/openstack/models/identity/role.rb
ns-fog-1.22.2 lib/fog/openstack/models/identity/role.rb
fog-1.22.1 lib/fog/openstack/models/identity/role.rb