module Pec

Constants

VERSION

Public Class Methods

check_env() click to toggle source
# File lib/pec.rb, line 80
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() click to toggle source
# File lib/pec.rb, line 99
def self.config_reset
  %w(
    _configure
    _tenant_list
    _server_list
    _flavor_list
  ).each do |name|
    instance_variable_set("@#{name}".to_sym, nil)
  end
end
configure() click to toggle source
# File lib/pec.rb, line 48
def self.configure
  load_config unless @_configure
  @_configure
end
fetch_server(config) click to toggle source
# File lib/pec.rb, line 62
def self.fetch_server(config)
  server_list(config).find {|s|s.name == config.name}
end
flavor_list(server) click to toggle source
# File lib/pec.rb, line 75
def self.flavor_list(server)
  @_flavor_list ||= {}
  @_flavor_list[server.tenant_id] ||= Yao::Flavor.list
end
get_tenant_id() click to toggle source
# File lib/pec.rb, line 66
def self.get_tenant_id
  Yao.current_tenant_id
end
init_yao(_tenant_name) click to toggle source
# 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"]
    username ENV["OS_USERNAME"]
    password ENV["OS_PASSWORD"]
    tenant_name _tenant_name
    client_cert ENV['OS_CERT']
    client_key  ENV['OS_KEY']
    region_name ENV['OS_REGION_NAME']
  end
end
load_config(config_name="Pec.yaml") click to toggle source
# File lib/pec.rb, line 38
def self.load_config(config_name="Pec.yaml")
  @_configure ||= []
  ConfigFile.new(Pec.options[:config_file] || config_name).load.to_hash.reject {|k,v| k[0].match(/\_/) || k.match(/^includes$/) }.each do |config|
    @_configure << Pec::Configure.new(config)
  end
rescue => e
  Pec::Logger.critical "configure error!"
  raise e
end
options(opt=nil) click to toggle source
# File lib/pec.rb, line 110
def self.options(opt=nil)
  @_opt ||= {}
  @_opt = opt if opt
  @_opt
end
processor_matching(source, klass) { |object| ... } click to toggle source
# File lib/pec.rb, line 90
def self.processor_matching(source, klass)
  source.keys.each do |k|
    Object.const_get(klass.to_s).constants.each do |c|
      object = Object.const_get("#{klass.to_s}::#{c}")
      yield object if  k.to_s == object.kind.to_s
    end
  end
end
reload_yao?(_tenant_name) click to toggle source
# File lib/pec.rb, line 34
def self.reload_yao?(_tenant_name)
  @_last_tenant = _tenant_name if _tenant_name != @_last_tenant
end
server_list(config) click to toggle source
# File lib/pec.rb, line 70
def self.server_list(config)
  @_server_list ||= {}
  @_server_list[config.tenant] ||= Yao::Server.list_detail({ tenant_id: get_tenant_id })
end
servers(filter_hosts, not_fetch) { |server, config| ... } click to toggle source
# File lib/pec.rb, line 53
def self.servers(filter_hosts, not_fetch)
  self.configure.each do |config|
    next if filter_hosts.size > 0 && filter_hosts.none? {|name| config.name.match(/^#{name}/)}
    Pec.init_yao(config.tenant)
    server = fetch_server(config) unless not_fetch
    yield(server, config)
  end
end