pec 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39403ae482bef2606f9eac2fba8477c61772ed43
4
- data.tar.gz: 81ae4ef40939d3b775def68c2892869246931cd8
3
+ metadata.gz: bff0038d6e2313f1e3b8b039dfae6a5c07766c7f
4
+ data.tar.gz: cc9ebdecf5f4d785c8bcbe296ee3b94c022201e4
5
5
  SHA512:
6
- metadata.gz: 541e589d51496de9be957b031a78f0d9c62d794374e50ee39682d044e71ae738ebd40527f8175df65709fe0f0e68babc77ce50e83827374cf3e80fef1eefe291
7
- data.tar.gz: c4aa962da6abe6d2a4d8cbba8b0c553dcfb2d6827bf3fb987b436e75118f667f0201563f3b89ada115ad15e5350b04c01623603c9a7f971dec710580ef7cbec6
6
+ metadata.gz: 9250a610cd7bc60cdf757b4ff067f78640b8954eba8d746de3ad36b18457770cadb86199099f6c017c7e207a611a6199faa129ea7579144b611a2e94a78ec5d1
7
+ data.tar.gz: 78dfab706b07339bbcc385593127141c2084af477233d9ca448c8c39aada1e9f349a660f2749d153b25ceca54e914aa4f22c79faa8345366838250ee83141102
data/exe/pec CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require "pec"
2
+ require 'pec'
3
+ Pec::CLI.start
data/lib/pec/cli.rb CHANGED
@@ -4,100 +4,28 @@ module Pec
4
4
 
5
5
  desc 'init', 'create sample config'
6
6
  def init
7
- Pec::Init.show_env_setting
8
- Pec::Init.create_template_dir
9
- Pec::Init.create_sample_config
7
+ _sub_command(host_name, options)
10
8
  end
11
9
 
12
10
  desc 'up', 'create vm by Pec.yaml'
13
11
  def up(host_name = nil)
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
- attribute[:user_data] = Base64.encode64("#cloud-config\n" + attribute[:user_data].to_yaml) if attribute[:user_data]
34
-
35
- Yao::Server.create(attribute)
36
- Pec::Logger.info "create success! #{host.name}"
37
- end
38
- rescue => e
39
- print_exception(e)
12
+ _sub_command(host_name, options)
40
13
  end
41
14
 
42
15
  option :force , type: :boolean, aliases: "-f"
43
16
  desc "destroy", "delete vm"
44
17
  def destroy(host_name = nil)
45
- Pec.configure.each do |host|
46
- next if host_name && host.name != host_name
47
- Pec.init_yao(host.tenant)
48
-
49
- server = Yao::Server.list_detail.find {|s|s.name == host.name}
50
- unless server
51
- Pec::Logger.notice "not be created #{host.name}"
52
- next
53
- end
54
-
55
- if options[:force] || yes?("#{host.name}: Are you sure you want to destroy the '#{host.name}' VM? [y/N]")
56
- Yao::Server.destroy(server.id)
57
- Pec::Logger.info "#{host.name} is deleted!"
58
- end
59
- end
60
-
61
- rescue => e
62
- print_exception(e)
18
+ _sub_command(host_name, options)
63
19
  end
64
20
 
65
21
  desc "status", "vm status"
66
22
  def status(host_name = nil)
67
- say("Current machine stasus:", :yellow)
68
- Pec.configure.each do |host|
69
- next if host_name && host.name != host_name
70
- Pec.init_yao(host.tenant)
71
- if server = Yao::Server.list_detail.find {|s|s.name == host.name}
72
- puts sprintf(" %-35s %-10s %-10s %-10s %-10s %-35s %-48s",
73
- host.name,
74
- server.status,
75
- Yao::Tenant.list.find {|tenant| tenant.id == server.tenant_id}.name,
76
- Yao::Flavor.get(server.flavor['id']).name,
77
- server.availability_zone,
78
- server.ext_srv_attr_host,
79
- server.addresses.map do |ethers|
80
- ethers[1].map do |ether|
81
- ether["addr"]
82
- end
83
- end.flatten.join(",")
84
- )
85
- else
86
- puts sprintf(" %-35s %-10s",
87
- host.name,
88
- "uncreated"
89
- )
90
- end
91
- end
92
- rescue => e
93
- print_exception(e)
23
+ _sub_command(host_name, options)
94
24
  end
95
25
 
96
26
  desc "config", "show configure"
97
27
  def config
98
- puts YAML.dump(
99
- YAML.load_file("Pec.yaml").to_hash.reject {|c| c[0].to_s.match(/^_/)}
100
- )
28
+ _sub_command(host_name, options)
101
29
  end
102
30
 
103
31
  map %w[--version -v] => :__print_version
@@ -106,12 +34,9 @@ module Pec
106
34
  puts Pec::VERSION
107
35
  end
108
36
 
109
-
110
37
  no_commands do
