Module: Bosh::AwsRegistry

Defined in:
lib/aws_registry/config.rb,
lib/aws_registry.rb,
lib/aws_registry/errors.rb,
lib/aws_registry/models.rb,
lib/aws_registry/runner.rb,
lib/aws_registry/version.rb,
lib/aws_registry/yaml_helper.rb,
lib/aws_registry/api_controller.rb,
lib/aws_registry/instance_manager.rb

Overview

Copyright © 2009-2012 VMware, Inc.

Defined Under Namespace

Modules: Models, YamlHelper Classes: ApiController, AwsError, ConfigError, ConnectionError, Error, FatalError, InstanceError, InstanceManager, InstanceNotFound, Runner

Constant Summary collapse

AWS_MAX_RETRIES =
2
AWS_EC2_ENDPOINT =
"ec2.amazonaws.com"
VERSION =
"0.2.3"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dbObject

Returns the value of attribute db.



14
15
16
# File 'lib/aws_registry/config.rb', line 14

def db
  @db
end

.ec2Object



44
45
46
# File 'lib/aws_registry/config.rb', line 44

def ec2
  @ec2 ||= AWS::EC2.new(@aws_options)
end

.http_passwordObject

Returns the value of attribute http_password.



13
14
15
# File 'lib/aws_registry/config.rb', line 13

def http_password
  @http_password
end

.http_portObject

Returns the value of attribute http_port.



11
12
13
# File 'lib/aws_registry/config.rb', line 11

def http_port
  @http_port
end

.http_userObject

Returns the value of attribute http_user.



12
13
14
# File 'lib/aws_registry/config.rb', line 12

def http_user
  @http_user
end

.loggerObject

Returns the value of attribute logger.



10
11
12
# File 'lib/aws_registry/config.rb', line 10

def logger
  @logger
end

Class Method Details

.configure(config) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/aws_registry/config.rb', line 18

def configure(config)
  validate_config(config)

  @logger ||= Logger.new(config["logfile"] || STDOUT)

  if config["loglevel"].kind_of?(String)
    @logger.level = Logger.const_get(config["loglevel"].upcase)
  end

  @http_port = config["http"]["port"]
  @http_user = config["http"]["user"]
  @http_password = config["http"]["password"]

  @aws = config["aws"]

  @aws_options = {
    :access_key_id => @aws["access_key_id"],
    :secret_access_key => @aws["secret_access_key"],
    :max_retries => @aws["max_retries"] || AWS_MAX_RETRIES,
    :ec2_endpoint => @aws["ec2_endpoint"] || AWS_EC2_ENDPOINT,
    :logger => @logger
  }

  @db = connect_db(config["db"])
end

.connect_db(db_config) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/aws_registry/config.rb', line 48

def connect_db(db_config)
  connection_options = {
    :max_connections => db_config["max_connections"],
    :pool_timeout => db_config["pool_timeout"]
  }

  db = Sequel.connect(db_config["database"], connection_options)
  db.logger = @logger
  db.sql_log_level = :debug
  db
end

.validate_config(config) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/aws_registry/config.rb', line 60

def validate_config(config)
  unless config.is_a?(Hash)
    raise ConfigError, "Invalid config format, Hash expected, " \
                       "#{config.class} given"
  end

  unless config.has_key?("http") && config["http"].is_a?(Hash)
    raise ConfigError, "HTTP configuration is missing from " \
                       "config file"
  end

  unless config.has_key?("db") && config["db"].is_a?(Hash)
    raise ConfigError, "Database configuration is missing from " \
                       "config file"
  end

  unless config.has_key?("aws") && config["aws"].is_a?(Hash)
    raise ConfigError, "AWS configuration is missing from " \
                       "config file"
  end
end