class Opsmgr::Renderer::AWS
Constants
- BASE_RENDERER_FIELDS
Attributes
region[R]
stack_name[R]
Public Class Methods
new(settings_file_contents)
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 43 def initialize(settings_file_contents) @settings_file_contents = settings_file_contents settings = YAML.load(@settings_file_contents) @vm_configs = settings.fetch('vm_shepherd').fetch('vm_configs') @stack_name = settings.fetch('vm_shepherd').fetch('env_config').fetch('stack_name') @region = settings.fetch('vm_shepherd').fetch('env_config').fetch('region') ::AWS.config( access_key_id: settings.fetch('vm_shepherd').fetch('env_config').fetch('aws_access_key'), secret_access_key: settings.fetch('vm_shepherd').fetch('env_config').fetch('aws_secret_key'), region: region, ) @cloud_formation = ::AWS::CloudFormation.new @ec2 = ::AWS::EC2.new @custom_renderer_fields = settings.fetch('custom_renderer_fields', []) setup_custom_renderer_field_methods! unless @custom_renderer_fields.empty? end
Public Instance Methods
previous_version_public_ip()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 93 def previous_version_public_ip previous_version_elastic_ip ? previous_version_elastic_ip.public_ip : nil end
release_candidate_public_ip()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 89 def release_candidate_public_ip ops_manager_elastic_ip ? ops_manager_elastic_ip.public_ip : nil end
rendered_settings()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 73 def rendered_settings render(@settings_file_contents) end
s3_endpoint()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 82 def s3_endpoint { 'us-east-1' => 'https://s3.amazonaws.com', 'us-west-1' => 'https://s3-us-west-1.amazonaws.com', }[region] end
setup_custom_renderer_field_methods!()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 62 def setup_custom_renderer_field_methods! @custom_renderer_fields.each do |property| method_body = proc do # convert my_custom_key to MyCustomKey to match AWS format output(property.camelize) end self.class.send(:define_method, property.to_sym, &method_body) end end
vms_security_group_name()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 77 def vms_security_group_name security_group = @ec2.security_groups.find { |g| g.id == vms_security_group_id } security_group ? security_group.name : '' end
Private Instance Methods
find_vm_instance(vm_name_token)
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 129 def find_vm_instance(vm_name_token) @ec2.instances.find do |instance| instance.tags.to_h['Name'] == find_vm_name(vm_name_token) && instance.status == :running end end
find_vm_name(vm_name_token)
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 135 def find_vm_name(vm_name_token) @vm_configs.find { |config| config.fetch('vm_name').match(vm_name_token) }.fetch('vm_name') end
ops_manager_elastic_ip()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 113 def ops_manager_elastic_ip @ops_manager_elastic_ip ||= ops_manager_instance ? ops_manager_instance.elastic_ip : nil end
ops_manager_instance()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 117 def ops_manager_instance @ops_manager_instance ||= find_vm_instance('RELEASE-CANDIATE') end
output(key)
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 99 def output(key) output = outputs.detect { |o| o.key == key } return output.value unless output.nil? '' rescue ::AWS::CloudFormation::Errors::ValidationError '' end
outputs()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 107 def outputs @outputs ||= @cloud_formation.stacks[@stack_name].outputs rescue ::AWS::CloudFormation::Errors::ValidationError @outputs = {} end
previous_version_elastic_ip()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 121 def previous_version_elastic_ip @previous_version_elastic_ip ||= previous_version_instance ? previous_version_instance.elastic_ip : nil end
previous_version_instance()
click to toggle source
# File lib/opsmgr/renderer/aws.rb, line 125 def previous_version_instance @previous_version_instance ||= find_vm_instance('PREVIOUS-VERSION') end