111
-
112
- def print_exception(e)
113
- Pec::Logger.critical(e)
114
- Pec::Logger.info("\t" + e.backtrace.join("\n\t"))
38
+ def _sub_command(host_name, options)
39
+ Object.const_get("Pec::Command::#{caller[0][/`([^']*)'/, 1].capitalize}").run(host_name, options)
115
40
  end
116
41
  end
117
42
  end
@@ -0,0 +1,18 @@
1
+ module Pec::Command
2
+ class Base
3
+ def self.run(host_name, options)
4
+ Pec.servers(host_name) do |server,config|
5
+ task(host_name, options, server, config)
6
+ end
7
+ rescue => e
8
+ print_exception(e)
9
+ end
10
+
11
+ def self.print_exception(e)
12
+ Pec::Logger.critical(e)
13
+ Pec::Logger.info("\t" + e.backtrace.join("\n\t"))
14
+ end
15
+
16
+ def self.task(host_name, options, server, config); end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ module Pec::Command
2
+ class Config < Base
3
+ def self.run(host_name, options)
4
+ puts YAML.dump(
5
+ YAML.load_file("Pec.yaml").to_hash.reject {|c| c[0].to_s.match(/^_/)}
6
+ )
7
+ rescue => e
8
+ print_exception(e)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Pec::Command
2
+ class Destroy < Base
3
+ def self.task(host_name, options, server, config)
4
+ unless server
5
+ Pec::Logger.notice "not be created #{config.name}"
6
+ else
7
+ if options[:force] || Thor.new.yes?("#{config.name}: Are you sure you want to destroy the '#{config.name}' VM? [y/N]")
8
+ Yao::Server.destroy(server.id)
9
+ Pec::Logger.info "#{config.name} is deleted!"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module Pec::Command
2
+ class Init < Base
3
+ def self.run(host_name, options)
4
+ Pec::Init.show_env_setting
5
+ Pec::Init.create_template_dir
6
+ Pec::Init.create_sample_config
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,40 @@
1
+ module Pec::Command
2
+ class Status < Base
3
+ def self.task(host_name, options, server, config)
4
+ Thor.new.say("Current machine stasus:", :yellow)
5
+ if server
6
+ puts sprintf(
7
+ " %-35s %-10s %-10s %-10s %-10s %-35s %-48s",
8
+ config.name,
9
+ server.status,
10
+ tenant_name(server),
11
+ flavor_name(server),
12
+ server.availability_zone,
13
+ server.ext_srv_attr_host,
14
+ ip_addresses(server)
15
+ )
16
+ else
17
+ puts sprintf(" %-35s %-10s",
18
+ config.name,
19
+ "uncreated"
20
+ )
21
+ end
22
+ end
23
+
24
+ def self.tenant_name(server)
25
+ Yao::Tenant.list.find {|tenant| tenant.id == server.tenant_id}.name
26
+ end
27
+
28
+ def self.flavor_name(server)
29
+ Yao::Flavor.get(server.flavor['id']).name
30
+ end
31
+
32
+ def self.ip_addresses(server)
33
+ server.addresses.map do |ethers|
34
+ ethers[1].map do |ether|
35
+ ether["addr"]
36
+ end
37
+ end.flatten.join(",")
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,24 @@
1
+ module Pec::Command
2
+ class Up < Base
3
+ def self.task(host_name, options, server, config)
4
+ unless server
5
+ Pec::Logger.info "make start #{config.name}"
6
+
7
+ attribute = {name: config.name}
8
+ config.keys.each do |k|
9
+ Pec::Handler.constants.each do |c|
10
+ _handler = Object.const_get("Pec::Handler::#{c}")
11
+ attribute.deep_merge!(_handler.build(config)) if _handler.kind == k
12
+ end
13
+ end
14
+
15
+ attribute[:user_data] = Base64.encode64("#cloud-config\n" + attribute[:user_data].to_yaml) if attribute[:user_data]
16
+
17
+ Yao::Server.create(attribute)
18
+ Pec::Logger.info "create success! #{config.name}"
19
+ else
20
+ Pec::Logger.notice "already server: #{config.name}"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ module Pec
2
+ module Command
3
+ autoload :Base, "pec/command/base"
4
+ autoload :Up, "pec/command/up"
5
+ autoload :Destroy, "pec/command/destroy"
6
+ autoload :Status, "pec/command/status"
7
+ autoload :Config, "pec/command/config"
8
+ autoload :Init, "pec/command/init"
9
+ end
10
+ end
@@ -0,0 +1,2 @@
1
+ class Pec::ConfigError < StandardError
2
+ end
data/lib/pec/configure.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "pec/config_error"
2
+
1
3
  module Pec
2
4
  class Configure
3
5
  def initialize(config)
