pec 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/lib/pec.rb +26 -22
- data/lib/pec/cli.rb +80 -5
- data/lib/pec/configure.rb +1 -1
- data/lib/pec/handler/base.rb +2 -8
- data/lib/pec/handler/flavor.rb +1 -1
- data/lib/pec/handler/image.rb +1 -1
- data/lib/pec/handler/networks.rb +13 -11
- data/lib/pec/handler/networks/allowed_address_pairs.rb +1 -1
- data/lib/pec/handler/networks/ip_address.rb +2 -2
- data/lib/pec/init.rb +6 -15
- data/lib/pec/sample.rb +4 -1
- data/lib/pec/version.rb +1 -1
- data/pec.gemspec +1 -2
- metadata +6 -21
- data/lib/pec/director.rb +0 -111
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bf28083dd8187e302dd251c338c800cefaffe4d9
         | 
| 4 | 
            +
              data.tar.gz: bbb7ff389e5c5be0a97f8afbeb203681e26f6bd7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 662c961455e89a1f2869f9e678c522806d2751866908f26b5efc154d214ee7ab957276697dee475fe5a90c791428c79be81c6628002da09f9ab4a0a9206a6b99
         | 
| 7 | 
            +
              data.tar.gz: 52ae51ea07c15324bb20ec7fa4e428941464feda24ceb740442fd18fd182ea25a881270b8f78bbe645cb1abcc8ea1ba8cc6a83d1e28e6a457ff8b8e98eae997d
         | 
    
        data/README.md
    CHANGED
    
    | @@ -39,7 +39,8 @@ pyama-test001: | |
| 39 39 | 
             
              networks:
         | 
| 40 40 | 
             
                eth0:
         | 
| 41 41 | 
             
                  bootproto: static
         | 
| 42 | 
            -
                  allowed_address_pairs: | 
| 42 | 
            +
                  allowed_address_pairs:
         | 
| 43 | 
            +
                  - 10.1.1.5/24
         | 
| 43 44 | 
             
                  ip_address: 10.1.1.1/24
         | 
| 44 45 | 
             
                  gateway: 10.1.1.254
         | 
| 45 46 | 
             
                  dns1: 8.8.8.8
         | 
| @@ -83,7 +84,7 @@ pyama-test002: | |
| 83 84 | 
             
            | bootproto             |    ○    | static or dhcp                                             |
         | 
| 84 85 | 
             
            | ip_address            |    ※    | 10.1.1.1/24                                                |
         | 
| 85 86 | 
             
            | path                  |         | default:/etc/sysconfig/network-scripts/ifcfg-[device_name] |
         | 
| 86 | 
            -
            | allowed_address_pairs |         | 10.1.1.2/24 | 
| 87 | 
            +
            | allowed_address_pairs |         | [10.1.1.2/24]                                              |
         | 
| 87 88 |  | 
| 88 89 | 
             
            ※ bootproto=static is required
         | 
| 89 90 | 
             
            Items other than the above are output to the configuration file with `KEY = value` format
         | 
    
        data/lib/pec.rb
    CHANGED
    
    | @@ -1,35 +1,28 @@ | |
| 1 | 
            -
            require ' | 
| 1 | 
            +
            require 'pp'
         | 
| 2 | 
            +
            require 'base64'
         | 
| 3 | 
            +
            require 'yao'
         | 
| 4 | 
            +
            require 'yaml'
         | 
| 5 | 
            +
            require 'thor'
         | 
| 2 6 | 
             
            require 'ip'
         | 
| 3 7 | 
             
            require 'colorator'
         | 
| 4 8 | 
             
            require "pec/version"
         | 
| 5 9 | 
             
            require "pec/logger"
         | 
| 6 10 | 
             
            require "pec/configure"
         | 
| 7 | 
            -
            require "pec/director"
         | 
| 8 11 | 
             
            require "pec/handler"
         | 
| 9 12 | 
             
            require "pec/sample"
         | 
| 10 13 | 
             
            require "pec/init"
         | 
| 11 14 | 
             
            require "pec/cli"
         | 
| 12 15 |  | 
| 16 | 
            +
             | 
| 13 17 | 
             
            module Pec
         | 
