mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
initial AWS tag support, describe only
This commit is contained in:
parent
c7071922b0
commit
e75690f781
8 changed files with 163 additions and 0 deletions
|
@ -19,6 +19,8 @@ module Fog
|
|||
collection :servers
|
||||
model :snapshot
|
||||
collection :snapshots
|
||||
model :tag
|
||||
collection :tags
|
||||
model :volume
|
||||
collection :volumes
|
||||
|
||||
|
@ -48,6 +50,7 @@ module Fog
|
|||
request :describe_regions
|
||||
request :describe_security_groups
|
||||
request :describe_snapshots
|
||||
request :describe_tags
|
||||
request :describe_volumes
|
||||
request :detach_volume
|
||||
request :disassociate_address
|
||||
|
|
|
@ -36,7 +36,13 @@ module Fog
|
|||
|
||||
return true
|
||||
end
|
||||
|
||||
def tags
|
||||
requires :id
|
||||
|
||||
connection.tags(:filters => {'resource-id' => @id})
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -188,6 +188,12 @@ module Fog
|
|||
connection.stop_instances(@id)
|
||||
true
|
||||
end
|
||||
|
||||
def tags
|
||||
requires :id
|
||||
|
||||
connection.tags(:filters => {'resource-id' => @id})
|
||||
end
|
||||
|
||||
def username
|
||||
@username ||= 'root'
|
||||
|
|
36
lib/fog/aws/models/compute/tag.rb
Normal file
36
lib/fog/aws/models/compute/tag.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class Compute
|
||||
|
||||
class Tag < Fog::Model
|
||||
|
||||
identity :key
|
||||
|
||||
attribute :value
|
||||
attribute :resource_id, :aliases => 'resourceId'
|
||||
attribute :resource_type, :aliases => 'resourceType'
|
||||
|
||||
def initialize(attributes = {})
|
||||
super
|
||||
end
|
||||
|
||||
def destroy
|
||||
requires :key, :resource_id
|
||||
connection.delete_tags(resource_id, key)
|
||||
true
|
||||
end
|
||||
|
||||
def save
|
||||
requires :key, :resource_id
|
||||
connection.create_tags(resource_id, key, value)
|
||||
true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
34
lib/fog/aws/models/compute/tags.rb
Normal file
34
lib/fog/aws/models/compute/tags.rb
Normal file
|
@ -0,0 +1,34 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/compute/tag'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class Compute
|
||||
|
||||
class Tags < Fog::Collection
|
||||
|
||||
attribute :filters
|
||||
|
||||
model Fog::AWS::Compute::Tag
|
||||
|
||||
def initialize(attributes)
|
||||
@filters ||= {}
|
||||
super
|
||||
end
|
||||
|
||||
def all(filters = @filters)
|
||||
@filters = filters
|
||||
data = connection.describe_tags(@filters).body
|
||||
load(data['tagSet'])
|
||||
end
|
||||
|
||||
def get(key)
|
||||
if key
|
||||
self.class.new(:connection => connection).all('key' => key)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -62,6 +62,12 @@ module Fog
|
|||
|
||||
connection.snapshots(:volume => self)
|
||||
end
|
||||
|
||||
def tags
|
||||
requires :id
|
||||
|
||||
connection.tags(:filters => {'resource-id' => @id})
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
|
30
lib/fog/aws/parsers/compute/describe_tags.rb
Normal file
30
lib/fog/aws/parsers/compute/describe_tags.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module Compute
|
||||
|
||||
class DescribeTags < Fog::Parsers::Base
|
||||
|
||||
def reset
|
||||
@tag = {}
|
||||
@response = { 'tagSet' => [] }
|
||||
end
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'resourceId', 'resourceType', 'key', 'value'
|
||||
@tag[name] = @value
|
||||
when 'item'
|
||||
@response['tagSet'] << @tag
|
||||
@tag = {}
|
||||
when 'requestId'
|
||||
@response[name] = @value
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
42
lib/fog/aws/requests/compute/describe_tags.rb
Normal file
42
lib/fog/aws/requests/compute/describe_tags.rb
Normal file
|
@ -0,0 +1,42 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class Compute
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/compute/describe_tags'
|
||||
|
||||
# Describe all or specified tags
|
||||
#
|
||||
# ==== Parameters
|
||||
# * filters<~Hash> - List of filters to limit results with
|
||||
#
|
||||
# === Returns
|
||||
# * response<~Excon::Response>:
|
||||
# * body<~Hash>:
|
||||
# * 'requestId'<~String> - Id of request
|
||||
# * 'tagSet'<~Array>:
|
||||
# * 'resourceId'<~String> - id of resource tag belongs to
|
||||
# * 'resourceType'<~String> - type of resource tag belongs to
|
||||
# * 'key'<~String> - Tag's key
|
||||
# * 'value'<~String> - Tag's value
|
||||
def describe_tags(filters = {})
|
||||
params = AWS.indexed_filters(filters)
|
||||
request({
|
||||
'Action' => 'DescribeTags',
|
||||
:idempotent => true,
|
||||
:parser => Fog::Parsers::AWS::Compute::DescribeTags.new
|
||||
}.merge!(params))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
|
||||
def describe_tags(filters = {})
|
||||
Fog::Mock.not_implemented
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue