Class: Misty::Cloud

Inherits:
Object
  • Object
show all
Defined in:
lib/misty/cloud.rb

Defined Under Namespace

Classes: Options, Setup

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {:auth => {}}) ⇒ Cloud

Returns a new instance of Cloud.



14
15
16
17
18
# File 'lib/misty/cloud.rb', line 14

def initialize(params = {:auth => {}})
  @setup = self.class.setup(params)
  @options = Options.new
  @services = setup_services(params)
end

Instance Attribute Details

#servicesObject (readonly)

Returns the value of attribute services.



12
13
14
# File 'lib/misty/cloud.rb', line 12

def services
  @services
end

Class Method Details

.dot_to_underscore(val) ⇒ Object



56
57
58
# File 'lib/misty/cloud.rb', line 56

def self.dot_to_underscore(val)
  val.gsub(/\./,'_')
end

.setup(params) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/misty/cloud.rb', line 20

def self.setup(params)
  setup = Setup.new
  setup.content_type = params[:content_type] ? params[:content_type] : Misty::CONTENT_TYPE
  setup.interface = params[:interface] ? params[:interface] : Misty::INTERFACE
  setup.log = Logger.new(params[:log_file] ? params[:log_file] : Misty::LOG_FILE)
  setup.log.level = params[:log_level] ? params[:log_level] : Misty::LOG_LEVEL
  setup.region_id = params[:region_id] ? params[:region_id] : Misty::REGION_ID
  setup.ssl_verify_mode = params.key?(:ssl_verify_mode) ? params[:ssl_verify_mode] : Misty::SSL_VERIFY_MODE
  setup.auth = Misty::Auth.factory(params[:auth], setup.ssl_verify_mode, setup.log)
  setup
end

Instance Method Details

#alarmingObject



60
61
62
# File 'lib/misty/cloud.rb', line 60

def alarming
  @alarming ||= build_service(:alarming)
end

#baremetalObject



64
65
66
# File 'lib/misty/cloud.rb', line 64

def baremetal
  @baremetal ||= build_service(:baremetal)
end

#block_storageObject Also known as: volume



68
69
70
# File 'lib/misty/cloud.rb', line 68

def block_storage
  @block_storage ||= build_service(:block_storage)
end

#build_service(service_name) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/misty/cloud.rb', line 48

def build_service(service_name)
  project = @services[service_name].keys[0]
  version = @services[service_name].fetch(project)
  version = self.class.dot_to_underscore(version)
  klass = Object.const_get("Misty::Openstack::#{project.capitalize}::#{version.capitalize}")
  klass.new(@setup, @options[service_name])
end

#clusteringObject



74
75
76
# File 'lib/misty/cloud.rb', line 74

def clustering
  @clustering ||= build_service(:clustering)
end

#computeObject



78
79
80
# File 'lib/misty/cloud.rb', line 78

def compute
  @compute ||= build_service(:compute)
end

#containerObject



82
83
84
# File 'lib/misty/cloud.rb', line 82

def container
  @container ||= build_service(:container)
end

#data_processingObject



86
87
88
# File 'lib/misty/cloud.rb', line 86

def data_processing
  @data_processing ||= build_service(:data_processing)
end

#data_protectionObject



90
91
92
# File 'lib/misty/cloud.rb', line 90

def data_protection
  @data_protection ||= build_service(:data_protection)
end

#databaseObject



94
95
96
# File 'lib/misty/cloud.rb', line 94

def database
  @database ||= build_service(:database)
end

#dnsObject



98
99
100
# File 'lib/misty/cloud.rb', line 98

def dns
  @dns ||= build_service(:dns)
end

#identityObject



102
103
104
# File 'lib/misty/cloud.rb', line 102

def identity
  @identity ||= build_service(:identity)
end

#imageObject



106
107
108
# File 'lib/misty/cloud.rb', line 106

def image
  @image ||= build_service(:image)
end

#messagingObject



110
111
112
# File 'lib/misty/cloud.rb', line 110

def messaging
  @messaging ||= build_service(:messaging)
end

#meteringObject



114
115
116
# File 'lib/misty/cloud.rb', line 114

def metering
  @metering ||= build_service(:metering)
end

#networkObject



118
119
120
# File 'lib/misty/cloud.rb', line 118

def network
  @network ||= build_service(:network)
end

#object_storageObject



122
123
124
# File 'lib/misty/cloud.rb', line 122

def object_storage
  @object_storage ||= build_service(:object_storage)
end

#orchestrationObject



126
127
128
# File 'lib/misty/cloud.rb', line 126

def orchestration
  @orchestration ||= build_service(:orchestration)
end

#searchObject



130
131
132
# File 'lib/misty/cloud.rb', line 130

def search
  @search ||= build_service(:search)
end

#setup_services(params) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/misty/cloud.rb', line 32

def setup_services(params)
  services = {}
  Misty.services.each do |service|
    @options.send("#{service.name}=".to_sym, params[service.name] ? params[service.name] : {})

    if params[service.name] && params[service.name][:api_version] \
      && service.versions.include?(params[service.name][:api_version])
      services.merge!(service.name => {service.project => params[service.name][:api_version]})
    else
      # Highest version is used by default!
      services.merge!(service.name => {service.project => service.versions.sort[-1]})
    end
  end
  services
end

#shared_file_systemsObject



134
135
136
# File 'lib/misty/cloud.rb', line 134

def shared_file_systems
  @shared_file_systems ||= build_service(:shared_file_systems)
end