| 14 | 
            -
              def self. | 
| 15 | 
            -
                 | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
                @_neutron ||= Fog::Network.new({
         | 
| 23 | 
            -
                  provider: 'openstack'
         | 
| 24 | 
            -
                })
         | 
| 25 | 
            -
                @_neutron
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
              
         | 
| 28 | 
            -
              def self.identity
         | 
| 29 | 
            -
                @_identity ||= Fog::Identity.new({
         | 
| 30 | 
            -
                  provider: 'openstack'
         | 
| 31 | 
            -
                })
         | 
| 32 | 
            -
                @_identity
         | 
| 18 | 
            +
              def self.init_yao(_tenant_name=nil)
         | 
| 19 | 
            +
                check_env
         | 
| 20 | 
            +
                Yao.configure do
         | 
| 21 | 
            +
                  auth_url "#{ENV["OS_AUTH_URL"]}/tokens"
         | 
| 22 | 
            +
                  username ENV["OS_USERNAME"]
         | 
| 23 | 
            +
                  password ENV["OS_PASSWORD"]
         | 
| 24 | 
            +
                  tenant_name _tenant_name || ENV["OS_TENANT_NAME"]
         | 
| 25 | 
            +
                end
         | 
| 33 26 | 
             
              end
         | 
| 34 27 |  | 
| 35 28 | 
             
              def self.load_config(file_name=nil)
         | 
| @@ -44,10 +37,20 @@ module Pec | |
| 44 37 | 
             
                load_config unless @_configure
         | 
| 45 38 | 
             
                @_configure
         | 
| 46 39 | 
             
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def self.check_env
         | 
| 42 | 
            +
                %w(
         | 
| 43 | 
            +
                  OS_AUTH_URL
         | 
| 44 | 
            +
                  OS_USERNAME
         | 
| 45 | 
            +
                  OS_PASSWORD
         | 
| 46 | 
            +
                ).each do |name|
         | 
| 47 | 
            +
                  raise "please set env #{name}" unless ENV[name]
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 47 51 | 
             
            end
         | 
| 48 52 |  | 
| 49 53 | 
             
            class ::Hash
         | 
| 50 | 
            -
             | 
| 51 54 | 
             
              def deep_merge(second)
         | 
| 52 55 | 
             
                merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2 }
         | 
| 53 56 | 
             
                self.merge(second.to_h, &merger)
         | 
| @@ -57,3 +60,4 @@ class ::Hash | |
| 57 60 | 
             
                self.merge!(deep_merge(second))
         | 
| 58 61 | 
             
              end
         | 
| 59 62 | 
             
            end
         | 
| 63 | 
            +
             | 
    
        data/lib/pec/cli.rb
    CHANGED
    
    | @@ -1,30 +1,105 @@ | |
| 1 1 | 
             
            require 'pec'
         | 
| 2 | 
            -
            require 'thor'
         | 
| 3 2 | 
             
            module Pec
         | 
| 4 3 | 
             
              class CLI < Thor
         | 
| 5 4 |  | 
| 6 5 | 
             
                desc 'init', 'create sample config'
         | 
| 7 6 | 
             
                def init
         | 
| 8 | 
            -
                  Pec::Init. | 
| 7 | 
            +
                  Pec::Init.show_env_setting
         | 
| 9 8 | 
             
                  Pec::Init.create_template_dir
         | 
| 10 9 | 
             
                  Pec::Init.create_sample_config
         | 
| 11 10 | 
             
                end
         | 
| 12 11 |  | 
| 13 12 | 
             
                desc 'up', 'create vm by Pec.yaml'
         | 
| 14 13 | 
             
                def up(host_name = nil)
         | 
| 15 | 
            -
                  Pec | 
| 14 | 
            +
                  Pec.configure.each do |host|
         | 
| 15 | 
            +
                    next if host_name && host.name != host_name
         | 
| 16 | 
            +
                    Pec.init_yao(host.tenant)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    server = Yao::Server.list_detail.find {|s|s.name == host.name}
         | 
| 19 | 
            +
                    if server
         | 
| 20 | 
            +
                      Pec::Logger.notice "already exists: #{host.name}"
         | 
