zhaoxinyu c4674360ef add regtest script and conf
Change-Id: Ieb82235bd6b436b6716992c1b45698b083d03d86

remove pre-existing chef files before uploading new chef files.

having legacy stale chef roles/cookbooks/databags in the knife
source directory will result in possible failure of dependency check,
so gurantee we have the latest code in that directory.

clean installation logs when refresh database.

Change-Id: I6609e90e51d8ca3560f1848f2de62e148f0c5b49
2014-09-17 11:46:07 -07:00

1103 lines
32 KiB
Python

# Copyright 2014 Huawei Technologies Co. Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Compass api client library.
"""
import json
import logging
import requests
class Client(object):
"""compass restful api wrapper"""
def __init__(self, url, headers=None, proxies=None, stream=None):
logging.info('create api client %s', url)
self.url_ = url
self.session_ = requests.Session()
if headers:
self.session_.headers.update(headers)
self.session_.headers.update({
'Accept': 'application/json'
})
if proxies is not None:
self.session_.proxies = proxies
if stream is not None:
self.session_.stream = stream
def __del__(self):
self.session_.close()
@classmethod
def _get_response(cls, resp):
response_object = {}
try:
response_object = resp.json()
except Exception as error:
logging.error('failed to load object from %s: %s',
resp.url, resp.content)
logging.exception(error)
response_object['status'] = 'Json Parsing Failed'
response_object['message'] = resp.content
return resp.status_code, response_object
def _get(self, req_url, data=None):
url = '%s%s' % (self.url_, req_url)
logging.debug('get %s with data %s', url, data)
if data:
resp = self.session_.get(url, params=data)
else:
resp = self.session_.get(url)
return self._get_response(resp)
def _post(self, req_url, data=None):
url = '%s%s' % (self.url_, req_url)
logging.debug('post %s with data %s', url, data)
if data:
resp = self.session_.post(url, json.dumps(data))
else:
resp = self.session_.post(url)
return self._get_response(resp)
def _put(self, req_url, data=None):
"""encapsulate put method."""
url = '%s%s' % (self.url_, req_url)
logging.debug('put %s with data %s', url, data)
if data:
resp = self.session_.put(url, json.dumps(data))
else:
resp = self.session_.put(url)
return self._get_response(resp)
def _patch(self, req_url, data=None):
url = '%s%s' % (self.url_, req_url)
logging.debug('patch %s with data %s', url, data)
if data:
resp = self.session_.patch(url, json.dumps(data))
else:
resp = self.session_.patch(url)
return self._get_response(resp)
def _delete(self, req_url):
url = '%s%s' % (self.url_, req_url)
logging.debug('delete %s', url)
return self._get_response(self.session_.delete(url))
def login(self, email, password):
credential = {}
credential['email'] = email
credential['password'] = password
return self._post('/users/login', data=credential)
def get_token(self, email, password):
credential = {}
credential['email'] = email
credential['password'] = password
status, resp = self._post('/users/token', data=credential)
if status < 400:
self.session_.headers.update({'X-Auth-Token': resp['token']})
return status, resp
def get_users(self):
users = self._get('/users')
return users
def list_switches(
self,
switch_ips=None,
switch_ip_networks=None):
"""list switches."""
params = {}
if switch_ips:
params['switchIp'] = switch_ips
if switch_ip_networks:
params['switchIpNetwork'] = switch_ip_networks
switchlist = self._get('/switches', data=params)
return switchlist
def get_switch(self, switch_id):
return self._get('/switches/%s' % switch_id)
def add_switch(
self,
switch_ip,
version=None,
community=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
data['ip'] = switch_ip
data['credentials'] = {}
if version:
data['credentials']['version'] = version
if community:
data['credentials']['community'] = community
return self._post('/switches', data=data)
def update_switch(self, switch_id, state='initialized',
version='2c', community='public', raw_data={}):
data = {}
if raw_data:
data = raw_data
else:
data['credentials'] = {}
if version:
data['credentials']['version'] = version
if community:
data['credentials']['community'] = community
if state:
data['state'] = state
return self._put('/switches/%s' % switch_id, data=data)
def delete_switch(self, switch_id):
return self._delete('/switches/%s' % switch_id)
def list_switch_machines(self, switch_id, port=None, vlans=None,
tag=None, location=None):
data = {}
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._get('/switches/%s/machines' % switch_id, data=data)
def get_switch_machine(self, switch_id, machine_id):
return self._get('/switches/%s/machines/%s' % (switch_id, machine_id))
def list_switch_machines_hosts(self, switch_id, port=None, vlans=None,
mac=None, tag=None, location=None,
os_name=None, os_id=None):
data = {}
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if mac:
data['mac'] = mac
if tag:
data['tag'] = tag
if location:
data['location'] = location
if os_name:
data['os_name'] = os_name
if os_id:
data['os_id'] = os_id
return self._get('/switches/%s/machines-hosts' % switch_id, data=data)
def add_switch_machine(self, switch_id, mac=None, port=None,
vlans=None, ipmi_credentials=None,
tag=None, location=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if mac:
data['mac'] = mac
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if ipmi_credentials:
data['ipmi_credentials'] = ipmi_credentials
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._post('/switches/%s/machines' % switch_id, data=data)
def update_switch_machine(self, switch_id, machine_id, port=None,
vlans=None, ipmi_credentials=None, tag=None,
location=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if ipmi_credentials:
data['ipmi_credentials'] = ipmi_credentials
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._put('/switches/%s/machines/%s' %
(switch_id, machine_id), data=data)
def delete_switch_machine(self, switch_id, machine_id):
return self._delete('/switches/%s/machines/%s' %
(switch_id, machine_id))
## test these
def poll_switch(self, switch_id):
data = {}
data['find_machines'] = None
return self._post('/switches/%s/action' % switch_id, data=data)
def add_group_switch_machines(self, switch_id, group_machine_ids):
data = {}
data['add_machines'] = group_machine_ids
return self._post('/switches/%s/action' % switch_id, data=data)
def remove_group_switch_machines(self, switch_id, group_machine_ids):
data = {}
data['remove_machines'] = group_machine_ids
return self._post('/switches/%s/action' % switch_id, data=data)
def update_group_switch_machines(self, switch_id, group_machines):
data = {}
data['set_machines'] = group_machines
return self._post('/switches/%s/action' % switch_id, data=data)
## end
def list_switchmachines(self, switch_ip_int=None, port=None, vlans=None,
mac=None, tag=None, location=None):
data = {}
if switch_ip_int:
data['switch_ip_int'] = switch_ip_int
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if mac:
data['mac'] = mac
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._get('/switch-machines', data=data)
def list_switchmachines_hosts(self, switch_ip_int=None, port=None,
vlans=None, mac=None, tag=None,
location=None, os_name=None, os_id=None):
data = {}
if switch_ip_int:
data['switch_ip_int'] = switch_ip_int
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
if mac:
data['mac'] = mac
if tag:
data['tag'] = tag
if location:
data['location'] = location
if os_name:
data['os_name'] = os_name
if os_id:
data['os_id'] = os_id
return self._get('/switches-machines-hosts', data=data)
def show_switchmachine(self, switchmachine_id):
return self._get('/switch-machines/%s' % switchmachine_id)
def update_switchmachine(self, switchmachine_id,
port=None, vlans=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if port:
data['port'] = port
if vlans:
data['vlans'] = vlans
return self._put('/switch-machines/%s' % switchmachine_id, data=data)
def patch_switchmachine(self, switchmachine_id,
vlans=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
elif vlans:
data['vlans'] = vlans
return self._patch('/switch-machines/%s' % switchmachine_id, data=data)
def delete_switchmachine(self, switchmachine_id):
return self._delete('/switch-machines/%s' % switchmachine_id)
def list_machines(self, mac=None, tag=None, location=None):
data = {}
if mac:
data['mac'] = mac
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._get('/machines', data=data)
def get_machine(self, machine_id):
data = {}
if id:
data['id'] = id
return self._get('/machines/%s' % machine_id, data=data)
def update_machine(self, machine_id, ipmi_credentials=None, tag=None,
location=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if ipmi_credentials:
data['ipmi_credentials'] = ipmi_credentials
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._put('/machines/%s' % machine_id, data=data)
def patch_machine(self, machine_id, ipmi_credentials=None,
tag=None, location=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if ipmi_credentials:
data['ipmi_credentials'] = ipmi_credentials
if tag:
data['tag'] = tag
if location:
data['location'] = location
return self._patch('/machines/%s' % machine_id, data=data)
def delete_machine(self, machine_id):
return self._delete('machines/%s' % machine_id)
def list_subnets(self, subnet=None, name=None):
data = {}
if subnet:
data['subnet'] = subnet
if name:
data['name'] = name
return self._get('/subnets', data=data)
def get_subnet(self, subnet_id):
return self._get('/subnets/%s' % subnet_id)
def add_subnet(self, subnet, name=None, raw_data=None):
data = {}
data['subnet'] = subnet
if raw_data:
data.update(raw_data)
else:
if name:
data['name'] = name
return self._post('/subnets', data=data)
def update_subnet(self, subnet_id, subnet=None,
name=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if subnet:
data['subnet'] = subnet
if name:
data['name'] = name
return self._put('/subnets/%s' % subnet_id, data=data)
def delete_subnet(self, subnet_id):
return self._delete('/subnets/%s' % subnet_id)
def list_adapters(self, name=None, distributed_system_name=None,
os_installer_name=None, package_installer_name=None):
data = {}
if name:
data['name'] = name
if distributed_system_name:
data['distributed_system_name'] = distributed_system_name
if os_installer_name:
data['os_installer_name'] = os_installer_name
if package_installer_name:
data['package_installer_name'] = package_installer_name
return self._get('/adapters', data=data)
def get_adapter(self, adapter_id):
return self._get('/adapters/%s' % adapter_id)
def get_adapter_roles(self, adapter_id):
return self._get('/adapters/%s/roles' % adapter_id)
def get_adapter_metadata(self, adapter_id):
return self._get('/adapters/%s/metadata' % adapter_id)
def get_os_metadata(self, os_id):
return self._get('/oses/%s/metadata' % os_id)
def list_clusters(self, name=None, os_name=None,
distributed_system_name=None, owner=None,
adapter_id=None):
data = {}
if name:
data['name'] = name
if os_name:
data['os_name'] = os_name
if distributed_system_name:
data['distributed_system_name'] = distributed_system_name
if owner:
data['owner'] = owner
if adapter_id:
data['adapter_id'] = adapter_id
return self._get('/clusters', data=data)
def get_cluster(self, cluster_id):
return self._get('/clusters/%s' % cluster_id)
def add_cluster(self, name, adapter_id, os_id,
flavor_id, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
data['flavor_id'] = flavor_id
data['name'] = name
data['adapter_id'] = adapter_id
data['os_id'] = os_id
return self._post('/clusters', data=data)
def update_cluster(self, cluster_id, name=None,
reinstall_distributed_system=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if name:
data['name'] = name
if reinstall_distributed_system:
data['reinstall_distributed_system'] = (
reinstall_distributed_system
)
return self._put('/clusters/%s' % cluster_id, data=data)
def delete_cluster(self, cluster_id):
return self._delete('/clusters/%s' % cluster_id)
def get_cluster_config(self, cluster_id):
return self._get('/clusters/%s/config' % cluster_id)
def get_cluster_metadata(self, cluster_id):
return self._get('/clusters/%s/metadata' % cluster_id)
def update_cluster_config(self, cluster_id, os_config=None,
package_config=None, config_step=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
if config_step:
data['config_step'] = config_step
return self._put('/clusters/%s/config' % cluster_id, data=data)
def patch_cluster_config(self, cluster_id, os_config=None,
package_config=None, config_step=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
if config_step:
data['config_step'] = config_step
return self._patch('/clusters/%s/config' % cluster_id, data=data)
def delete_cluster_config(self, cluster_id):
return self._delete('/clusters/%s/config' % cluster_id)
## test these
def add_hosts_to_cluster(self, cluster_id, hosts):
data = {}
data['add_hosts'] = hosts
return self._post('/clusters/%s/action' % cluster_id, data=data)
def set_hosts_in_cluster(self, cluster_id, hosts):
data = {}
data['set_hosts'] = hosts
return self._post('/clusters/%s/action' % cluster_id, data=data)
def remove_hosts_from_cluster(self, cluster_id, hosts):
data = {}
data['remove_hosts'] = hosts
return self._post('/clusters/%s/action' % cluster_id, data=data)
def review_cluster(self, cluster_id, review={}):
data = {}
data['review'] = review
return self._post('/clusters/%s/action' % cluster_id, data=data)
def deploy_cluster(self, cluster_id, deploy={}):
data = {}
data['deploy'] = deploy
return self._post('/clusters/%s/action' % cluster_id, data=data)
def get_cluster_state(self, cluster_id):
return self._get('/clusters/%s/state' % cluster_id)
def list_cluster_hosts(self, cluster_id):
return self._get('/clusters/%s/hosts' % cluster_id)
def list_clusterhosts(self):
return self._get('/clusterhosts')
def get_cluster_host(self, cluster_id, host_id):
return self._get('/clusters/%s/hosts/%s' % (cluster_id, host_id))
def get_clusterhost(self, clusterhost_id):
return self._get('/clusterhosts/%s' % clusterhost_id)
def add_cluster_host(self, cluster_id, machine_id=None, name=None,
reinstall_os=None, raw_data=None):
data = {}
data['machine_id'] = machine_id
if raw_data:
data.update(raw_data)
else:
if name:
data['name'] = name
if reinstall_os:
data['reinstall_os'] = reinstall_os
return self._post('/clusters/%s/hosts' % cluster_id, data=data)
def delete_cluster_host(self, cluster_id, host_id):
return self._delete('/clusters/%s/hosts/%s' %
(cluster_id, host_id))
def delete_clusterhost(self, clusterhost_id):
return self._delete('/clusterhosts/%s' % clusterhost_id)
def get_cluster_host_config(self, cluster_id, host_id):
return self._get('/clusters/%s/hosts/%s/config' %
(cluster_id, host_id))
def get_clusterhost_config(self, clusterhost_id):
return self._get('/clusterhosts/%s/config' % clusterhost_id)
def update_cluster_host_config(self, cluster_id, host_id,
os_config=None,
package_config=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
return self._put('/clusters/%s/hosts/%s/config' %
(cluster_id, host_id), data=data)
def update_clusterhost_config(self, clusterhost_id, os_config=None,
package_config=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
return self._put('/clusterhosts/%s/config' % clusterhost_id,
data=data)
def patch_cluster_host_config(self, cluster_id, host_id,
os_config=None,
package_config=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
return self._patch('/clusters/%s/hosts/%s/config' %
(cluster_id, host_id), data=data)
def patch_clusterhost_config(self, clusterhost_id, os_config=None,
package_config=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if os_config:
data['os_config'] = os_config
if package_config:
data['package_config'] = package_config
return self._patch('/clusterhosts/%s' % clusterhost_id, data=data)
def delete_cluster_host_config(self, cluster_id, host_id):
return self._delete('/clusters/%s/hosts/%s/config' %
(cluster_id, host_id))
def delete_clusterhost_config(self, clusterhost_id):
return self._delete('/clusterhosts/%s/config' % clusterhost_id)
def get_cluster_host_state(self, cluster_id, host_id):
return self._get('/clusters/%s/hosts/%s/state' %
(cluster_id, host_id))
def update_cluster_host(self, cluster_id, host_id,
roles=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if roles:
data['roles'] = roles
return self._put('/clusters/%s/hosts/%s' %
(cluster_id, host_id), data=data)
def update_clusterhost(self, clusterhost_id,
roles=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if roles:
data['roles'] = roles
return self._put('/clusterhosts/%s' % clusterhost_id, data=data)
def patch_cluster_host(self, cluster_id, host_id,
roles=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if roles:
data['roles'] = roles
return self._patch('/clusters/%s/hosts/%s' %
(cluster_id, host_id), data=data)
def patch_clusterhost(self, clusterhost_id,
roles=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if roles:
data['roles'] = roles
return self._patch('/clusterhosts/%s' % clusterhost_id, data=data)
def get_clusterhost_state(self, clusterhost_id):
return self._get('/clusterhosts/%s/state' % clusterhost_id)
def update_cluster_host_state(self, cluster_id, host_id, state=None,
percentage=None, message=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if state:
data['state'] = state
if percentage:
data['percentage'] = percentage
if message:
data['message'] = message
return self._put('/clusters/%s/hosts/%s/state' % (cluster_id, host_id),
data=data)
def update_clusterhost_state(self, clusterhost_id, state=None,
percentage=None, message=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if state:
data['state'] = state
if percentage:
data['percentage'] = percentage
if message:
data['message'] = message
return self._put('/clusterhosts/%s/state' % clusterhost_id, data=data)
def list_hosts(self, name=None, os_name=None, owner=None, mac=None):
data = {}
if name:
data['name'] = name
if os_name:
data['os_name'] = os_name
if owner:
data['owner'] = owner
if mac:
data['mac'] = mac
return self._get('/hosts', data=data)
def get_host(self, host_id):
return self._get('/hosts/%s' % host_id)
def list_machines_or_hosts(self, mac=None, tag=None,
location=None, os_name=None,
os_id=None):
data = {}
if mac:
data['mac'] = mac
if tag:
data['tag'] = tag
if location:
data['location'] = location
if os_name:
data['os_name'] = os_name
if os_id:
data['os_id'] = os_id
return self._get('/machines-hosts', data=data)
def get_machine_or_host(self, host_id):
return self._get('/machines-hosts/%s' % host_id)
def update_host(self, host_id, name=None,
reinstall_os=None, raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if name:
data['name'] = name
if reinstall_os:
data['reinstall_os'] = reinstall_os
return self._put('/hosts/%s' % host_id, data=data)
def delete_host(self, host_id):
return self._delete('/hosts/%s' % host_id)
def get_host_clusters(self, host_id):
return self._get('/hosts/%s/clusters' % host_id)
def get_host_config(self, host_id):
return self._get('/hosts/%s/config' % host_id)
def update_host_config(self, host_id, os_config, raw_data=None):
data = {}
data['os_config'] = os_config
if raw_data:
data.update(raw_data)
return self._put('/hosts/%s/config' % host_id, data=data)
def patch_host_config(self, host_id, os_config, raw_data=None):
data = {}
data['os_config'] = os_config
if raw_data:
data.update(raw_data)
return self._patch('/hosts/%s/config' % host_id, data=data)
def delete_host_config(self, host_id):
return self._delete('/hosts/%s/config' % host_id)
def list_host_networks(self, host_id, interface=None, ip=None,
subnet=None, is_mgmt=None, is_promiscuous=None):
data = {}
if interface:
data['interface'] = interface
if ip:
data['ip'] = ip
if subnet:
data['subnet'] = subnet
if is_mgmt:
data['is_mgmt'] = is_mgmt
if is_promiscuous:
data['is_promiscuous'] = is_promiscuous
return self._get('/hosts/%s/networks' % host_id, data=data)
def list_all_host_networks(self, interface=None, ip=None, subnet=None,
is_mgmt=None, is_promiscuous=None):
data = {}
if interface:
data['interface'] = interface
if ip:
data['ip'] = ip
if subnet:
data['subnet'] = subnet
if is_mgmt:
data['is_mgmt'] = is_mgmt
if is_promiscuous:
data['is_promiscuous'] = is_promiscuous
return self._get('/host-networks', data=data)
def get_host_network(self, host_id, host_network_id):
return self._get('/hosts/%s/networks/%s' %
(host_id, host_network_id))
def get_network_for_all_hosts(self, host_network_id):
return self._get('/host-networks/%s' % host_network_id)
def add_host_network(self, host_id, interface, ip, subnet_id,
is_mgmt=None, is_promiscuous=None,
raw_data=None):
data = {}
data['interface'] = interface
data['ip'] = ip
data['subnet_id'] = subnet_id
if raw_data:
data.update(raw_data)
else:
if is_mgmt:
data['is_mgmt'] = is_mgmt
if is_promiscuous:
data['is_promiscuous'] = is_promiscuous
return self._post('/hosts/%s/networks' % host_id, data=data)
def update_host_network(self, host_id, host_network_id,
ip=None, subnet_id=None, subnet=None,
is_mgmt=None, is_promiscuous=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if ip:
data['ip'] = ip
if subnet_id:
data['subnet_id'] = subnet_id
if subnet:
data['subnet'] = subnet
if is_mgmt:
data['is_mgmt'] = is_mgmt
if is_promiscuous:
data['is_promiscuous'] = is_promiscuous
return self._put('/hosts/%s/networks/%s' %
(host_id, host_network_id), data=data)
def update_hostnetwork(self, host_network_id, ip=None,
subnet_id=None, subnet=None,
is_mgmt=None, is_promiscuous=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if ip:
data['ip'] = ip
if subnet_id:
data['subnet_id'] = subnet_id
if subnet:
data['subnet'] = subnet
if is_mgmt:
data['is_mgmt'] = is_mgmt
if is_promiscuous:
data['is_promiscuous'] = is_promiscuous
return self._put('/host-networks/%s' % host_network_id,
data=data)
def delete_host_network(self, host_id, host_network_id):
return self._delete('/hosts/%s/networks/%s',
(host_id, host_network_id))
def delete_hostnetwork(self, host_network_id):
return self._delete('/host-networks/%s' % host_network_id)
def get_host_state(self, host_id):
return self._get('/hosts/%s/state' % host_id)
def update_host_state(self, host_id, state=None,
percentage=None, message=None,
raw_data=None):
data = {}
if raw_data:
data = raw_data
else:
if state:
data['state'] = state
if percentage:
data['percentage'] = percentage
if message:
data['message'] = message
return self._put('/hosts/%s/state' % host_id, date=data)
def poweron_host(self, host_id):
data = {}
data['poweron'] = True
return self._post('/hosts/%s/action' % host_id, data=data)
def poweroff_host(self, host_id):
data = {}
data['poweroff'] = True
return self._post('/hosts/%s/action' % host_id, data=data)
def reset_host(self, host_id):
data = {}
data['reset'] = True
return self._post('/hosts/%s/action' % host_id, data=data)