Module: Pec
- Defined in:
- lib/pec.rb,
lib/pec/cli.rb,
lib/pec/core.rb,
lib/pec/init.rb,
lib/pec/logger.rb,
lib/pec/sample.rb,
lib/pec/command.rb,
lib/pec/handler.rb,
lib/pec/version.rb,
lib/pec/configure.rb,
lib/pec/coordinate.rb
Defined Under Namespace
Modules: Command, Coordinate, Core, Handler
Classes: CLI, ConfigError, Configure, Init, Logger
Constant Summary
collapse
- VERSION =
"0.7.8"
Class Method Summary
collapse
Class Method Details
.check_env ⇒ Object
96
97
98
99
100
101
102
103
104
|
# File 'lib/pec.rb', line 96
def self.check_env
%w(
OS_AUTH_URL
OS_USERNAME
OS_PASSWORD
).each do |name|
raise "please set env #{name}" unless ENV[name]
end
end
|
.config_reset ⇒ Object
106
107
108
|
# File 'lib/pec.rb', line 106
def self.config_reset
@_configure = nil
end
|
52
53
54
55
|
# File 'lib/pec.rb', line 52
def self.configure
load_config unless @_configure
@_configure
end
|
.fetch_flavor(server) ⇒ Object
78
79
80
|
# File 'lib/pec.rb', line 78
def self.fetch_flavor(server)
flavor_list(server).find {|f|f.id == server.flavor['id']}
end
|
.fetch_server(config) ⇒ Object
66
67
68
|
# File 'lib/pec.rb', line 66
def self.fetch_server(config)
server_list(config).find {|s|s.name == config.name}
end
|
.fetch_tenant_by_id(server) ⇒ Object
70
71
72
|
# File 'lib/pec.rb', line 70
def self.fetch_tenant_by_id(server)
tenant_list.find {|tenant| tenant.id == server.tenant_id}
end
|
.fetch_tenant_by_name(config) ⇒ Object
74
75
76
|
# File 'lib/pec.rb', line 74
def self.fetch_tenant_by_name(config)
tenant_list.find {|tenant| tenant.name == config.tenant}
end
|
.flavor_list(server) ⇒ Object
91
92
93
94
|
# File 'lib/pec.rb', line 91
def self.flavor_list(server)
@_flavor_list ||= {}
@_flavor_list[server.tenant_id] ||= Yao::Flavor.list
end
|
.init_yao(_tenant_name) ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/pec.rb', line 20
def self.init_yao(_tenant_name)
return unless reload_yao?(_tenant_name)
check_env
Yao.configure do
auth_url "#{ENV["OS_AUTH_URL"]}/tokens"
username ENV["OS_USERNAME"]
password ENV["OS_PASSWORD"]
tenant_name _tenant_name
end
end
|
.load_config(config_name = nil) ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/pec.rb', line 35
def self.load_config(config_name=nil)
@_configure ||= []
config_name ||= 'Pec.yaml'
merge_config(config_name).to_hash.reject {|k,v| k[0].match(/\_/) || k.match(/^includes$/) }.each do |host|
@_configure << Pec::Configure.new(host)
end
end
|
.merge_config(config_name) ⇒ Object
43
44
45
46
47
48
49
50
|
# File 'lib/pec.rb', line 43
def self.merge_config(config_name)
base_config = YAML.load_file(config_name)
if include_files = base_config.to_hash.find{|k,v| k.match(/^includes$/) && !v.nil? }
YAML.load(File.read(config_name) + include_files[1].map {|f|File.read(f)}.join("\n"))
else
base_config
end
end
|
.reload_yao?(_tenant_name) ⇒ Boolean
31
32
33
|
# File 'lib/pec.rb', line 31
def self.reload_yao?(_tenant_name)
@_last_tenant = _tenant_name if _tenant_name != @_last_tenant
end
|
.server_list(config) ⇒ Object
82
83
84
85
|
# File 'lib/pec.rb', line 82
def self.server_list(config)
@_server_list ||= {}
@_server_list[config.tenant] ||= Yao::Server.list_detail({tenant_id: fetch_tenant_by_name(config).id})
end
|
.servers(hosts, options, fetch = false) ⇒ Object
57
58
59
60
61
62
63
64
|
# File 'lib/pec.rb', line 57
def self.servers(hosts, options, fetch=false)
self.configure.each do |config|
next if hosts.size > 0 && hosts.none? {|name| config.name.match(/^#{name}/)}
Pec.init_yao(config.tenant)
server = fetch_server(config) if fetch
yield(server, config)
end
end
|
.tenant_list ⇒ Object
87
88
89
|
# File 'lib/pec.rb', line 87
def self.tenant_list
@_tenant_list ||= Yao::Tenant.list
end
|