diff options
| author | Qiu Yu <unicell@gmail.com> | 2013-07-14 23:18:22 +0800 |
|---|---|---|
| committer | Qiu Yu <unicell@gmail.com> | 2013-07-14 23:18:22 +0800 |
| commit | 627b616227badd893ff2d8d7addf162d605b2299 (patch) | |
| tree | 1db7b9d8dfd87ac5631aedffd0da514b4ee9bfc4 /cinderclient/v2/services.py | |
| parent | aef613f9949ae01a92474e82b5710edb23e15cb4 (diff) | |
| download | python-cinderclient-627b616227badd893ff2d8d7addf162d605b2299.tar.gz | |
Add os-services extension support
Implement client bindings for Cinder os-services API extension, so
client would be able to list services, enable or disable particular
services.
Usage:
cinder service-list [--host <hostname>] [--binary <binary>]
cinder service-enable <hostname> <binary>
cinder service-disable <hostname> <binary>
This change is depended on following change at Cinder side
I7f3fa889294ca6caebdf46b8689345bcac1cdf54
Implements blueprint os-services-extension
Change-Id: I4a53fd545ed3b446441302d00a429168a996a34a
Diffstat (limited to 'cinderclient/v2/services.py')
| -rw-r--r-- | cinderclient/v2/services.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cinderclient/v2/services.py b/cinderclient/v2/services.py new file mode 100644 index 0000000..b2427dd --- /dev/null +++ b/cinderclient/v2/services.py @@ -0,0 +1,56 @@ +# Copyright 2013 OpenStack LLC. +# All Rights Reserved. +# +# 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. + +""" +service interface +""" +from cinderclient import base + + +class Service(base.Resource): + + def __repr__(self): + return "<Service: %s>" % self.service + + +class ServiceManager(base.ManagerWithFind): + resource_class = Service + + def list(self, host=None, binary=None): + """ + Describes service list for host. + + :param host: destination host name. + :param binary: service binary. + """ + url = "/os-services" + filters = [] + if host: + filters.append("host=%s" % host) + if binary: + filters.append("binary=%s" % binary) + if filters: + url = "%s?%s" % (url, "&".join(filters)) + return self._list(url, "services") + + def enable(self, host, binary): + """Enable the service specified by hostname and binary.""" + body = {"host": host, "binary": binary} + self._update("/os-services/enable", body) + + def disable(self, host, binary): + """Enable the service specified by hostname and binary.""" + body = {"host": host, "binary": binary} + self._update("/os-services/disable", body) |