| 21 | 
            +
                      next
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                    Pec::Logger.info "make start #{host.name}"
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    attribute = { name: host.name}
         | 
| 26 | 
            +
                    host.keys.each do |k|
         | 
| 27 | 
            +
                      Pec::Handler.constants.each do |c|
         | 
| 28 | 
            +
                        if Object.const_get("Pec::Handler::#{c}").kind == k
         | 
| 29 | 
            +
                          attribute.deep_merge!(Object.const_get("Pec::Handler::#{c}").build(host))
         | 
| 30 | 
            +
                        end
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                    p 1
         | 
| 34 | 
            +
                    attribute[:user_data] = Base64.encode64("#cloud-config\n" + attribute[:user_data].to_yaml) if attribute[:user_data]
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    Yao::Server.create(attribute)
         | 
| 37 | 
            +
                    Pec::Logger.info "create success! #{host.name}"
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                  rescue => e
         | 
| 40 | 
            +
                    print_exception(e)
         | 
| 16 41 | 
             
                end
         | 
| 17 42 |  | 
| 18 43 | 
             
                option :force , type: :boolean, aliases: "-f"
         | 
| 19 44 | 
             
                desc "destroy", "delete vm"
         | 
| 20 45 | 
             
                def destroy(host_name = nil)
         | 
| 21 | 
            -
                  Pec | 
| 46 | 
            +
                  Pec.configure.each do |host|
         | 
| 47 | 
            +
                    next if host_name && host.name != host_name
         | 
| 48 | 
            +
                    Pec.init_yao(host.tenant)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    server = Yao::Server.list_detail.find {|s|s.name == host.name}
         | 
| 51 | 
            +
                    unless server
         | 
| 52 | 
            +
                      Pec::Logger.notice "not be created #{host.name}"
         | 
| 53 | 
            +
                      next
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    if options[:force] || yes?("#{host.name}: Are you sure you want to destroy the '#{host.name}' VM? [y/N]")
         | 
| 57 | 
            +
                      Yao::Server.destroy(server.id)
         | 
| 58 | 
            +
                      Pec::Logger.info "#{host.name} is deleted!"
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  rescue => e
         | 
| 63 | 
            +
                    print_exception(e)
         | 
| 22 64 | 
             
                end
         | 
| 23 65 |  | 
| 24 66 | 
             
                desc "status", "vm status"
         | 
| 25 67 | 
             
                def status(host_name = nil)
         | 
| 26 68 | 
             
                  say("Current machine stasus:", :yellow)
         | 
| 27 | 
            -
                  Pec | 
| 69 | 
            +
                  Pec.configure.each do |host|
         | 
| 70 | 
            +
                    next if host_name && host.name != host_name
         | 
| 71 | 
            +
                    Pec.init_yao(host.tenant)
         | 
| 72 | 
            +
                    if server = Yao::Server.list_detail.find {|s|s.name == host.name}
         | 
| 73 | 
            +
                      puts sprintf(" %-35s %-10s %-10s %-10s %-10s %-35s %-48s",
         | 
| 74 | 
            +
                        host.name,
         | 
| 75 | 
            +
                        server.status,
         | 
| 76 | 
            +
                        Yao::Tenant.list.find {|tenant| tenant.id == server.tenant_id}.name,
         | 
| 77 | 
            +
                        Yao::Flavor.get(server.flavor['id']).name,
         | 
| 78 | 
            +
                        server.availability_zone,
         | 
| 79 | 
            +
                        server.ext_srv_attr_host,
         | 
| 80 | 
            +
                        server.addresses.map do |ethers|
         | 
| 81 | 
            +
                          ethers[1].map do |ether|
         | 
| 82 | 
            +
                            ether["addr"]
         | 
| 83 | 
            +
                          end
         | 
| 84 | 
            +
                        end.flatten.join(",")
         | 
| 85 | 
            +
                      )
         | 
| 86 | 
            +
                    else
         | 
| 87 | 
            +
                      puts sprintf(" %-35s %-10s",
         | 
| 88 | 
            +
                        host.name,
         | 
| 89 | 
            +
                        "uncreated"
         | 
| 90 | 
            +
                      )
         | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
                  end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  rescue => e
         | 
