openstack_activeresource 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
@@ -20,7 +20,7 @@ module OpenStack
|
|
20
20
|
module Compute
|
21
21
|
|
22
22
|
class SecurityGroup < Base
|
23
|
-
self.element_name = "
|
23
|
+
self.element_name = "security_group"
|
24
24
|
self.collection_name = "os-security-groups"
|
25
25
|
|
26
26
|
schema do
|
@@ -35,7 +35,7 @@ module OpenStack
|
|
35
35
|
end
|
36
36
|
|
37
37
|
class SecurityGroup::Rule < Base
|
38
|
-
self.element_name = "
|
38
|
+
self.element_name = "security_group_rule"
|
39
39
|
self.collection_name = "os-security-group-rules"
|
40
40
|
|
41
41
|
schema do
|
@@ -67,13 +67,13 @@ module OpenStack
|
|
67
67
|
:ip_protocol => attributes[:ip_protocol],
|
68
68
|
:from_port => attributes[:from_port],
|
69
69
|
:to_port => attributes[:to_port],
|
70
|
-
:cidr => attributes[:cidr] || attributes[:ip_range][:cidr],
|
70
|
+
:cidr => attributes[:cidr] || (attributes[:ip_range].present? ? attributes[:ip_range][:cidr] : nil,
|
71
71
|
:parent_group_id => attributes[:parent_group].present? ? attributes[:parent_group].id : nil
|
72
72
|
}
|
73
73
|
super(new_attributes, persisted)
|
74
74
|
end
|
75
75
|
|
76
|
-
#
|
76
|
+
# Override ActiveRecord::encode method
|
77
77
|
# Custom encoding to deal with openstack API
|
78
78
|
def encode(options={})
|
79
79
|
to_encode = {
|
@@ -114,4 +114,3 @@ module OpenStack
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
end
|
117
|
-
|
@@ -83,9 +83,16 @@ module OpenStack
|
|
83
83
|
new_attributes[:flavor_id] = attributes[:flavor_id]
|
84
84
|
end
|
85
85
|
|
86
|
-
|
86
|
+
if persisted
|
87
|
+
# We ignore the list of security group names provided in attributes[:security_group]
|
88
|
+
# Security group ids will be retrieved when needed
|
89
|
+
new_attributes[:security_group_ids] = []
|
90
|
+
else
|
87
91
|
|
88
|
-
|
92
|
+
new_attributes[:security_group_ids] = attributes[:security_group_ids] || attributes[:security_groups].map { |sg| sg.id }
|
93
|
+
end
|
94
|
+
|
95
|
+
super(new_attributes, persisted)
|
89
96
|
|
90
97
|
self
|
91
98
|
end
|
@@ -104,7 +111,7 @@ module OpenStack
|
|
104
111
|
# Optional attributes (openstack will not accept empty attribute for update/create)
|
105
112
|
to_encode[:server][:user_data] = Base64.encode64(user_data) if user_data.present?
|
106
113
|
to_encode[:server][:key_name] = key_pair_id if key_pair_id.present?
|
107
|
-
to_encode[:server][:security_groups] =
|
114
|
+
to_encode[:server][:security_groups] = security_groups.map { |sg| {:name => sg.name} }
|
108
115
|
|
109
116
|
to_encode.send("to_#{self.class.format.extension}", options)
|
110
117
|
end
|
@@ -136,13 +143,19 @@ module OpenStack
|
|
136
143
|
end
|
137
144
|
|
138
145
|
def security_groups
|
139
|
-
|
146
|
+
if persisted?
|
147
|
+
get('os-security-groups').map { |sg| OpenStack::Nova::Compute::SecurityGroup.new(sg, true) }
|
148
|
+
else
|
149
|
+
security_group_ids.map { |sg_id| OpenStack::Nova::Compute::SecurityGroup.find sg_id }
|
150
|
+
end
|
140
151
|
end
|
141
152
|
|
142
153
|
def security_groups=(security_groups)
|
143
154
|
return if persisted? # Do Nothing (it's a read-only attribute for OpenStack)
|
144
155
|
|
145
|
-
|
156
|
+
security_group_ids = security_groups.map { |sg| sg.id }
|
157
|
+
|
158
|
+
security_groups
|
146
159
|
end
|
147
160
|
|
148
161
|
def addresses
|
@@ -283,29 +296,6 @@ module OpenStack
|
|
283
296
|
post(:action, {}, {:'resume' => nil}.to_json)
|
284
297
|
end
|
285
298
|
|
286
|
-
private
|
287
|
-
|
288
|
-
def get_security_groups
|
289
|
-
security_group_ids.map { |sg_id|
|
290
|
-
SecurityGroup.find sg_id
|
291
|
-
}
|
292
|
-
end
|
293
|
-
|
294
|
-
def get_security_group_ids(security_groups=nil)
|
295
|
-
if security_groups.nil?
|
296
|
-
if persisted?
|
297
|
-
|
298
|
-
get('os-security-groups').map { |security_group| security_group.with_indifferent_access[:id] }
|
299
|
-
else
|
300
|
-
|
301
|
-
[]
|
302
|
-
end
|
303
|
-
else
|
304
|
-
|
305
|
-
security_groups.map { |security_group| security_group.id }
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
299
|
end
|
310
300
|
|
311
301
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "openstack_activeresource"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Davide Guerri"]
|
12
|
-
s.date = "2013-01-
|
12
|
+
s.date = "2013-01-07"
|
13
13
|
s.description = "OpenStack Ruby and RoR bindings implemented with ActiveResource - See also http://www.unicloud.it"
|
14
14
|
s.email = "d.guerri@unidata.it"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: openstack_activeresource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Davide Guerri
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-07 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activemodel
|
@@ -170,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
hash:
|
173
|
+
hash: 3406496553585609494
|
174
174
|
segments:
|
175
175
|
- 0
|
176
176
|
version: "0"
|