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
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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)
 |