mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
53 lines
1.3 KiB
Ruby
53 lines
1.3 KiB
Ruby
require 'fog/core/collection'
|
|
require 'fog/openstack/models/identity/ec2_credential'
|
|
|
|
module Fog
|
|
module Identity
|
|
class OpenStack
|
|
class Ec2Credentials < Fog::Collection
|
|
model Fog::Identity::OpenStack::Ec2Credential
|
|
|
|
attribute :user
|
|
|
|
def all
|
|
user_id = user ? user.id : nil
|
|
|
|
ec2_credentials = service.list_ec2_credentials(user_id)
|
|
|
|
load(ec2_credentials.body['credentials'])
|
|
end
|
|
|
|
def create(attributes = {})
|
|
if user then
|
|
attributes[:user_id] ||= user.id
|
|
attributes[:tenant_id] ||= user.tenant_id
|
|
end
|
|
|
|
super attributes
|
|
end
|
|
|
|
def destroy(access_key)
|
|
ec2_credential = self.find_by_access_key(access_key)
|
|
ec2_credential.destroy
|
|
end
|
|
|
|
def find_by_access_key(access_key)
|
|
user_id = user ? user.id : nil
|
|
|
|
ec2_credential =
|
|
self.find { |ec2_credential| ec2_credential.access == access_key }
|
|
|
|
unless ec2_credential then
|
|
response = service.get_ec2_credential(user_id, access_key)
|
|
body = response.body['credential']
|
|
body = body.merge 'service' => service
|
|
|
|
ec2_credential = Fog::Identity::OpenStack::EC2Credential.new(body)
|
|
end
|
|
|
|
ec2_credential
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|