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 }
- STATE_STR =
[ 'PENDING', 'DEPLOYING', 'RUNNING', 'UNDEPLOYING', 'WARNING', 'DONE', 'FAILED_UNDEPLOYING', 'FAILED_DEPLOYING', 'SCALING', 'FAILED_SCALING', 'COOLDOWN' ]
- 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
124 125 126 127 128 129 130 131 132 133 |
# File 'lib/opennebula/oneflow_client.rb', line 124 def self.build_json_action(perform, params=nil) body = Hash.new body['perform'] = perform body['params'] = params if params action = Hash.new action['action'] = body JSON.pretty_generate action end |
.list_to_id(names, poolname) ⇒ Object
246 247 248 249 250 251 252 253 254 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 |
# File 'lib/opennebula/oneflow_client.rb', line 246 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 { |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 } return 0, result end |
.list_to_id_desc(poolname) ⇒ Object
281 282 283 |
# File 'lib/opennebula/oneflow_client.rb', line 281 def self.list_to_id_desc(poolname) "Comma-separated list of OpenNebula #{poolname} names or ids" end |
.name_to_id(name, pool, ename) ⇒ Object
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
# File 'lib/opennebula/oneflow_client.rb', line 226 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 } if objects.length>0 if objects.length>1 return -1, "There are multiple #{ename}s with name #{name}." else result = objects.first['ID'] end else return -1, "#{ename} named #{name} not found." end return 0, result end |
.perform_action(id, &block) ⇒ Integer
Perform an action on a resource
308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/opennebula/oneflow_client.rb', line 308 def self.perform_action(id, &block) exit_code = 0 response = block.call(id) if block_given? if CloudClient::is_error?(response) puts response.to_s exit_code = response.code.to_i end exit_code end |
.perform_actions(ids, &block) ⇒ Integer
Perform an action on several resources
289 290 291 292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/opennebula/oneflow_client.rb', line 289 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.to_s 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)
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/opennebula/oneflow_client.rb', line 201 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
222 223 224 |
# File 'lib/opennebula/oneflow_client.rb', line 222 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
116 117 118 |
# File 'lib/opennebula/oneflow_client.rb', line 116 def self.state_str(state_number) return STATE_STR[state_number.to_i] end |