
The vendor_passthru() method for the node and driver library was expecting a **kwargs, that isn't helpful because you don't know exactly how much parameters it expects, what are the parameters etc... This patch is changing it since the parameters are well defined (we knew what parameters we were expecting there). Change-Id: Idb2002eb76e76f6e1b67a6ea1a7d31f41573abdd
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2013 Red Hat, Inc.
|
|
# 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.
|
|
|
|
from ironicclient.common import base
|
|
|
|
|
|
class Driver(base.Resource):
|
|
def __repr__(self):
|
|
return "<Driver %s>" % self._info
|
|
|
|
|
|
class DriverManager(base.Manager):
|
|
resource_class = Driver
|
|
|
|
def list(self):
|
|
return self._list('/v1/drivers', "drivers")
|
|
|
|
def get(self, driver_name):
|
|
try:
|
|
return self._list('/v1/drivers/%s' % driver_name)[0]
|
|
except IndexError:
|
|
return None
|
|
|
|
def properties(self, driver_name):
|
|
try:
|
|
info = self._list('/v1/drivers/%s/properties' % driver_name)[0]
|
|
if info:
|
|
return info.to_dict()
|
|
return {}
|
|
except IndexError:
|
|
return {}
|
|
|
|
def vendor_passthru(self, driver_name, method, args=None):
|
|
"""Issue requests for vendor-specific actions on a given driver.
|
|
|
|
:param driver_name: Name of the driver.
|
|
:param method: Name of the vendor method.
|
|
:param args: Optional. The arguments to be passed to the method.
|
|
|
|
"""
|
|
if args is None:
|
|
args = {}
|
|
|
|
path = "/v1/drivers/%(driver_name)s/vendor_passthru/%(method)s" % {
|
|
'driver_name': driver_name,
|
|
'method': method
|
|
}
|
|
return self._update(path, args, method='POST')
|