blob: 1ab25ec431c57fdafac3e51893076e0716b80958 [file] [log] [blame]
Leo Toyoda3ae31e12013-04-19 11:19:57 +09001# Copyright 2013 NEC Corporation
Liu, Zhi Kund42c9912013-07-18 23:03:57 +08002# Copyright 2013 IBM Corp.
Leo Toyoda3ae31e12013-04-19 11:19:57 +09003# All Rights Reserved.
4#
5# Licensed under the Apache License, Version 2.0 (the "License"); you may
6# not use this file except in compliance with the License. You may obtain
7# a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14# License for the specific language governing permissions and limitations
15# under the License.
16
17import json
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080018import urllib
Leo Toyoda3ae31e12013-04-19 11:19:57 +090019
Haiwei Xuab924622014-03-05 04:33:51 +090020from tempest.common import rest_client
Matthew Treinish684d8992014-01-30 16:27:40 +000021from tempest import config
22
23CONF = config.CONF
Leo Toyoda3ae31e12013-04-19 11:19:57 +090024
25
Haiwei Xuab924622014-03-05 04:33:51 +090026class ServicesClientJSON(rest_client.RestClient):
Leo Toyoda3ae31e12013-04-19 11:19:57 +090027
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000028 def __init__(self, auth_provider):
29 super(ServicesClientJSON, self).__init__(auth_provider)
Matthew Treinish684d8992014-01-30 16:27:40 +000030 self.service = CONF.compute.catalog_type
Leo Toyoda3ae31e12013-04-19 11:19:57 +090031
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080032 def list_services(self, params=None):
33 url = 'os-services'
34 if params:
35 url += '?%s' % urllib.urlencode(params)
36
37 resp, body = self.get(url)
Leo Toyoda3ae31e12013-04-19 11:19:57 +090038 body = json.loads(body)
39 return resp, body['services']
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080040
41 def enable_service(self, host_name, binary):
42 """
43 Enable service on a host
44 host_name: Name of host
45 binary: Service binary
46 """
47 post_body = json.dumps({'binary': binary, 'host': host_name})
vponomaryovf4c27f92014-02-18 10:56:42 +020048 resp, body = self.put('os-services/enable', post_body)
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080049 body = json.loads(body)
50 return resp, body['service']
51
52 def disable_service(self, host_name, binary):
53 """
54 Disable service on a host
55 host_name: Name of host
56 binary: Service binary
57 """
58 post_body = json.dumps({'binary': binary, 'host': host_name})
vponomaryovf4c27f92014-02-18 10:56:42 +020059 resp, body = self.put('os-services/disable', post_body)
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080060 body = json.loads(body)
61 return resp, body['service']