Combines all exceptions into a single file

This change moves spyglass-plugin-xls's necessary exception definitions
locally into the spyglass-plugin-xls project and changes their base
to the SpyglassBaseException class. This change must be merged before
Spyglass's exceptions may be consolidated.

Related Change: https://review.opendev.org/#/c/667240/

Change-Id: I81c5ca2d9083aece3641bc8b5405dfd44baec810
This commit is contained in:
Ian H. Pittwood 2019-06-24 17:41:48 -05:00 committed by Ian H Pittwood
parent e84b80c32d
commit b0f7b952b4
6 changed files with 35 additions and 61 deletions

View File

@ -1,52 +0,0 @@
# Copyright 2019 AT&T Intellectual Property. All other 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.
class BaseError(Exception):
pass
class NotEnoughIp(BaseError):
def __init__(self, cidr, total_nodes):
self.cidr = cidr
self.total_nodes = total_nodes
def display_error(self):
print("{} can not handle {} nodes".format(self.cidr, self.total_nodes))
class NoSpecMatched(BaseError):
def __init__(self, excel_specs):
self.specs = excel_specs
def display_error(self):
print(
"No spec matched. Following are the available specs:\n".format(
self.specs))
class ExcelFileNotSpecified(BaseError):
@staticmethod
def display_error():
print("Engineering excel file not specified")
class ExcelSpecNotSpecified(BaseError):
@staticmethod
def display_error():
print("Engineering excel spec not specified")

View File

@ -16,12 +16,13 @@ import itertools
import logging
import pprint
import re
from spyglass.data_extractor.base import BaseDataSourcePlugin
from spyglass.data_extractor import models
from spyglass_plugin_xls.check_exceptions import ExcelFileNotSpecified
from spyglass_plugin_xls.check_exceptions import ExcelSpecNotSpecified
from spyglass_plugin_xls.excel_parser import ExcelParser
from spyglass_plugin_xls.exceptions import ExcelFileNotSpecified
from spyglass_plugin_xls.exceptions import ExcelSpecNotSpecified
LOG = logging.getLogger(__name__)

View File

@ -20,9 +20,7 @@ import re
import sys
import yaml
from spyglass.data_extractor.custom_exceptions import NoSpecMatched
# from spyglass.data_extractor.custom_exceptions
from spyglass_plugin_xls.exceptions import NoSpecMatched
LOG = logging.getLogger(__name__)
@ -77,7 +75,7 @@ class ExcelParser(object):
self.excel_specs["specs"][spec]["ipmi_sheet_name"] = sheet
if self.validate_sheet(spec, sheet):
return spec
raise NoSpecMatched(self.excel_specs)
raise NoSpecMatched(excel_specs=self.excel_specs)
def _get_workbook(self):
provided_sheetname = self.excel_specs["specs"][

View File

@ -0,0 +1,27 @@
# Copyright 2019 AT&T Intellectual Property. All other 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 spyglass.exceptions import SpyglassBaseException
class NoSpecMatched(SpyglassBaseException):
message = 'No spec matched. The available specs are: %(excel_specs)'
class ExcelFileNotSpecified(SpyglassBaseException):
message = 'Engineering excel file not specified'
class ExcelSpecNotSpecified(SpyglassBaseException):
message = 'Engineering excel spec not specified'

View File

@ -20,10 +20,10 @@ from unittest import mock
import pytest
from spyglass.data_extractor import models
from spyglass_plugin_xls.check_exceptions import ExcelFileNotSpecified
from spyglass_plugin_xls.check_exceptions import ExcelSpecNotSpecified
from spyglass_plugin_xls.excel import ExcelPlugin
from spyglass_plugin_xls.excel_parser import ExcelParser
from spyglass_plugin_xls.exceptions import ExcelFileNotSpecified
from spyglass_plugin_xls.exceptions import ExcelSpecNotSpecified
FIXTURE_DIR = os.path.join(
os.path.dirname(os.path.dirname(__file__)), 'shared')

View File

@ -18,7 +18,7 @@ import unittest
from openpyxl import Workbook
from openpyxl.worksheet.worksheet import Worksheet
import pytest
from spyglass.data_extractor.custom_exceptions import NoSpecMatched
from spyglass_plugin_xls.exceptions import NoSpecMatched
import yaml
from spyglass_plugin_xls.excel_parser import ExcelParser