occi 2.0.0 → 2.0.1

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.
@@ -1,54 +0,0 @@
1
- # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
3
- # #
4
- # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
- # not use this file except in compliance with the License. You may obtain #
6
- # a copy of the License at #
7
- # #
8
- # http://www.apache.org/licenses/LICENSE-2.0 #
9
- # #
10
- # Unless required by applicable law or agreed to in writing, software #
11
- # distributed under the License is distributed on an "AS IS" BASIS, #
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
- # See the License for the specific language governing permissions and #
14
- # limitations under the License. #
15
- #--------------------------------------------------------------------------- #
16
-
17
-
18
- require 'OpenNebula/Pool'
19
-
20
- module OpenNebula
21
- class GroupPool < Pool
22
- #######################################################################
23
- # Constants and Class attribute accessors
24
- #######################################################################
25
-
26
-
27
- GROUP_POOL_METHODS = {
28
- :info => "grouppool.info"
29
- }
30
-
31
- #######################################################################
32
- # Class constructor & Pool Methods
33
- #######################################################################
34
-
35
- # +client+ a Client object that represents a XML-RPC connection
36
- def initialize(client)
37
- super('GROUP_POOL','GROUP',client)
38
- end
39
-
40
- # Factory method to create User objects
41
- def factory(element_xml)
42
- OpenNebula::Group.new(element_xml,@client)
43
- end
44
-
45
- #######################################################################
46
- # XML-RPC Methods for the User Object
47
- #######################################################################
48
-
49
- # Retrieves all the Groups in the pool.
50
- def info()
51
- super(GROUP_POOL_METHODS[:info])
52
- end
53
- end
54
- end
@@ -1,143 +0,0 @@
1
- # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
3
- # #
4
- # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
- # not use this file except in compliance with the License. You may obtain #
6
- # a copy of the License at #
7
- # #
8
- # http://www.apache.org/licenses/LICENSE-2.0 #
9
- # #
10
- # Unless required by applicable law or agreed to in writing, software #
11
- # distributed under the License is distributed on an "AS IS" BASIS, #
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
- # See the License for the specific language governing permissions and #
14
- # limitations under the License. #
15
- #--------------------------------------------------------------------------- #
16
-
17
-
18
- require 'OpenNebula/Pool'
19
-
20
- module OpenNebula
21
- class Host < PoolElement
22
- #######################################################################
23
- # Constants and Class Methods
24
- #######################################################################
25
-
26
-
27
- HOST_METHODS = {
28
- :info => "host.info",
29
- :allocate => "host.allocate",
30
- :delete => "host.delete",
31
- :enable => "host.enable",
32
- :update => "host.update"
33
- }
34
-
35
- HOST_STATES=%w{INIT MONITORING MONITORED ERROR DISABLED}
36
-
37
- SHORT_HOST_STATES={
38
- "INIT" => "on",
39
- "MONITORING" => "on",
40
- "MONITORED" => "on",
41
- "ERROR" => "err",
42
- "DISABLED" => "off"
43
- }
44
-
45
- # Creates a Host description with just its identifier
46
- # this method should be used to create plain Host objects.
47
- # +id+ the id of the host
48
- #
49
- # Example:
50
- # host = Host.new(Host.build_xml(3),rpc_client)
51
- #
52
- def Host.build_xml(pe_id=nil)
53
- if pe_id
54
- host_xml = "<HOST><ID>#{pe_id}</ID></HOST>"
55
- else
56
- host_xml = "<HOST></HOST>"
57
- end
58
-
59
- XMLElement.build_xml(host_xml, 'HOST')
60
- end
61
-
62
- # Class constructor
63
- def initialize(xml, client)
64
- super(xml,client)
65
-
66
- @client = client
67
- @pe_id = self['ID'].to_i if self['ID']
68
- end
69
-
70
- #######################################################################
71
- # XML-RPC Methods for the Host
72
- #######################################################################
73
-
74
- # Retrieves the information of the given Host.
75
- def info()
76
- super(HOST_METHODS[:info], 'HOST')
77
- end
78
-
79
- # Allocates a new Host in OpenNebula
80
- #
81
- # @param hostname [String] Name of the new Host.
82
- # @param im [String] Name of the im_driver
83
- # @param vmm [String] Name of the vmm_driver
84
- # @param tm [String] Name of the tm_driver
85
- #
86
- # @return [Integer, OpenNebula::Error] the new VM ID in case of
87
- # success, error otherwise
88
- def allocate(hostname,im,vmm,vnm,tm)
89
- super(HOST_METHODS[:allocate],hostname,im,vmm,vnm,tm)
90
- end
91
-
92
- # Deletes the Host
93
- def delete()
94
- super(HOST_METHODS[:delete])
95
- end
96
-
97
- # Enables the Host
98
- def enable()
99
- set_enabled(true)
100
- end
101
-
102
- # Disables the Host
103
- def disable()
104
- set_enabled(false)
105
- end
106
-
107
- # Replaces the template contents
108
- #
109
- # +new_template+ New template contents
110
- def update(new_template)
111
- super(HOST_METHODS[:update], new_template)
112
- end
113
-
114
- #######################################################################
115
- # Helpers to get Host information
116
- #######################################################################
117
-
118
- # Returns the state of the Host (numeric value)
119
- def state
120
- self['STATE'].to_i
121
- end
122
-
123
- # Returns the state of the Host (string value)
124
- def state_str
125
- HOST_STATES[state]
126
- end
127
-
128
- # Returns the state of the Host (string value)
129
- def short_state_str
130
- SHORT_HOST_STATES[state_str]
131
- end
132
-
133
- private
134
- def set_enabled(enabled)
135
- return Error.new('ID not defined') if !@pe_id
136
-
137
- rc = @client.call(HOST_METHODS[:enable], @pe_id, enabled)
138
- rc = nil if !OpenNebula.is_error?(rc)
139
-
140
- return rc
141
- end
142
- end
143
- end
@@ -1,55 +0,0 @@
1
- # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
3
- # #
4
- # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
- # not use this file except in compliance with the License. You may obtain #
6
- # a copy of the License at #
7
- # #
8
- # http://www.apache.org/licenses/LICENSE-2.0 #
9
- # #
10
- # Unless required by applicable law or agreed to in writing, software #
11
- # distributed under the License is distributed on an "AS IS" BASIS, #
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
- # See the License for the specific language governing permissions and #
14
- # limitations under the License. #
15
- #--------------------------------------------------------------------------- #
16
-
17
-
18
- require 'OpenNebula/Pool'
19
-
20
- module OpenNebula
21
- class HostPool < Pool
22
- #######################################################################
23
- # Constants and Class attribute accessors
24
- #######################################################################
25
-
26
-
27
- HOST_POOL_METHODS = {
28
- :info => "hostpool.info"
29
- }
30
-
31
- #######################################################################
32
- # Class constructor & Pool Methods
33
- #######################################################################
34
-
35
-
36
- # +client+ a Client object that represents a XML-RPC connection
37
- def initialize(client)
38
- super('HOST_POOL','HOST',client)
39
- end
40
-
41
- # Factory Method for the Host Pool
42
- def factory(element_xml)
43
- OpenNebula::Host.new(element_xml,@client)
44
- end
45
-
46
- #######################################################################
47
- # XML-RPC Methods for the Host Pool
48
- #######################################################################
49
-
50
- # Retrieves all the Hosts in the pool.
51
- def info()
52
- super(HOST_POOL_METHODS[:info])
53
- end
54
- end
55
- end
@@ -1,256 +0,0 @@
1
- # -------------------------------------------------------------------------- #
2
- # Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
3
- # #
4
- # Licensed under the Apache License, Version 2.0 (the "License"); you may #
5
- # not use this file except in compliance with the License. You may obtain #
6
- # a copy of the License at #
7
- # #
8
- # http://www.apache.org/licenses/LICENSE-2.0 #
9
- # #
10
- # Unless required by applicable law or agreed to in writing, software #
11
- # distributed under the License is distributed on an "AS IS" BASIS, #
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
- # See the License for the specific language governing permissions and #
14
- # limitations under the License. #
15
- #--------------------------------------------------------------------------- #
16
-
17
-
18
- require 'OpenNebula/Pool'
19
- require 'fileutils'
20
-
21
- module OpenNebula
22
- class Image < PoolElement
23
- #######################################################################
24
- # Constants and Class Methods
25
- #######################################################################
26
-
27
-
28
- IMAGE_METHODS = {
29
- :info => "image.info",
30
- :allocate => "image.allocate",
31
- :update => "image.update",
32
- :enable => "image.enable",
33
- :persistent => "image.persistent",
34
- :delete => "image.delete",
35
- :chown => "image.chown",
36
- :chmod => "image.chmod",
37
- :chtype => "image.chtype"
38
- }
39
-
40
- IMAGE_STATES=%w{INIT READY USED DISABLED LOCKED ERROR}
41
-
42
- SHORT_IMAGE_STATES={
43
- "INIT" => "init",
44
- "READY" => "rdy",
45
- "USED" => "used",
46
- "DISABLED" => "disa",
47
- "LOCKED" => "lock",
48
- "ERROR" => "err"
49
- }
50
-
51
- IMAGE_TYPES=%w{OS CDROM DATABLOCK}
52
-
53
- SHORT_IMAGE_TYPES={
54
- "OS" => "OS",
55
- "CDROM" => "CD",
56
- "DATABLOCK" => "DB"
57
- }
58
-
59
- # Creates an Image description with just its identifier
60
- # this method should be used to create plain Image objects.
61
- # +id+ the id of the image
62
- #
63
- # Example:
64
- # image = Image.new(Image.build_xml(3),rpc_client)
65
- #
66
- def Image.build_xml(pe_id=nil)
67
- if pe_id
68
- image_xml = "<IMAGE><ID>#{pe_id}</ID></IMAGE>"
69
- else
70
- image_xml = "<IMAGE></IMAGE>"
71
- end
72
-
73
- XMLElement.build_xml(image_xml,'IMAGE')
74
- end
75
-
76
- # Class constructor
77
- def initialize(xml, client)
78
- super(xml,client)
79
-
80
- @client = client
81
- end
82
-
83
- #######################################################################
84
- # XML-RPC Methods for the Image Object
85
- #######################################################################
86
-
87
- # Retrieves the information of the given Image.
88
- def info()
89
- super(IMAGE_METHODS[:info], 'IMAGE')
90
- end
91
-
92
- # Allocates a new Image in OpenNebula
93
- #
94
- # +description+ A string containing the template of the Image.
95
- def allocate(description)
96
- super(IMAGE_METHODS[:allocate],description)
97
- end
98
-
99
- # Replaces the template contents
100
- #
101
- # +new_template+ New template contents
102
- def update(new_template)
103
- super(IMAGE_METHODS[:update], new_template)
104
- end
105
-
106
- # Enables an Image
107
- def enable
108
- set_enabled(true)
109
- end
110
-
111
- # Disables an Image
112
- def disable
113
- set_enabled(false)
114
- end
115
-
116
- # Publishes the Image, to be used by other users
117
- def publish
118
- set_publish(true)
119
- end
120
-
121
- # Unplubishes the Image
122
- def unpublish
123
- set_publish(false)
124
- end
125
-
126
- # Makes the Image persistent
127
- def persistent
128
- set_persistent(true)
129
- end
130
-
131
- # Makes the Image non persistent
132
- def nonpersistent
133
- set_persistent(false)
134
- end
135
-
136
- # Deletes the Image
137
- def delete()
138
- super(IMAGE_METHODS[:delete])
139
- end
140
-
141
- # Changes the owner/group
142
- # uid:: _Integer_ the new owner id. Set to -1 to leave the current one
143
- # gid:: _Integer_ the new group id. Set to -1 to leave the current one
144
- # [return] nil in case of success or an Error object
145
- def chown(uid, gid)
146
- super(IMAGE_METHODS[:chown], uid, gid)
147
- end
148
-
149
- # Changes the Image permissions.
150
- #
151
- # @param octet [String] Permissions octed , e.g. 640
152
- # @return [nil, OpenNebula::Error] nil in case of success, Error
153
- # otherwise
154
- def chmod_octet(octet)
155
- super(IMAGE_METHODS[:chmod], octet)
156
- end
157
-
158
- # Changes the Image permissions.
159
- # Each [Integer] argument must be 1 to allow, 0 deny, -1 do not change
160
- #
161
- # @return [nil, OpenNebula::Error] nil in case of success, Error
162
- # otherwise
163
- def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u,
164
- other_m, other_a)
165
- super(IMAGE_METHODS[:chmod], owner_u, owner_m, owner_a, group_u,
166
- group_m, group_a, other_u, other_m, other_a)
167
- end
168
-
169
- # Changes the Image type
170
- # @param type [String] new Image type
171
- # @return [nil, OpenNebula::Error] nil in case of success, Error
172
- # otherwise
173
- def chtype(type)
174
- return Error.new('ID not defined') if !@pe_id
175
-
176
- rc = @client.call(IMAGE_METHODS[:chtype], @pe_id, type)
177
- rc = nil if !OpenNebula.is_error?(rc)
178
-
179
- return rc
180
- end
181
-
182
- #######################################################################
183
- # Helpers to get Image information
184
- #######################################################################
185
-
186
- # Returns the state of the Image (numeric value)
187
- def state
188
- self['STATE'].to_i
189
- end
190
-
191
- # Returns the state of the Image (string value)
192
- def state_str
193
- IMAGE_STATES[state]
194
- end
195
-
196
- # Returns the state of the Image (string value)
197
- def short_state_str
198
- SHORT_IMAGE_STATES[state_str]
199
- end
200
-
201
- # Returns the type of the Image (numeric value)
202
- def type
203
- self['TYPE'].to_i
204
- end
205
-
206
- # Returns the type of the Image (string value)
207
- def type_str
208
- IMAGE_TYPES[type]
209
- end
210
-
211
- # Returns the state of the Image (string value)
212
- def short_type_str
213
- SHORT_IMAGE_TYPES[type_str]
214
- end
215
-
216
- # Returns the group identifier
217
- # [return] _Integer_ the element's group ID
218
- def gid
219
- self['GID'].to_i
220
- end
221
-
222
- def public?
223
- if self['PERMISSIONS/GROUP_U'] == "1" || self['PERMISSIONS/OTHER_U'] == "1"
224
- true
225
- else
226
- false
227
- end
228
- end
229
-
230
- private
231
-
232
- def set_enabled(enabled)
233
- return Error.new('ID not defined') if !@pe_id
234
-
235
- rc = @client.call(IMAGE_METHODS[:enable], @pe_id, enabled)
236
- rc = nil if !OpenNebula.is_error?(rc)
237
-
238
- return rc
239
- end
240
-
241
- def set_publish(published)
242
- group_u = published ? 1 : 0
243
-
244
- chmod(-1, -1, -1, group_u, -1, -1, -1, -1, -1)
245
- end
246
-
247
- def set_persistent(persistence)
248
- return Error.new('ID not defined') if !@pe_id
249
-
250
- rc = @client.call(IMAGE_METHODS[:persistent], @pe_id, persistence)
251
- rc = nil if !OpenNebula.is_error?(rc)
252
-
253
- return rc
254
- end
255
- end
256
- end