pec 0.2.6 → 0.2.7
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/Rakefile +2 -1
- data/lib/pec.rb +1 -0
- data/lib/pec/compute/server.rb +5 -8
- data/lib/pec/configure.rb +7 -1
- data/lib/pec/configure/user_data.rb +1 -1
- data/lib/pec/director.rb +0 -1
- data/lib/pec/director/helper.rb +4 -6
- data/lib/pec/network/port.rb +41 -21
- data/lib/pec/network/subnet.rb +1 -1
- data/lib/pec/resource.rb +2 -0
- data/lib/pec/resource/mock.rb +172 -0
- data/lib/pec/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d01486180af33f819f339eb46e351d320590903c
|
4
|
+
data.tar.gz: f61c04dfb32b6e8c49095271c465026a5ffef0df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd9c54bfc3e426c7db4134b07026a52ddd70997b3a6ef7789e3c08c139017360222f78ad90968239ba5006c1185f26c149a02334f2682af5486f4496feefd521
|
7
|
+
data.tar.gz: dc68e0627397e6a4624139d4377f7b6b8506f343aa79d8a829c0e9c6a585375a568b0ba7ce2bf2012cd33d51074cb7545a798285715c4ea01f7a649869c015c7
|
data/Rakefile
CHANGED
data/lib/pec.rb
CHANGED
data/lib/pec/compute/server.rb
CHANGED
@@ -4,12 +4,9 @@ module Pec
|
|
4
4
|
extend Query
|
5
5
|
class << self
|
6
6
|
def create(name, image_ref, flavor_ref, options)
|
7
|
-
|
8
7
|
response = Pec::Resource.get.create_server(name, image_ref, flavor_ref, options)
|
9
|
-
|
10
|
-
|
11
|
-
puts "success create for server_name:#{name}".blue
|
12
|
-
end
|
8
|
+
raise(Pec::Errors::Host, "server_name:#{name} response err status:#{response[:status]}") unless response[:status] == 202
|
9
|
+
puts "success create for server_name:#{name.to_s}".blue
|
13
10
|
|
14
11
|
response.data[:body]["server"]["id"]
|
15
12
|
end
|
@@ -23,9 +20,9 @@ module Pec
|
|
23
20
|
raise(Pec::Errors::Host, "server_name:#{server_name} is not fond!") unless server
|
24
21
|
response = Pec::Resource.get.delete_server(server["id"]) if server
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
raise(Pec::Errors::Host, "server_name:#{name} response err status:#{response[:status]}") unless response[:status] == 204
|
24
|
+
puts "server_name:#{server_name} is deleted!".green
|
25
|
+
true
|
29
26
|
end
|
30
27
|
end
|
31
28
|
end
|
data/lib/pec/configure.rb
CHANGED
@@ -4,7 +4,13 @@ module Pec
|
|
4
4
|
include Enumerable
|
5
5
|
|
6
6
|
def initialize(file_name)
|
7
|
-
|
7
|
+
if file_name.is_a?(Hash)
|
8
|
+
hash = file_name
|
9
|
+
else
|
10
|
+
hash = YAML.load_file(file_name).to_hash
|
11
|
+
end
|
12
|
+
|
13
|
+
hash.each do |config|
|
8
14
|
host = Pec::Configure::Host.load(config)
|
9
15
|
@configure ||= []
|
10
16
|
@configure << host if host
|
@@ -13,7 +13,7 @@ module Pec
|
|
13
13
|
|
14
14
|
def get_template(config)
|
15
15
|
config.templates.inject({}) do |merge_template, template|
|
16
|
-
template.concat('.yaml') unless template.match(/.*\.yaml/)
|
16
|
+
template.to_s.concat('.yaml') unless template.to_s.match(/.*\.yaml/)
|
17
17
|
raise(Pec::Errors::UserData, "template:#{template} is not fond!") unless FileTest.exist?("user_datas/#{template}")
|
18
18
|
merge_template.merge!(YAML.load_file("user_datas/#{template}").to_hash)
|
19
19
|
end if config.templates
|
data/lib/pec/director.rb
CHANGED
data/lib/pec/director/helper.rb
CHANGED
@@ -5,13 +5,9 @@ module Pec
|
|
5
5
|
|
6
6
|
def ports_assign(host)
|
7
7
|
host.networks.map do |ether|
|
8
|
-
|
9
|
-
ip = IP.new(ether.ip_address)
|
10
|
-
rescue ArgumentError => e
|
11
|
-
raise(Pec::Errors::Port, "ip:#{ether.ip_address} #{e}")
|
12
|
-
end
|
8
|
+
ip = IP.new(ether.ip_address)
|
13
9
|
|
14
|
-
port_subnet = Pec::Network::Subnet.
|
10
|
+
port_subnet = Pec::Network::Subnet.fetch_by_cidr(ip.network.to_s)
|
15
11
|
raise(Pec::Errors::Subnet, "subnet:#{ip.network.to_s} is not fond!") unless port_subnet
|
16
12
|
|
17
13
|
port = Pec::Network::Port.assign(ether.name, ip, port_subnet, get_security_group_id(host.security_group))
|
@@ -20,6 +16,8 @@ module Pec
|
|
20
16
|
puts "#{host.name}: assingn ip #{port.ip_address}".green
|
21
17
|
port
|
22
18
|
end if host.networks
|
19
|
+
rescue ArgumentError => e
|
20
|
+
raise(Pec::Errors::Port, "ip:#{ether.ip_address} #{e}")
|
23
21
|
end
|
24
22
|
|
25
23
|
def set_nics(options, ports)
|
data/lib/pec/network/port.rb
CHANGED
@@ -25,11 +25,20 @@ module Pec
|
|
25
25
|
options = set_security_group(security_group_ids)
|
26
26
|
options = set_fixed_ip(options, subnet, ip)
|
27
27
|
response = Pec::Resource.get.create_port(subnet["network_id"], options)
|
28
|
-
|
29
|
-
raise(Pec::Errors::Port, "ip:#{ip.to_addr} is not created!") unless response
|
28
|
+
raise(Pec::Errors::Port, "ip:#{ip.to_addr} is not created!") unless response[:status] == 201
|
30
29
|
append_assigned_ip(response)
|
30
|
+
port_from_response(response)
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
+
def delete(ip)
|
34
|
+
target_port = fetch_by_ip(ip.to_addr)
|
35
|
+
response = Pec::Resource.get.delete_port(target_port["id"]) if target_port
|
36
|
+
raise(Pec::Errors::Host, "ip:#{ip.to_addr} response err status:#{response[:status]}") unless response[:status] == 204
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def recreate(ip, subnet, security_group_ids)
|
41
|
+
create(ip, subnet, security_group_ids) if delete(ip)
|
33
42
|
end
|
34
43
|
|
35
44
|
def set_security_group(security_group_ids)
|
@@ -41,42 +50,53 @@ module Pec
|
|
41
50
|
end
|
42
51
|
|
43
52
|
def append_assigned_ip(response)
|
44
|
-
@@use_ip_list << response
|
53
|
+
@@use_ip_list << ip_from_port(port_from_response(response))
|
45
54
|
end
|
46
55
|
|
47
56
|
def assigned_ip?(port)
|
48
|
-
@@use_ip_list.include?(port
|
57
|
+
@@use_ip_list.include?(ip_from_port(port))
|
49
58
|
end
|
50
59
|
|
51
60
|
def get_free_port_ip(ip, subnet)
|
52
|
-
port =
|
53
|
-
port ? IP.new("#{port
|
61
|
+
port = get_free_port(subnet)
|
62
|
+
port ? IP.new("#{ip_from_port(port)}/#{ip.pfxlen}") : ip
|
54
63
|
end
|
55
64
|
|
56
|
-
def
|
57
|
-
|
58
|
-
response = Pec::Resource.get.delete_port(target_port["id"]) if target_port
|
65
|
+
def fetch_by_ip(ip_addr)
|
66
|
+
list.find {|p| ip_from_port(p) == ip_addr }
|
59
67
|
end
|
60
68
|
|
61
|
-
def
|
62
|
-
|
69
|
+
def port_from_response(response)
|
70
|
+
response.data[:body]["port"]
|
71
|
+
end
|
72
|
+
|
73
|
+
def ip_from_port(port)
|
74
|
+
port["fixed_ips"][0]["ip_address"]
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_free_port(subnet)
|
78
|
+
list.find do |p|
|
79
|
+
same_subnet?(p, subnet) &&
|
80
|
+
unused?(p) &&
|
81
|
+
admin_state_up?(p) &&
|
82
|
+
!assigned_ip?(p)
|
83
|
+
end
|
63
84
|
end
|
64
85
|
|
65
86
|
def request_any_address?(ip, subnet)
|
66
87
|
ip.to_s == subnet["cidr"]
|
67
88
|
end
|
68
89
|
|
69
|
-
def
|
70
|
-
|
90
|
+
def same_subnet?(port, subnet)
|
91
|
+
port["fixed_ips"][0]["subnet_id"] == subnet["id"]
|
71
92
|
end
|
72
93
|
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
end
|
94
|
+
def unused?(port)
|
95
|
+
port["device_owner"].empty?
|
96
|
+
end
|
97
|
+
|
98
|
+
def admin_state_up?(port)
|
99
|
+
port["admin_state_up"]
|
80
100
|
end
|
81
101
|
end
|
82
102
|
end
|
data/lib/pec/network/subnet.rb
CHANGED
data/lib/pec/resource.rb
CHANGED
@@ -9,6 +9,8 @@ module Pec
|
|
9
9
|
raise(Pec::Errors::Resource, "Please be tenant is always set") unless @@_tenant
|
10
10
|
unless ENV['PEC_TEST']
|
11
11
|
@@_resource[@@_tenant] ||= Pec::Resource::OpenStack.new(@@_tenant)
|
12
|
+
else
|
13
|
+
@@_resource[@@_tenant] ||= Pec::Resource::Mock.new(@@_tenant)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
@@ -0,0 +1,172 @@
|
|
1
|
+
module Pec
|
2
|
+
class Resource
|
3
|
+
class Mock
|
4
|
+
def initialize(tenant)
|
5
|
+
tenant_hash = { "openstack_tenant" => tenant }
|
6
|
+
end
|
7
|
+
|
8
|
+
def port_list
|
9
|
+
1.upto(10).map do |c|
|
10
|
+
{
|
11
|
+
"id" => c,
|
12
|
+
"fixed_ips" => [
|
13
|
+
{ "subnet_id" => c,
|
14
|
+
"ip_address" => "#{c}." * 3 + "#{c}"
|
15
|
+
}
|
16
|
+
],
|
17
|
+
"network_id" => c,
|
18
|
+
"device_owner" => c % 2 == 0 ? c.to_s : "",
|
19
|
+
"admin_state_up" => c % 2 == 0 ? "True" : "False"
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def subnet_list
|
25
|
+
1.upto(10).map do |c|
|
26
|
+
{
|
27
|
+
"id" => c,
|
28
|
+
"cidr" => "#{c}." * 3 + "0/24",
|
29
|
+
"network_id" => c
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def server_list
|
35
|
+
10.upto(20).map do |c|
|
36
|
+
{
|
37
|
+
"id" => c,
|
38
|
+
"name" => c,
|
39
|
+
"status" => c %2 == 0 ? "Active" : "SHUTOFF"
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def security_group_list
|
45
|
+
1.upto(10).map do |c|
|
46
|
+
{
|
47
|
+
"id" => c,
|
48
|
+
"name" => c
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def image_list
|
54
|
+
ref_list
|
55
|
+
end
|
56
|
+
|
57
|
+
def flavor_list
|
58
|
+
ref_list
|
59
|
+
end
|
60
|
+
|
61
|
+
def ref_list
|
62
|
+
1.upto(10).map do |c|
|
63
|
+
{
|
64
|
+
"id" => c,
|
65
|
+
"name" => c,
|
66
|
+
"links" => [
|
67
|
+
"href" => c
|
68
|
+
]
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
def tenant_list
|
75
|
+
1.upto(10).map do |c|
|
76
|
+
{
|
77
|
+
"id" => c,
|
78
|
+
"name" => c
|
79
|
+
}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def create_server(name, image_ref, flavor_ref, options)
|
84
|
+
object = Object.new
|
85
|
+
object.set_value(name, 202)
|
86
|
+
object
|
87
|
+
end
|
88
|
+
|
89
|
+
def delete_server(server_id)
|
90
|
+
object = Object.new
|
91
|
+
object.set_value(server_id, 204)
|
92
|
+
object
|
93
|
+
end
|
94
|
+
|
95
|
+
def get_server_details(server_id)
|
96
|
+
if server_id.to_i % 2 == 0
|
97
|
+
{
|
98
|
+
"status" => "active",
|
99
|
+
"OS-EXT-SRV-ATTR:host" => "#{server_id}.compute.node",
|
100
|
+
"flavor" => {
|
101
|
+
"id" => server_id
|
102
|
+
},
|
103
|
+
"tenant_id" => server_id,
|
104
|
+
"addresses" => {
|
105
|
+
"test_net" => [
|
106
|
+
"addr" => server_id
|
107
|
+
]
|
108
|
+
}
|
109
|
+
}
|
110
|
+
else
|
111
|
+
{
|
112
|
+
"status" => "uncreated",
|
113
|
+
"OS-EXT-SRV-ATTR:host" => "#{server_id}.compute.node",
|
114
|
+
"flavor" => {
|
115
|
+
"id" => server_id
|
116
|
+
},
|
117
|
+
"tenant_id" => server_id,
|
118
|
+
"addresses" => {
|
119
|
+
"test_net" => {
|
120
|
+
"addr" => server_id
|
121
|
+
}
|
122
|
+
}
|
123
|
+
}
|
124
|
+
end
|
125
|
+
end
|
126
|
+
def create_port(network_id, options)
|
127
|
+
object = Object.new
|
128
|
+
object.set_value(network_id, 201)
|
129
|
+
object
|
130
|
+
end
|
131
|
+
|
132
|
+
def delete_port(port_id)
|
133
|
+
object = Object.new
|
134
|
+
object.set_value(port_id, 204)
|
135
|
+
object
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
class Object
|
141
|
+
attr_reader :status
|
142
|
+
def set_value(value, status)
|
143
|
+
@value = value
|
144
|
+
@status = @value.to_i % 2 == 0 ? 999 : status
|
145
|
+
end
|
146
|
+
|
147
|
+
def [](key)
|
148
|
+
@status
|
149
|
+
end
|
150
|
+
|
151
|
+
def data
|
152
|
+
{
|
153
|
+
:body => {
|
154
|
+
"port" => {
|
155
|
+
"id" => @value,
|
156
|
+
"fixed_ips" => [
|
157
|
+
{
|
158
|
+
"subnet_id" => @value,
|
159
|
+
"ip_address" => "#{@value}." * 3 + "#{@value}"
|
160
|
+
}
|
161
|
+
],
|
162
|
+
"network_id" => @value,
|
163
|
+
"device_owner" => @value.to_i % 2 == 0 ? @value : "",
|
164
|
+
"admin_state_up" => @value.to_i % 2 == 0 ? "True" : "False"
|
165
|
+
},
|
166
|
+
"server" => {
|
167
|
+
"id" => @value
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
end
|
172
|
+
end
|
data/lib/pec/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.7
|
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-06-
|
11
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -166,6 +166,7 @@ files:
|
|
166
166
|
- lib/pec/network/subnet.rb
|
167
167
|
- lib/pec/query.rb
|
168
168
|
- lib/pec/resource.rb
|
169
|
+
- lib/pec/resource/mock.rb
|
169
170
|
- lib/pec/resource/openstack.rb
|
170
171
|
- lib/pec/version.rb
|
171
172
|
- pec.gemspec
|