| 95 | 
            +
                    print_exception(e)
         | 
| 96 | 
            +
                end
         | 
| 97 | 
            +
                no_commands do
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                  def print_exception(e)
         | 
| 100 | 
            +
                    Pec::Logger.critical(e)
         | 
| 101 | 
            +
                    Pec::Logger.info("\t" + e.backtrace.join("\n\t"))
         | 
| 102 | 
            +
                  end
         | 
| 28 103 | 
             
                end
         | 
| 29 104 | 
             
              end
         | 
| 30 105 | 
             
            end
         | 
    
        data/lib/pec/configure.rb
    CHANGED
    
    
    
        data/lib/pec/handler/base.rb
    CHANGED
    
    | @@ -2,14 +2,8 @@ module Pec::Handler | |
| 2 2 | 
             
              class Base
         | 
| 3 3 | 
             
                class << self
         | 
| 4 4 | 
             
                  attr_accessor :kind
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
                    define_method("fetch_#{name}", -> (host) {
         | 
| 8 | 
            -
                      unless resource = Pec.compute.send("#{name}s").find {|val|val.name == host.send(name)}
         | 
| 9 | 
            -
                        raise "not fond #{name} #{host.send(name)}"
         | 
| 10 | 
            -
                      end
         | 
| 11 | 
            -
                      resource
         | 
| 12 | 
            -
                    })
         | 
| 5 | 
            +
                  def build
         | 
| 6 | 
            +
                    raise "not defined method"
         | 
| 13 7 | 
             
                  end
         | 
| 14 8 | 
             
                end
         | 
| 15 9 | 
             
              end
         | 
    
        data/lib/pec/handler/flavor.rb
    CHANGED
    
    
    
        data/lib/pec/handler/image.rb
    CHANGED
    
    
    
        data/lib/pec/handler/networks.rb
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            module Pec::Handler
         | 
| 2 | 
            -
              class Networks < Base | 
| 2 | 
            +
              class Networks < Base
         | 
| 3 3 | 
             
                self.kind = 'networks'
         | 
| 4 4 | 
             
                autoload :OptionBase,          "pec/handler/networks/option_base"
         | 
| 5 5 | 
             
                autoload :IpAddress,           "pec/handler/networks/ip_address"
         | 
| 6 6 | 
             
                autoload :AllowedAddressPairs, "pec/handler/networks/allowed_address_pairs"
         | 
| 7 | 
            -
             | 
| 7 | 
            +
             | 
| 8 8 | 
             
                class << self
         | 
| 9 9 | 
             
                  NAME = 0
         | 
| 10 10 | 
             
                  CONFIG = 1
         | 
| @@ -22,7 +22,7 @@ module Pec::Handler | |
| 22 22 | 
             
                      user_data << gen_user_data(network, port)
         | 
| 23 23 | 
             
                    end
         | 
