mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
84 lines
2.6 KiB
Ruby
84 lines
2.6 KiB
Ruby
|
module Fog
|
||
|
module AWS
|
||
|
class ECS
|
||
|
class Real
|
||
|
require 'fog/aws/parsers/ecs/describe_clusters'
|
||
|
|
||
|
# Describes one or more of your clusters.
|
||
|
# http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeClusters.html
|
||
|
# ==== Parameters
|
||
|
# * clusters <~Array> - list of cluster names or full cluster Amazon Resource Name (ARN) entries
|
||
|
# ==== Returns
|
||
|
# * response<~Excon::Response>:
|
||
|
# * body<~Hash>:
|
||
|
# * 'clusters' <~Array> - The list of clusters
|
||
|
# * 'failures' <~Array> - The list of failures (if any)
|
||
|
def describe_clusters(params={})
|
||
|
if members = params.delete('clusters')
|
||
|
params.merge!(Fog::AWS.indexed_param('clusters.member', [*members]))
|
||
|
end
|
||
|
|
||
|
request({
|
||
|
'Action' => 'DescribeClusters',
|
||
|
:parser => Fog::Parsers::AWS::ECS::DescribeClusters.new
|
||
|
}.merge(params))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class Mock
|
||
|
def describe_clusters(params={})
|
||
|
response = Excon::Response.new
|
||
|
response.status = 200
|
||
|
|
||
|
members = params.delete('clusters')
|
||
|
members = 'default' unless members
|
||
|
clusters = []
|
||
|
failures = []
|
||
|
|
||
|
[*members].each do |c|
|
||
|
if match = c.match(/^arn:aws:ecs:.+:\d{1,12}:cluster\/(.+)$/)
|
||
|
result = self.data[:clusters].select { |cl| cl['clusterArn'].eql?(c) }
|
||
|
else
|
||
|
result = self.data[:clusters].select { |cl| cl['clusterName'].eql?(c) }
|
||
|
end
|
||
|
if result.empty?
|
||
|
cluster_name = match[1] if match
|
||
|
cluster_name = c unless match
|
||
|
failures << { 'name' => cluster_name }
|
||
|
else
|
||
|
clusters << result.first
|
||
|
end
|
||
|
end
|
||
|
|
||
|
owner_id = Fog::AWS::Mock.owner_id
|
||
|
|
||
|
failures.map! do |f|
|
||
|
{
|
||
|
'arn' => Fog::AWS::Mock.arn('ecs', owner_id, "cluster/#{f['name']}", region),
|
||
|
'reason' => 'MISSING'
|
||
|
}
|
||
|
end
|
||
|
clusters.map! do |c|
|
||
|
{
|
||
|
'clusterName' => c['clusterName'],
|
||
|
'clusterArn' => c['clusterArn'],
|
||
|
'status' => c['status']
|
||
|
}
|
||
|
end
|
||
|
|
||
|
response.body = {
|
||
|
'DescribeClustersResult' => {
|
||
|
'failures' => failures,
|
||
|
'clusters' => clusters
|
||
|
},
|
||
|
'ResponseMetadata' => {
|
||
|
'RequestId' => Fog::AWS::Mock.request_id
|
||
|
}
|
||
|
}
|
||
|
response
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|