summaryrefslogtreecommitdiff
path: root/cinderclient/v2/services.py
diff options
context:
space:
mode:
authorQiu Yu <unicell@gmail.com>2013-07-14 23:18:22 +0800
committerQiu Yu <unicell@gmail.com>2013-07-14 23:18:22 +0800
commit627b616227badd893ff2d8d7addf162d605b2299 (patch)
tree1db7b9d8dfd87ac5631aedffd0da514b4ee9bfc4 /cinderclient/v2/services.py
parentaef613f9949ae01a92474e82b5710edb23e15cb4 (diff)
downloadpython-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.py56
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)