1d2547cc7f
Extend the overcloud node provision command to run ansible playbooks defined in the baremetal deployment definition against the provisioned nodes. To ensure the playbook is applied prior to node network configuration set 'pre_network: true'. Additonal ansible vars can be defined as 'extra_vars' for each ansible playbook definition. Implements: blueprint network-data-v2-ports Depends-On: https://review.opendev.org/786045 Change-Id: I67a15f637a62e2cb683e6e160483201f7ba093e9
150 lines
3.4 KiB
Python
150 lines
3.4 KiB
Python
# 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
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
|
|
"""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 PlaybookNotFound(NotFound):
|
|
"""Playbook not found"""
|
|
|
|
|
|
class InvalidPlaybook(Base):
|
|
"""Invalid playbook path specified"""
|