| 24 24 | 
             
                    {
         | 
| 25 | 
            -
                       | 
| 25 | 
            +
                      networks: ports.map {|port| { uuid: nil, port: port.id }},
         | 
| 26 26 | 
             
                      user_data: {
         | 
| 27 27 | 
             
                        'write_files' => user_data
         | 
| 28 28 | 
             
                      }
         | 
| @@ -40,17 +40,17 @@ module Pec::Handler | |
| 40 40 |  | 
| 41 41 | 
             
                  def create_port(host, network)
         | 
| 42 42 | 
             
                    attribute = gen_port_attribute(host, network)
         | 
| 43 | 
            -
                     | 
| 43 | 
            +
                    Yao::Port.create(attribute)
         | 
| 44 44 | 
             
                  end
         | 
| 45 | 
            -
             | 
| 45 | 
            +
             | 
| 46 46 | 
             
                  def gen_port_attribute(host, network)
         | 
| 47 47 | 
             
                    ip = IP.new(network[CONFIG]['ip_address'])
         | 
| 48 | 
            -
                    subnet =  | 
| 48 | 
            +
                    subnet = Yao::Subnet.list.find {|s|s.cidr == ip.network.to_s}
         | 
| 49 49 | 
             
                    attribute = {
         | 
| 50 50 | 
             
                      name: network[NAME],
         | 
| 51 51 | 
             
                      network_id: subnet.network_id
         | 
| 52 52 | 
             
                    }
         | 
| 53 | 
            -
             | 
| 53 | 
            +
             | 
| 54 54 | 
             
                    attribute.merge!(
         | 
| 55 55 | 
             
                      security_group(host)
         | 
| 56 56 | 
             
                    ) if host.security_group
         | 
| @@ -66,7 +66,7 @@ module Pec::Handler | |
| 66 66 |  | 
| 67 67 | 
             
                    attribute
         | 
| 68 68 | 
             
                  end
         | 
| 69 | 
            -
             | 
| 69 | 
            +
             | 
| 70 70 | 
             
                  def gen_user_data(network, port)
         | 
| 71 71 | 
             
                    path = network[CONFIG]['path'] || "/etc/sysconfig/network-scripts/ifcfg-#{port.name}"
         | 
| 72 72 | 
             
                    {
         | 
| @@ -76,7 +76,7 @@ module Pec::Handler | |
| 76 76 | 
             
                      'permissions' => "0644"
         | 
| 77 77 | 
             
                    }
         | 
| 78 78 | 
             
                  end
         | 
| 79 | 
            -
             | 
| 79 | 
            +
             | 
| 80 80 | 
             
                  def ifcfg_config(network, port)
         | 
| 81 81 | 
             
                    base = {
         | 
| 82 82 | 
             
                      "name"      => port.name,
         | 
| @@ -95,7 +95,7 @@ module Pec::Handler | |
| 95 95 | 
             
                    # delete option column
         | 
| 96 96 | 
             
                    Pec::Handler::Networks.constants.each do |c|
         | 
| 97 97 | 
             
                      network[CONFIG].delete(Object.const_get("Pec::Handler::Networks::#{c}").kind)
         | 
| 98 | 
            -
                    end | 
| 98 | 
            +
                    end
         | 
| 99 99 |  | 
| 100 100 | 
             
                    base.merge!(
         | 
| 101 101 | 
             
                      network[CONFIG]
         | 
| @@ -105,7 +105,9 @@ module Pec::Handler | |
| 105 105 |  | 
| 106 106 | 
             
                  def security_group(host)
         | 
| 107 107 | 
             
                    ids = host.security_group.map do |name|
         | 
| 108 | 
            -
                       | 
| 108 | 
            +
                      sg = Yao::SecurityGroup.list.find {|sg| sg.name == name}
         | 
| 109 | 
            +
                      raise "security group #{name} is not found" unless sg
         | 
| 110 | 
            +
                      sg.id
         | 
| 109 111 | 
             
                    end
         | 
| 110 112 | 
             
                    { security_groups: ids }
         | 
| 111 113 | 
             
                  end
         | 
| @@ -5,10 +5,10 @@ module Pec::Handler | |
| 5 5 | 
             
                  class << self
         | 
| 6 6 | 
             
                    def build(network)
         | 
| 7 7 | 
             
                      ip = IP.new(network[1]['ip_address'])
         | 
| 8 | 
            -
                      subnet =  | 
| 8 | 
            +
                      subnet = Yao::Subnet.list.find {|s|s.cidr == ip.network.to_s}
         | 
| 9 9 |  | 
| 10 10 | 
             
                      if ip.to_s != subnet.cidr
         | 
| 11 | 
            -
                        { | 
| 11 | 
            +
                        {
         | 
| 12 12 | 
             
                          fixed_ips: [
         | 
| 13 13 | 
             
                            { subnet_id: subnet.id, ip_address: ip.to_addr}
         | 
| 14 14 | 
             
                          ]
         | 
    
        data/lib/pec/init.rb
    CHANGED
    
    | @@ -21,21 +21,12 @@ module Pec | |
| 21 21 | 
             
                    end
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 |  | 
| 24 | 
            -
                  def  | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
                       | 
| 28 | 
            -
                       | 
| 29 | 
            -
             | 
| 30 | 
            -
                      params = %w(auth_url username api_key tenant).inject({}) do |user_input, c|
         | 
| 31 | 
            -
                        user_input["openstack_#{c}"] = thor.ask("openstack #{c}:")
         | 
| 32 | 
            -
                        user_input
         | 
| 33 | 
            -
                      end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                      thor.say("Configure Complete!", :blue) if open(File.expand_path("~/.fog"), "w") do |e|
         | 
| 36 | 
            -
                        YAML.dump({ "default" => params }, e)
         | 
| 37 | 
            -
                      end
         | 
| 38 | 
            -
                    end
         | 
| 24 | 
            +
                  def show_env_setting
         | 
| 25 | 
            +
                      thor = Thor.new
         | 
| 26 | 
            +
                      thor.say("please set env this paramater", :yellow)
         | 
| 27 | 
            +
                      puts " export OS_AUTH_URL=http://your_keystone_server:port/v2.0"
         | 
| 28 | 
            +
                      puts " export OS_USERNAME=your name"
         | 
| 29 | 
            +
                      puts " export OS_PASSWORD=your password"
         | 
| 39 30 | 
             
                  end
         | 
| 40 31 | 
             
                end
         | 
| 41 32 | 
             
              end
         | 
    
        data/lib/pec/sample.rb
    CHANGED
    
    | @@ -8,10 +8,12 @@ module Pec | |
| 8 8 | 
             
                          "tenant" =>  "your_tenant",
         | 
| 9 9 | 
             
                          "image" =>  "centos-7",
         | 
| 10 10 | 
             
                          "flavor" =>  "m1.small",
         | 
| 11 | 
            +
                          "allowed_address_pairs" => "nova",
         | 
| 11 12 | 
             
                          "networks" => {
         | 
| 12 13 | 
             
                            "eth0" => {
         | 
| 13 14 | 
             
                              "bootproto" => "static",
         | 
| 14 15 | 
             
                              "ip_address" => "10.0.0.0/24",
         | 
| 16 | 
            +
                              "allowed_address_pairs" => ["10.0.0.1"],
         | 
| 15 17 | 
             
                              "gateway" =>  "10.0.0.254",
         | 
| 16 18 | 
             
                              "dns1" => "10.0.0.10"
         | 
| 17 19 | 
             
                            },
         | 
| @@ -24,7 +26,7 @@ module Pec | |
| 24 26 | 
             
                          },
         | 
| 25 27 | 
             
                          "security_group" => [
         | 
| 26 28 | 
             
                            "default",
         | 
| 27 | 
            -
                            " | 
| 29 | 
            +
                            "www_from_any"
         | 
| 28 30 | 
             
                          ],
         | 
| 29 31 | 
             
                          "templates" => [
         | 
| 30 32 | 
             
                            "web_server.yaml"
         | 
| @@ -36,6 +38,7 @@ module Pec | |
| 36 38 | 
             
                        }
         | 
| 37 39 | 
             
                      }
         | 
| 38 40 | 
             
                    end
         | 
| 41 | 
            +
             | 
| 39 42 | 
             
                    def user_data
         | 
| 40 43 | 
             
                      {
         | 
| 41 44 | 
             
                        "hostname" => "pec",
         | 
    
        data/lib/pec/version.rb
    CHANGED
    
    
    
        data/pec.gemspec
    CHANGED
    
    | @@ -18,9 +18,8 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 | 
             
              spec.add_dependency 'thor', '~> 0.19.1'
         | 
| 21 | 
            -
              spec.add_dependency ' | 
| 21 | 
            +
              spec.add_dependency 'yao', '>= 0.0.2'
         | 
| 22 22 | 
             
              spec.add_dependency 'ruby-ip', '~> 0.9.3'
         | 
| 23 | 
            -
              spec.add_dependency 'activesupport', '~> 4.2.1'
         | 
| 24 23 | 
             
              spec.add_dependency 'colorator', '~> 0.1'
         | 
| 25 24 | 
             
              spec.add_development_dependency "bundler"
         | 
| 26 25 | 
             
              spec.add_development_dependency "rspec"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pec
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - kazuhiko yamashita
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-09- | 
| 11 | 
            +
            date: 2015-09-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: thor
         | 
| @@ -25,19 +25,19 @@ dependencies: | |
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: 0.19.1
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: yao
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 0.0.2
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 0.0.2
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: ruby-ip
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -52,20 +52,6 @@ dependencies: | |
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: 0.9.3
         | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: activesupport
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: 4.2.1
         | 
| 62 | 
            -
              type: :runtime
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - "~>"
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: 4.2.1
         | 
| 69 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 56 | 
             
              name: colorator
         | 
| 71 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -145,7 +131,6 @@ files: | |
| 145 131 | 
             
            - lib/pec.rb
         | 
| 146 132 | 
             
            - lib/pec/cli.rb
         | 
| 147 133 | 
             
            - lib/pec/configure.rb
         | 
| 148 | 
            -
            - lib/pec/director.rb
         | 
| 149 134 | 
             
            - lib/pec/handler.rb
         | 
| 150 135 | 
             
            - lib/pec/handler/availability_zone.rb
         | 
| 151 136 | 
             
            - lib/pec/handler/base.rb
         | 
| @@ -182,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 182 167 | 
             
                  version: '0'
         | 
| 183 168 | 
             
            requirements: []
         | 
| 184 169 | 
             
            rubyforge_project: 
         | 
| 185 | 
            -
            rubygems_version: 2. | 
| 170 | 
            +
            rubygems_version: 2.2.2
         | 
| 186 171 | 
             
            signing_key: 
         | 
| 187 172 | 
             
            specification_version: 4
         | 
| 188 173 | 
             
            summary: openstack vm booter.
         | 
    
        data/lib/pec/director.rb
    DELETED
    
    | @@ -1,111 +0,0 @@ | |
| 1 | 
            -
            module Pec
         | 
| 2 | 
            -
              class Director
         | 
| 3 | 
            -
                def self.make(host_name)
         | 
| 4 | 
            -
                  Pec.configure.each do |host|
         | 
| 5 | 
            -
                    next if host_name && host.name != host_name
         | 
| 6 | 
            -
                    Pec::Logger.info "make start #{host.name}"
         | 
| 7 | 
            -
                    Pec.compute.set_tenant(host.tenant)
         | 
| 8 | 
            -
                    Pec.neutron.set_tenant_patch(host.tenant)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                    attribute = { name: host.name}
         | 
| 11 | 
            -
                    host.keys.each do |k|
         | 
| 12 | 
            -
                      Pec::Handler.constants.each do |c|
         | 
| 13 | 
            -
                        if Object.const_get("Pec::Handler::#{c}").kind == k
         | 
| 14 | 
            -
                          attribute.deep_merge!(Object.const_get("Pec::Handler::#{c}").build(host))
         | 
| 15 | 
            -
                        end
         | 
| 16 | 
            -
                      end
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
                    
         | 
| 19 | 
            -
                    attribute[:user_data] = "#cloud-config\n" + attribute[:user_data].to_yaml if attribute[:user_data]
         | 
| 20 | 
            -
                    Pec::Logger.info "create success! #{host.name}" if Pec.compute.servers.create(attribute)
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  rescue Excon::Errors::Error => e
         | 
| 24 | 
            -
                    excon_err_message(e)
         | 
| 25 | 
            -
                  rescue => e
         | 
| 26 | 
            -
                    Pec::Logger.critical(e)
         | 
| 27 | 
            -
                end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                def self.destroy(host_name, options)
         | 
| 30 | 
            -
                  Pec.configure.each do |host|
         | 
| 31 | 
            -
                    next if host_name && host.name != host_name
         | 
| 32 | 
            -
                    Pec.compute.set_tenant(host.tenant)
         | 
| 33 | 
            -
                    
         | 
| 34 | 
            -
                    server = Pec.compute.servers.find {|s|s.name == host.name}
         | 
| 35 | 
            -
                    unless server
         | 
| 36 | 
            -
                      Pec::Logger.notice "not be created #{host.name}"
         | 
| 37 | 
            -
                      next
         | 
| 38 | 
            -
                    end
         | 
| 39 | 
            -
                    
         | 
| 40 | 
            -
                    if options[:force] || Thor.new.yes?("#{host.name}: Are you sure you want to destroy the '#{host.name}' VM? [y/N]")
         | 
| 41 | 
            -
                      Pec::Logger.info "#{host.name} is deleted!" if Pec.compute.servers.destroy(server.id)
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  rescue Excon::Errors::Error => e
         | 
| 46 | 
            -
                    excon_err_message(e)
         | 
| 47 | 
            -
                  rescue => e
         | 
| 48 | 
            -
                    Pec::Logger.critical(e)
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def self.status(host_name)
         | 
| 52 | 
            -
                  Pec.configure.each do |host|
         | 
| 53 | 
            -
                    next if host_name && host.name != host_name
         | 
| 54 | 
            -
                    if server = Pec.compute.servers.find {|s|s.name == host.name}
         | 
| 55 | 
            -
                      puts sprintf(" %-35s %-10s %-10s %-10s %-10s %-35s %-48s",
         | 
| 56 | 
            -
                        host.name,
         | 
| 57 | 
            -
                        server.state,
         | 
| 58 | 
            -
                        Pec.identity.tenants.find_by_id(server.tenant_id),
         | 
| 59 | 
            -
                        Pec.compute.flavors.get(server.flavor['id']).name,
         | 
| 60 | 
            -
                        server.availability_zone,
         | 
| 61 | 
            -
                        server.os_ext_srv_attr_host,
         | 
| 62 | 
            -
                        server.addresses.map do |ethers|                                                                                                    
         | 
| 63 | 
            -
                          ethers[1].map do |ether|                                                                                                           
         | 
| 64 | 
            -
                            ether["addr"]                                                                                                                 
         | 
| 65 | 
            -
                          end                                                                                                                             
         | 
| 66 | 
            -
                        end.flatten.join(",")
         | 
| 67 | 
            -
                      )
         | 
| 68 | 
            -
                    else
         | 
| 69 | 
            -
                      puts sprintf(" %-35s %-10s",
         | 
| 70 | 
            -
                        host.name,
         | 
| 71 | 
            -
                        "uncreated"
         | 
| 72 | 
            -
                      )
         | 
| 73 | 
            -
                    end
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                  rescue Excon::Errors::Error => e
         | 
| 77 | 
            -
                    excon_err_message(e)
         | 
| 78 | 
            -
                  rescue => e
         | 
| 79 | 
            -
                    Pec::Logger.critical(e)
         | 
| 80 | 
            -
                end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                def self.excon_err_message(e)
         | 
| 83 | 
            -
                  if e.response
         | 
| 84 | 
            -
                    JSON.parse(e.response[:body]).each { |e,m| Pec::Logger.critical("#{e}:#{m["message"]}") }
         | 
| 85 | 
            -
                  else
         | 
| 86 | 
            -
                    Pec::Logger.critical(e)
         | 
| 87 | 
            -
                  end
         | 
| 88 | 
            -
                end
         | 
| 89 | 
            -
              end
         | 
| 90 | 
            -
            end
         | 
| 91 | 
            -
             | 
| 92 | 
            -
            module Fog
         | 
| 93 | 
            -
              module Network
         | 
| 94 | 
            -
                class OpenStack
         | 
| 95 | 
            -
                  class Real
         | 
| 96 | 
            -
                    def set_tenant_patch(tenant)
         | 
| 97 | 
            -
                      @openstack_must_reauthenticate = true
         | 
| 98 | 
            -
                      @openstack_tenant = tenant.to_s
         | 
| 99 | 
            -
                      authenticate
         | 
| 100 | 
            -
                      @path.sub!(/\/$/, '')
         | 
| 101 | 
            -
                      unless @path.match(SUPPORTED_VERSIONS)
         | 
| 102 | 
            -
                        @path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
         | 
| 103 | 
            -
                                                                           @openstack_management_uri,
         | 
| 104 | 
            -
                                                                           @auth_token,
         | 
| 105 | 
            -
                                                                           @connection_options)
         | 
| 106 | 
            -
                      end
         | 
| 107 | 
            -
                    end
         | 
| 108 | 
            -
                  end
         | 
| 109 | 
            -
                end
         | 
| 110 | 
            -
              end
         | 
| 111 | 
            -
            end
         |