
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
1103 lines
32 KiB
Python
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)
|