Module: Service
- Defined in:
- lib/opennebula/oneflow_client.rb
Defined Under Namespace
Classes: Client
Constant Summary collapse
- STATE =
{ 'PENDING' => 0, 'DEPLOYING' => 1, 'RUNNING' => 2, 'UNDEPLOYING' => 3, 'WARNING' => 4, 'DONE' => 5, 'FAILED_UNDEPLOYING' => 6, 'FAILED_DEPLOYING' => 7, 'SCALING' => 8, 'FAILED_SCALING' => 9, 'COOLDOWN' => 10, 'DEPLOYING_NETS' => 11, 'UNDEPLOYING_NETS' => 12, 'FAILED_DEPLOYING_NETS' => 13, 'FAILED_UNDEPLOYING_NETS' => 14, 'HOLD' => 15 }
- STATE_STR =
[ 'PENDING', 'DEPLOYING', 'RUNNING', 'UNDEPLOYING', 'WARNING', 'DONE', 'FAILED_UNDEPLOYING', 'FAILED_DEPLOYING', 'SCALING', 'FAILED_SCALING', 'COOLDOWN', 'DEPLOYING_NETS', 'UNDEPLOYING_NETS', 'FAILED_DEPLOYING_NETS', 'FAILED_UNDEPLOYING_NETS', 'HOLD' ]
- DEFAULT_OPTIONS =
CLI options
[ ENDPOINT = { :name => 'server', :short => '-s url', :large => '--server url', :format => String, :description => 'Service endpoint' }, USERNAME={ :name => 'username', :short => '-u name', :large => '--username name', :format => String, :description => 'User name' }, PASSWORD={ :name => 'password', :short => '-p pass', :large => '--password pass', :format => String, :description => 'User password' } ]
- JSON_FORMAT =
{ :name => 'json', :short => '-j', :large => '--json', :description => 'Print the resource in JSON' }
- TOP =
{ :name => 'top', :short => '-t', :large => '--top', :description => 'Top for the command' }
- PERIOD =
{ :name => 'period', :short => '-p x', :large => '--period x', :format => Integer, :description => 'Seconds between each group of actions' }
- NUMBER =
{ :name => 'number', :short => '-n x', :large => '--number x', :format => Integer, :description => 'Number of VMs to apply the action to each period' }
- FORCE =
{ :name => 'force', :short => '-f', :large => '--force', :description => 'Force the new cardinality even if it is outside the limits' }
Class Method Summary collapse
-
.build_json_action(perform, params = nil) ⇒ String
Build a json specifying an action.
- .list_to_id(names, poolname) ⇒ Object
- .list_to_id_desc(poolname) ⇒ Object
- .name_to_id(name, pool, ename) ⇒ Object
-
.perform_action(id, &block) ⇒ Integer
Perform an action on a resource.
-
.perform_actions(ids, &block) ⇒ Integer
Perform an action on several resources.
-
.rname_to_id(name, poolname) ⇒ Object
def self.rname_to_id(name, poolname, options).
- .rname_to_id_desc(poolname) ⇒ Object
-
.state_str(state_number) ⇒ Object
Returns the string representation of the service state.
Class Method Details
.build_json_action(perform, params = nil) ⇒ String
Build a json specifying an action
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/opennebula/oneflow_client.rb', line 138 def self.build_json_action(perform, params = nil) body = {} body['perform'] = perform body['params'] = params if params action = {} action['action'] = body JSON.pretty_generate action end |
.list_to_id(names, poolname) ⇒ Object
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 |
# File 'lib/opennebula/oneflow_client.rb', line 255 def self.list_to_id(names, poolname) client = Service::Client.new resource_path = case poolname when 'SERVICE' then '/service' when 'SERVICE TEMPLATE' then '/service_template' end response = client.get(resource_path) if CloudClient.is_error?(response) return -1, "OpenNebula #{poolname} name not found," << ' use the ID instead' end pool = JSON.parse(response.body) result = names.split(',').collect do |name| if name.match(/^[0123456789]+$/) name.to_i else rc = name_to_id(name, pool, poolname) if rc.first == -1 return rc[0], rc[1] end rc[1] end end [0, result] end |
.list_to_id_desc(poolname) ⇒ Object
289 290 291 |
# File 'lib/opennebula/oneflow_client.rb', line 289 def self.list_to_id_desc(poolname) "Comma-separated list of OpenNebula #{poolname} names or ids" end |
.name_to_id(name, pool, ename) ⇒ Object
240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/opennebula/oneflow_client.rb', line 240 def self.name_to_id(name, pool, ename) if pool['DOCUMENT_POOL']['DOCUMENT'].nil? return -1, "#{ename} named #{name} not found." end objects = pool['DOCUMENT_POOL']['DOCUMENT'].select {|object| object['NAME'] == name } return -1, "#{ename} named #{name} not found." unless objects.length>0 return -1, "There are multiple #{ename}s with name #{name}." if objects.length>1 result = objects.first['ID'] [0, result] end |
.perform_action(id, &block) ⇒ Integer
Perform an action on a resource
316 317 318 319 320 321 322 323 324 325 326 |
# File 'lib/opennebula/oneflow_client.rb', line 316 def self.perform_action(id, &block) exit_code = 0 response = block.call(id) if block_given? if CloudClient.is_error?(response) puts response exit_code = response.code.to_i end exit_code end |
.perform_actions(ids, &block) ⇒ Integer
Perform an action on several resources
297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'lib/opennebula/oneflow_client.rb', line 297 def self.perform_actions(ids, &block) exit_code = 0 ids.each do |id| response = block.call(id) if block_given? if CloudClient.is_error?(response) puts response exit_code = response.code.to_i end end exit_code end |
.rname_to_id(name, poolname) ⇒ Object
def self.rname_to_id(name, poolname, options)
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
# File 'lib/opennebula/oneflow_client.rb', line 215 def self.rname_to_id(name, poolname) return 0, name.to_i if name.match(/^[0123456789]+$/) client = Service::Client.new resource_path = case poolname when 'SERVICE' then '/service' when 'SERVICE TEMPLATE' then '/service_template' end response = client.get(resource_path) if CloudClient.is_error?(response) return -1, "OpenNebula #{poolname} name not found," << ' use the ID instead' end pool = JSON.parse(response.body) name_to_id(name, pool, poolname) end |
.rname_to_id_desc(poolname) ⇒ Object
236 237 238 |
# File 'lib/opennebula/oneflow_client.rb', line 236 def self.rname_to_id_desc(poolname) "OpenNebula #{poolname} name or id" end |
.state_str(state_number) ⇒ Object
Returns the string representation of the service state
130 131 132 |
# File 'lib/opennebula/oneflow_client.rb', line 130 def self.state_str(state_number) STATE_STR[state_number.to_i] end |