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.7"

Class Method Summary collapse

Class Method Details

.check_envObject



66
67
68
69
70
71
72
73
74
# File 'lib/pec.rb', line 66

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_resetObject



76
77
78
# File 'lib/pec.rb', line 76

def self.config_reset
  @_configure = nil
end

.configureObject



52
53
54
55
# File 'lib/pec.rb', line 52

def self.configure
  load_config unless @_configure
  @_configure
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

Returns:

  • (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

.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 = Yao::Server.list_detail("name" => config.name).first if fetch
    yield(server, config)
  end
end