aws/aws-codedeploy-agent

View on GitHub
lib/instance_agent/config.rb

Summary

Maintainability
A
1 hr
Test Coverage
# encoding: UTF-8
require 'process_manager/config'
require 'set'

module InstanceAgent
  class Config < ProcessManager::Config
    
    FIPS_ENABLED_REGIONS = Set['us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', 'us-gov-west-1', 'us-gov-east-1']  
    
    def self.init
      @config = Config.new
      ProcessManager::Config.instance_variable_set("@config", @config)
    end

    def validate
      errors = super
      validate_children(errors)
      validate_use_fips_mode(errors)
      errors
    end

    def initialize
      super
      @config.update({
        :program_name => 'codedeploy-agent',
        :wait_between_spawning_children => 1,
        :log_dir => nil,
        :pid_dir => nil,
        :shared_dir => nil,
        :user => nil,
        :ongoing_deployment_tracking => 'ongoing-deployment',
        :children => 1,
        :http_read_timeout => 80,
        :instance_service_region => nil,
        :instance_service_endpoint => nil,
        :instance_service_port => nil,
        :wait_between_runs => 30,
        :wait_after_error => 30,
        :codedeploy_test_profile => 'prod',
        :kill_agent_max_wait_time_seconds => 7200,
        :on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml',
        :proxy_uri => nil,
        :enable_deployments_log => true,
        :use_fips_mode => false,
        :deploy_control_endpoint => nil,
        :s3_endpoint_override => nil,
        :enable_auth_policy => false
      })
    end

    def validate_children(errors = [])
      errors << 'children can only be set to 1' unless config[:children] == 1
    end
    
    def validate_use_fips_mode errors
      if config[:use_fips_mode] && ! (FIPS_ENABLED_REGIONS.include? region)
        errors << 'use_fips_mode can be set to true only in regions located in the USA' 
      end  
    end

    #Return the region we are currently in
    def region 
      ENV['AWS_REGION'] || InstanceMetadata.region
    end
    
  end
end