class SDM::RoleGrants

include the permissions granted to members of the attached role.
role, the permissions granted to members of the composite role are augmented to
that make up those composite roles. When a composite role is attached to another
RoleGrants represent relationships between composite roles and the roles

def create(

Create registers a new RoleGrant.
def create(
  role_grant,
  deadline: nil
)
  req = V1::RoleGrantCreateRequest.new()
  req.role_grant = Plumbing::role_grant_to_plumbing(role_grant)
  tries = 0
  plumbing_response = nil
  loop do
    begin
      plumbing_response = @stub.create(req, metadata: @parent.get_metadata("RoleGrants.Create", req), deadline: deadline)
    rescue => exception
      if (@parent.shouldRetry(tries, exception))
        tries + +@parent.jitterSleep(tries)
        next
      end
      raise Plumbing::error_to_porcelain(exception)
    end
    break
  end
  resp = RoleGrantCreateResponse.new()
  resp.meta = Plumbing::create_response_metadata_to_porcelain(plumbing_response.meta)
  resp.role_grant = Plumbing::role_grant_to_porcelain(plumbing_response.role_grant)
  resp.rate_limit = Plumbing::rate_limit_metadata_to_porcelain(plumbing_response.rate_limit)
  resp
end

def delete(

Delete removes a RoleGrant by ID.
def delete(
  id,
  deadline: nil
)
  req = V1::RoleGrantDeleteRequest.new()
  req.id = id
  tries = 0
  plumbing_response = nil
  loop do
    begin
      plumbing_response = @stub.delete(req, metadata: @parent.get_metadata("RoleGrants.Delete", req), deadline: deadline)
    rescue => exception
      if (@parent.shouldRetry(tries, exception))
        tries + +@parent.jitterSleep(tries)
        next
      end
      raise Plumbing::error_to_porcelain(exception)
    end
    break
  end
  resp = RoleGrantDeleteResponse.new()
  resp.meta = Plumbing::delete_response_metadata_to_porcelain(plumbing_response.meta)
  resp.rate_limit = Plumbing::rate_limit_metadata_to_porcelain(plumbing_response.rate_limit)
  resp
end

def get(

Get reads one RoleGrant by ID.
def get(
  id,
  deadline: nil
)
  req = V1::RoleGrantGetRequest.new()
  req.id = id
  tries = 0
  plumbing_response = nil
  loop do
    begin
      plumbing_response = @stub.get(req, metadata: @parent.get_metadata("RoleGrants.Get", req), deadline: deadline)
    rescue => exception
      if (@parent.shouldRetry(tries, exception))
        tries + +@parent.jitterSleep(tries)
        next
      end
      raise Plumbing::error_to_porcelain(exception)
    end
    break
  end
  resp = RoleGrantGetResponse.new()
  resp.meta = Plumbing::get_response_metadata_to_porcelain(plumbing_response.meta)
  resp.role_grant = Plumbing::role_grant_to_porcelain(plumbing_response.role_grant)
  resp.rate_limit = Plumbing::rate_limit_metadata_to_porcelain(plumbing_response.rate_limit)
  resp
end

def initialize(host, insecure, parent)

def initialize(host, insecure, parent)
  begin
    if insecure
      @stub = V1::RoleGrants::Stub.new(host, :this_channel_is_insecure)
    else
      cred = GRPC::Core::ChannelCredentials.new()
      @stub = V1::RoleGrants::Stub.new(host, cred)
    end
  rescue => exception
    raise Plumbing::error_to_porcelain(exception)
  end
  @parent = parent
end

def list(

List gets a list of RoleGrants matching a given set of criteria.
def list(
  filter,
  *args,
  deadline: nil
)
  req = V1::RoleGrantListRequest.new()
  req.meta = V1::ListRequestMetadata.new()
  page_size_option = @parent._test_options["PageSize"]
  if page_size_option.is_a? Integer
    req.meta.limit = page_size_option
  end
  req.filter = Plumbing::quote_filter_args(filter, *args)
  resp = Enumerator::Generator.new { |g|
    tries = 0
    loop do
      begin
        plumbing_response = @stub.list(req, metadata: @parent.get_metadata("RoleGrants.List", req), deadline: deadline)
      rescue => exception
        if (@parent.shouldRetry(tries, exception))
          tries + +@parent.jitterSleep(tries)
          next
        end
        raise Plumbing::error_to_porcelain(exception)
      end
      tries = 0
      plumbing_response.role_grants.each do |plumbing_item|
        g.yield Plumbing::role_grant_to_porcelain(plumbing_item)
      end
      break if plumbing_response.meta.next_cursor == ""
      req.meta.cursor = plumbing_response.meta.next_cursor
    end
  }
  resp
end