blob: 96ff5801155b2fdb87c8b8d434a1975b8d2e1453 [file] [log] [blame]
ivan-zhua2c9cd52013-08-20 20:01:44 +08001# Copyright 2013 NEC Corporation
2# Copyright 2013 IBM Corp.
3# 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
18import urllib
19
Chris Yeohc266b282014-03-13 18:19:00 +103020from tempest.api_schema.compute import services as schema
Haiwei Xu16ee2c82014-03-05 04:59:18 +090021from tempest.common import rest_client
Matthew Treinish684d8992014-01-30 16:27:40 +000022from tempest import config
23
24CONF = config.CONF
ivan-zhua2c9cd52013-08-20 20:01:44 +080025
26
Haiwei Xu16ee2c82014-03-05 04:59:18 +090027class ServicesV3ClientJSON(rest_client.RestClient):
ivan-zhua2c9cd52013-08-20 20:01:44 +080028
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000029 def __init__(self, auth_provider):
30 super(ServicesV3ClientJSON, self).__init__(auth_provider)
Matthew Treinish684d8992014-01-30 16:27:40 +000031 self.service = CONF.compute.catalog_v3_type
ivan-zhua2c9cd52013-08-20 20:01:44 +080032
33 def list_services(self, params=None):
34 url = 'os-services'
35 if params:
36 url += '?%s' % urllib.urlencode(params)
37
38 resp, body = self.get(url)
39 body = json.loads(body)
Chris Yeohc266b282014-03-13 18:19:00 +103040 self.validate_response(schema.list_services, resp, body)
ivan-zhua2c9cd52013-08-20 20:01:44 +080041 return resp, body['services']
42
43 def enable_service(self, host_name, binary):
44 """
45 Enable service on a host
46 host_name: Name of host
47 binary: Service binary
48 """
ivan-zhu5c86ae62013-08-20 21:09:01 +080049 post_body = json.dumps({
50 'service': {
51 'binary': binary,
52 'host': host_name
53 }
54 })
vponomaryovf4c27f92014-02-18 10:56:42 +020055 resp, body = self.put('os-services/enable', post_body)
ivan-zhua2c9cd52013-08-20 20:01:44 +080056 body = json.loads(body)
Ken'ichi Ohmichi26bcee62014-03-19 14:30:38 +090057 self.validate_response(schema.enable_service, resp, body)
ivan-zhua2c9cd52013-08-20 20:01:44 +080058 return resp, body['service']
59
60 def disable_service(self, host_name, binary):
61 """
62 Disable service on a host
63 host_name: Name of host
64 binary: Service binary
65 """
ivan-zhu5c86ae62013-08-20 21:09:01 +080066 post_body = json.dumps({
67 'service': {
68 'binary': binary,
69 'host': host_name
70 }
71 })
vponomaryovf4c27f92014-02-18 10:56:42 +020072 resp, body = self.put('os-services/disable', post_body)
ivan-zhua2c9cd52013-08-20 20:01:44 +080073 body = json.loads(body)
74 return resp, body['service']