Brendan Shephard 3ac32b592c Move baremetal provide commands from Ansible
Currently, we leverage Ansible to handle the
baremetal provide process. As part of our efforts
to support work on Tripleo.Next, these Ansible
workflows will need to be migrated to tripleoclient.

This change is consolodating Python methods from
tripleo-ansible into tripleoclient.

Change-Id: I1ff12506d4f6a7d5868aac7128b9f9dc3b8893ff
2022-01-07 00:07:07 +00:00

153 lines
3.6 KiB

# Copyright 2013 Nebula Inc.
# 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
# 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.
"""Exception definitions"""
class Base(Exception):
"""Base TripleO exception."""
class WorkflowServiceError(Base):
"""The service type is unknown"""
class WebSocketConnectionClosed(Base):
"""Websocket connection is closed before wait for messages"""
class NotFound(Base):
"""Resource not found"""
class LookupError(Base):
"""Lookup Error"""
class DeploymentError(Base):
"""Deployment failed"""
class PlanEnvWorkflowError(Base):
"""Plan Environment workflow has failed"""
class ConfigDownloadInProgress(Base):
"""Unable to deploy as config download already in progress"""
msg_format = ("Config download already in progress with "
"execution id {} for stack {}")
def __init__(self, execution_id='', stack=''):
message = self.msg_format.format(execution_id, stack)
super(ConfigDownloadInProgress, self).__init__(message)
class RootUserExecution(Base):
"""Command was executed by a root user"""
class RootDeviceDetectionError(Base):
"""Failed to detect the root device"""
class InvalidConfiguration(Base, ValueError):
"""Invalid parameters were specified for the deployment"""
class IntrospectionError(Base):
"""Introspection failed"""
class RegisterOrUpdateError(WorkflowServiceError):
"""Introspection failed"""
class NodeProvideError(WorkflowServiceError):
"""Node Provide failed."""
class NodeConfigurationError(WorkflowServiceError):
"""Node Configuration failed."""
class ProfileMatchingError(Base):
"""Failed to validate or assign node profiles"""
class PlanCreationError(Base):
"""Plan creation failed"""
class PlanExportError(Base):
"""Plan export failed"""
class WorkflowActionError(Base):
"""Workflow action failed"""
msg_format = "Action {} execution failed: {}"
def __init__(self, action='', output=''):
message = self.msg_format.format(action, output)
super(WorkflowActionError, self).__init__(message)
class DownloadError(Base):
"""Download attempt failed"""
class LogFetchError(Base):
"""Fetching logs failed"""
class ContainerDeleteFailed(Base):
"""Container deletion failed"""
class UndercloudUpgradeNotConfirmed(Base):
"""Undercloud upgrade security question not confirmed."""
class OvercloudUpdateNotConfirmed(Base):
"""Overcloud Update security question not confirmed."""
class OvercloudUpgradeNotConfirmed(Base):
"""Overcloud Update security question not confirmed."""
class CellExportError(Base):
"""Cell export failed"""
class BannedParameters(Base):
"""Some of the environment parameters provided should be removed"""
class HeatPodMessageQueueException(Base):
"""Heat messaging queue not created"""
class InvalidPlaybook(Base):
"""Invalid playbook path specified"""
class NoNodeFound(Base):
"""No nodes matching specifications found"""
def __init__(self):
message = "No nodes matching specifications could be found. "
super(NoNodeFound, self).__init__(message)