blob: 33e53453e9eb0f03e5c680de63a3e8e106a7aa4e [file] [log] [blame]
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +08001# Copyright 2013 IBM Corp.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
Mate Lakat99ee9142012-09-14 12:34:46 +010015import json
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080016import urllib
Mate Lakat99ee9142012-09-14 12:34:46 +010017
Matthew Treinisha83a16e2012-12-07 13:44:02 -050018from tempest.common.rest_client import RestClient
Matthew Treinish684d8992014-01-30 16:27:40 +000019from tempest import config
20
21CONF = config.CONF
Matthew Treinisha83a16e2012-12-07 13:44:02 -050022
Mate Lakat99ee9142012-09-14 12:34:46 +010023
24class HostsClientJSON(RestClient):
25
Matthew Treinish684d8992014-01-30 16:27:40 +000026 def __init__(self, username, password, auth_url, tenant_name=None):
27 super(HostsClientJSON, self).__init__(username, password,
Mate Lakat99ee9142012-09-14 12:34:46 +010028 auth_url, tenant_name)
Matthew Treinish684d8992014-01-30 16:27:40 +000029 self.service = CONF.compute.catalog_type
Mate Lakat99ee9142012-09-14 12:34:46 +010030
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080031 def list_hosts(self, params=None):
Sean Daguef237ccb2013-01-04 15:19:14 -050032 """Lists all hosts."""
Mate Lakat99ee9142012-09-14 12:34:46 +010033
34 url = 'os-hosts'
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080035 if params:
36 url += '?%s' % urllib.urlencode(params)
37
Mate Lakat99ee9142012-09-14 12:34:46 +010038 resp, body = self.get(url)
39 body = json.loads(body)
40 return resp, body['hosts']
Zhu Zhuff150052013-09-17 17:48:39 +080041
42 def show_host_detail(self, hostname):
43 """Show detail information for the host."""
44
45 resp, body = self.get("os-hosts/%s" % str(hostname))
46 body = json.loads(body)
47 return resp, body['host']
Lingxian Kong4b398fd2013-10-04 17:14:14 +080048
49 def update_host(self, hostname, **kwargs):
50 """Update a host."""
51
52 request_body = {
53 'status': None,
54 'maintenance_mode': None,
55 }
56 request_body.update(**kwargs)
57 request_body = json.dumps(request_body)
58
59 resp, body = self.put("os-hosts/%s" % str(hostname), request_body,
60 self.headers)
61 body = json.loads(body)
62 return resp, body
63
64 def startup_host(self, hostname):
65 """Startup a host."""
66
67 resp, body = self.get("os-hosts/%s/startup" % str(hostname))
68 body = json.loads(body)
69 return resp, body['host']
70
71 def shutdown_host(self, hostname):
72 """Shutdown a host."""
73
74 resp, body = self.get("os-hosts/%s/shutdown" % str(hostname))
75 body = json.loads(body)
76 return resp, body['host']
77
78 def reboot_host(self, hostname):
79 """reboot a host."""
80
81 resp, body = self.get("os-hosts/%s/reboot" % str(hostname))
82 body = json.loads(body)
83 return resp, body['host']