module Service

Constants

DEFAULT_OPTIONS

CLI options

FORCE
JSON_FORMAT
NUMBER
PERIOD
STATE
STATE_STR
TOP

Public Class Methods

build_json_action(perform, params = nil) click to toggle source

Build a json specifying an action @param [String] perform action to be performed (e.g.: shutdown) @param [Hash, nil] params contains the params for the action @return [String] json representing the action

# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source

Perform an action on a resource @param [Integer] id resource id @param [Block] block action to be performed @return [Integer] exit_code

# 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) click to toggle source

Perform an action on several resources @param [Array] ids resources ids @param [Block] block action to be performed @return [Integer] exit_code

# 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) click to toggle source

def self.rname_to_id(name, poolname, options)

# 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) click to toggle source
# 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) click to toggle source

Returns the string representation of the service state @param [String] state String number representing the state @return the state string

# File lib/opennebula/oneflow_client.rb, line 130
def self.state_str(state_number)
    STATE_STR[state_number.to_i]
end