From 0dd550c37e56de44af3257630fd825c26e7d55b9 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 16 Sep 2015 12:14:01 +0300 Subject: [PATCH] properly set chef node name for instances --- devops-service/providers/ec2.rb | 37 ++++++++++++++++++--------- devops-service/providers/openstack.rb | 3 ++- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/devops-service/providers/ec2.rb b/devops-service/providers/ec2.rb index 09df0b9..97ab7e7 100644 --- a/devops-service/providers/ec2.rb +++ b/devops-service/providers/ec2.rb @@ -254,21 +254,29 @@ module Provider cloud_formation.describe_stack_resources({'StackName' => stack.name}).body['StackResources'] end - def stack_resource(stack, resource_id) - physical_id = fog_stack(stack).resources.get(resource_id).physical_resource_id - compute.servers.get(physical_id) - end + # не работает, не используется + # def stack_resource(stack, resource_id) + # physical_id = fog_stack(stack).resources.get(resource_id).physical_resource_id + # compute.servers.get(physical_id) + # end def stack_servers(stack) - list = compute.describe_instances({'tag-key' => 'aws:cloudformation:stack-id', 'tag-value' => stack.id}).body["reservationSet"] - list.map do |l| - i = l["instancesSet"][0] + # orchestration.describe_stack_resources возвращает мало информации + list = compute.describe_instances( + 'tag-key' => 'aws:cloudformation:stack-id', + 'tag-value' => stack.id + ).body["reservationSet"] + + list.map do |instance| + info = instance["instancesSet"][0] + instance_logical_name = info["tagSet"]["Name"] || info['tagSet']['aws:cloudformation:logical-id'] { - 'name' => i["tagSet"]["Name"], - 'id' => i["instanceId"], - 'key_name' => i["keyName"], - 'private_ip' => i["privateIpAddress"], - 'public_ip' => i["ipAddress"], + # 'name' => info["tagSet"]["Name"], + 'name' => [stack.name, instance_logical_name].join('-'), + 'id' => info["instanceId"], + 'key_name' => info["keyName"], + 'private_ip' => info["privateIpAddress"], + 'public_ip' => info["ipAddress"], } end end @@ -277,6 +285,7 @@ module Provider "stack-#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}".gsub('_', '-') end private + def convert_groups list res = {} list.each do |g| @@ -327,5 +336,9 @@ module Provider r end + def orchestration + @orchestration ||= Fog::AWS::CloudFormation.new(connection_options) + end + end end diff --git a/devops-service/providers/openstack.rb b/devops-service/providers/openstack.rb index c9a3d87..6e8249e 100644 --- a/devops-service/providers/openstack.rb +++ b/devops-service/providers/openstack.rb @@ -246,6 +246,7 @@ module Provider end def stack_resource(stack, resource_id) + fog_stack = orchestration.stacks.get(stack.name, stack.id) physical_id = fog_stack(stack).resources.get(resource_id).physical_resource_id compute.servers.get(physical_id) end @@ -287,7 +288,7 @@ module Provider end def orchestration - @connection ||= Fog::Orchestration.new(connection_options) + @orchestration ||= Fog::Orchestration.new(connection_options) end end