Lucas Alvares Gomes 351344d623 Sane parameters for node and driver vendor_passthru()
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
2014-11-14 11:51:25 +00:00

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')