Class: Opsmgr::Renderer::AWS

Inherits:
Mustache
  • Object
show all
Defined in:
lib/opsmgr/renderer/aws.rb

Constant Summary collapse

BASE_RENDERER_FIELDS =
{
  vpc: 'PcfVpc',
  iam_aws_access_key_id: 'PcfIamUserAccessKey',
  iam_aws_secret_access_key: 'PcfIamUserSecretAccessKey',
  ssh_key_pair_name: 'PcfKeyPairName',
  public_subnet_id: 'PcfPublicSubnetId',
  private_subnet_id: 'PcfPrivateSubnetId',
  ops_manager_security_group_id: 'PcfOpsManagerSecurityGroupId',
  vms_security_group_id: 'PcfVmsSecurityGroupId',
  private_subnet_availability_zone: 'PcfPrivateSubnetAvailabilityZone',
  public_subnet_availability_zone: 'PcfPublicSubnetAvailabilityZone',
  s3_bucket_name: 'PcfOpsManagerS3Bucket',
  ert_s3_bucket_name: 'PcfElasticRuntimeS3Bucket',
  ert_s3_buildpacks_bucket_name: 'PcfElasticRuntimeS3BuildpacksBucket',
  ert_s3_droplets_bucket_name: 'PcfElasticRuntimeS3DropletsBucket',
  ert_s3_packages_bucket_name: 'PcfElasticRuntimeS3PackagesBucket',
  ert_s3_resources_bucket_name: 'PcfElasticRuntimeS3ResourcesBucket',
  rds_address: 'PcfRdsAddress',
  rds_port: 'PcfRdsPort',
  rds_username: 'PcfRdsUsername',
  rds_password: 'PcfRdsPassword',
  rds_ops_manager_dbname: 'PcfRdsDBName',
  ert_elb_dns_name: 'PcfElbDnsName',
  ert_ssh_elb_dns_name: 'PcfElbSshDnsName',
  ert_tcp_elb_dns_name: 'PcfElbTcpDnsName'
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(settings_file_contents) ⇒ AWS

Returns a new instance of AWS.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 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

Instance Attribute Details

#regionObject (readonly)

Returns the value of attribute region.



42
43
44
# File 'lib/opsmgr/renderer/aws.rb', line 42

def region
  @region
end

#stack_nameObject (readonly)

Returns the value of attribute stack_name.



42
43
44
# File 'lib/opsmgr/renderer/aws.rb', line 42

def stack_name
  @stack_name
end

Instance Method Details

#previous_version_public_ipObject



93
94
95
# 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_ipObject



89
90
91
# 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_settingsObject



73
74
75
# File 'lib/opsmgr/renderer/aws.rb', line 73

def rendered_settings
  render(@settings_file_contents)
end

#s3_endpointObject



82
83
84
85
86
87
# 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!Object



62
63
64
65
66
67
68
69
70
71
# 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_nameObject



77
78
79
80
# 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