@@ -0,0 +1,19 @@
1
+ module Pec::Handler
2
+ class Keypair < Base
3
+ self.kind = 'keypair'
4
+
5
+ def self.build(host)
6
+ return({}) unless host.keypair
7
+
8
+ Pec::Logger.notice "keypair is #{host.keypair}"
9
+ keypair = Yao::Keypair.list.find {|k| k.name == host.keypair }
10
+ if keypair
11
+ {
12
+ key_name: keypair.name,
13
+ }
14
+ else
15
+ raise Pec::ConfigError, "keypair name=#{host.keypair} does not exist"
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/pec/handler.rb CHANGED
@@ -4,6 +4,7 @@ module Pec
4
4
  autoload :AvailabilityZone, "pec/handler/availability_zone"
5
5
  autoload :Image, "pec/handler/image"
6
6
  autoload :Flavor, "pec/handler/flavor"
7
+ autoload :Keypair, "pec/handler/keypair"
7
8
  autoload :Networks, "pec/handler/networks"
8
9
  autoload :UserData, "pec/handler/user_data"
9
10
  autoload :Templates, "pec/handler/templates"
data/lib/pec/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pec
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
data/lib/pec.rb CHANGED
@@ -9,6 +9,7 @@ require "pec/version"
9
9
  require "pec/logger"
10
10
  require "pec/configure"
11
11
  require "pec/handler"
12
+ require "pec/command"
12
13
  require "pec/sample"
13
14
  require "pec/init"
14
15
  require "pec/cli"
@@ -38,6 +39,15 @@ module Pec
38
39
  @_configure
39
40
  end
40
41
 
42
+ def self.servers(host_name)
43
+ self.configure.each do |host|
44
+ next if host_name && host.name != host_name
45
+ Pec.init_yao(host.tenant)
46
+ server = Yao::Server.list_detail.find {|s|s.name == host.name}
47
+ yield(server, host)
48
+ end
49
+ end
50
+
41
51
  def self.check_env
42
52
  %w(
43
53
  OS_AUTH_URL
@@ -47,7 +57,6 @@ module Pec
47
57
  raise "please set env #{name}" unless ENV[name]
48
58
  end
49
59
  end
50
-
51
60
  end
52
61
 
53
62
  class ::Hash
@@ -60,4 +69,3 @@ class ::Hash
60
69
  self.merge!(deep_merge(second))
61
70
  end
62
71
  end
63
-
data/pec.gemspec CHANGED
@@ -15,13 +15,14 @@ Gem::Specification.new do |spec|
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
  spec.add_dependency 'thor', '~> 0.19.1'
21
- spec.add_dependency 'yao', '>= 0.0.5'
21
+ spec.add_dependency 'yao', '~> 0.0.6'
22
22
  spec.add_dependency 'ruby-ip', '~> 0.9.3'
23
23
  spec.add_dependency 'colorator', '~> 0.1'
24
24
  spec.add_development_dependency "bundler"
25
- spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "rspec", ">= 3"
26
+ spec.add_development_dependency "rspec-mocks", ">= 3"
26
27
  spec.add_development_dependency "rake"
27
28
  end
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.7.0
4
+ version: 0.7.1
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-10-18 00:00:00.000000000 Z
11
+ date: 2015-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: yao
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.5
33
+ version: 0.0.6
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: 0.0.5
40
+ version: 0.0.6
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ruby-ip
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '3'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-mocks
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '3'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -112,9 +126,7 @@ description: openstack vm booter.
112
126
  email:
113
127
  - pyama@pepabo.com
114
128
  executables:
115
- - console
116
129
  - pec
117
- - setup
118
130
  extensions: []
119
131
  extra_rdoc_files: []
120
132
  files:
@@ -130,12 +142,21 @@ files:
130
142
  - exe/pec
131
143
  - lib/pec.rb
132
144
  - lib/pec/cli.rb
145
+ - lib/pec/command.rb
146
+ - lib/pec/command/base.rb
147
+ - lib/pec/command/config.rb
148
+ - lib/pec/command/destroy.rb
149
+ - lib/pec/command/init.rb
150
+ - lib/pec/command/status.rb
151
+ - lib/pec/command/up.rb
152
+ - lib/pec/config_error.rb
133
153
  - lib/pec/configure.rb
134
154
  - lib/pec/handler.rb
135
155
  - lib/pec/handler/availability_zone.rb
136
156
  - lib/pec/handler/base.rb
137
157
  - lib/pec/handler/flavor.rb
138
158
  - lib/pec/handler/image.rb
159
+ - lib/pec/handler/keypair.rb
139
160
  - lib/pec/handler/networks.rb
140
161
  - lib/pec/handler/networks/allowed_address_pairs.rb
141
162
  - lib/pec/handler/networks/ip_address.rb
@@ -167,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
188
  version: '0'
168
189
  requirements: []
169
190
  rubyforge_project:
170
- rubygems_version: 2.4.6
191
+ rubygems_version: 2.2.2
171
192
  signing_key:
172
193
  specification_version: 4
173
194
  summary: openstack vm booter.