From 70d2f67e3ef05e5b5a2fd9a91a0d11331e50e086 Mon Sep 17 00:00:00 2001 From: Devananda van der Veen Date: Mon, 13 May 2013 00:51:21 -0700 Subject: [PATCH] Add new base and fake driver classes. --- ironic/drivers/__init__.py | 16 ++++++ ironic/drivers/base.py | 87 +++++++++++++++++++++++++++++ ironic/drivers/fake.py | 69 +++++++++++++++++++++++ ironic/{manager => drivers}/ipmi.py | 0 4 files changed, 172 insertions(+) create mode 100644 ironic/drivers/__init__.py create mode 100644 ironic/drivers/base.py create mode 100644 ironic/drivers/fake.py rename ironic/{manager => drivers}/ipmi.py (100%) diff --git a/ironic/drivers/__init__.py b/ironic/drivers/__init__.py new file mode 100644 index 0000000000..56425d0fce --- /dev/null +++ b/ironic/drivers/__init__.py @@ -0,0 +1,16 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# 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. diff --git a/ironic/drivers/base.py b/ironic/drivers/base.py new file mode 100644 index 0000000000..609db1ecd7 --- /dev/null +++ b/ironic/drivers/base.py @@ -0,0 +1,87 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# -*- encoding: utf-8 -*- +# +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# +# 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. +""" +Base classes for drivers +""" + +import abc + + +class DeploymentDriver(object): + """Base class for hardware deployment drivers.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __init__(self): + """Constructor.""" + + @classmethod + @abc.abstractmethod + def is_capable(self): + """Check if this driver is capable of handling the givens.""" + + @abc.abstractmethod + def activate_bootloader(self): + """Prepare the bootloader for this deployment.""" + + @abc.abstractmethod + def deactivate_bootloader(self): + """Tear down the bootloader for this deployment.""" + + @abc.abstractmethod + def activate_node(self): + """Perform post-power-on operations for this deployment.""" + + @abc.abstractmethod + def deactivate_node(self): + """Perform pre-power-off operations for this deployment.""" + + +class BMCDriver(object): + """Base class for baseboard management controller drivers.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __init__(self): + """Constructor.""" + + @classmethod + @abc.abstractmethod + def is_capable(self): + """Check if this driver is capable of handling the givens.""" + + @abc.abstractmethod + def start_console(self): + """Start a remote console for this BMC.""" + + @abc.abstractmethod + def stop_console(self): + """Stop the remote console session for this BMC.""" + + @abc.abstractmethod + def get_power_state(self): + """Return the power state.""" + + @abc.abstractmethod + def set_power_state(self): + """Set the power state.""" + + @abc.abstractmethod + def reboot(self): + """Perform a hard reboot.""" diff --git a/ironic/drivers/fake.py b/ironic/drivers/fake.py new file mode 100644 index 0000000000..478344706c --- /dev/null +++ b/ironic/drivers/fake.py @@ -0,0 +1,69 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# -*- encoding: utf-8 -*- +# +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# +# 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. +""" +Fake drivers used in testing. +""" + +from ironic.drivers import base + + +class FakeDeploymentDriver(base.DeploymentDriver): + def __init__(self): + pass + + @classmethod + def is_capable(self): + return True + + def activate_bootloader(self): + pass + + def deactivate_bootloader(self): + pass + + def activate_node(self): + pass + + def deactivate_node(self): + pass + + +class BMCDriver(object): + def __init__(self): + pass + + @classmethod + def is_capable(self): + return True + + def start_console(self): + pass + + def stop_console(self): + pass + + def attach_console(self): + pass + + def get_power_state(self): + pass + + def set_power_state(self): + pass + + def reboot(self): + pass diff --git a/ironic/manager/ipmi.py b/ironic/drivers/ipmi.py similarity index 100% rename from ironic/manager/ipmi.py rename to ironic/drivers/ipmi.py