diff options
Diffstat (limited to 'vnftest/contexts')
-rw-r--r-- | vnftest/contexts/__init__.py | 0 | ||||
-rw-r--r-- | vnftest/contexts/base.py | 71 | ||||
-rw-r--r-- | vnftest/contexts/csar.py | 45 | ||||
-rw-r--r-- | vnftest/contexts/dummy.py | 41 |
4 files changed, 157 insertions, 0 deletions
diff --git a/vnftest/contexts/__init__.py b/vnftest/contexts/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vnftest/contexts/__init__.py diff --git a/vnftest/contexts/base.py b/vnftest/contexts/base.py new file mode 100644 index 0000000..ac1591c --- /dev/null +++ b/vnftest/contexts/base.py @@ -0,0 +1,71 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.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 +# +# 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 +############################################################################## +import abc +import six +import vnftest.common.utils as utils +import yaml + + +@six.add_metaclass(abc.ABCMeta) +class Context(object): + """Class that represents a context in the logical model""" + list = [] + vnf_descriptor = {} + + @classmethod + def load_vnf_descriptor(cls, vnf_descriptor_path): + with open(vnf_descriptor_path) as f: + cls.vnf_descriptor = yaml.safe_load(f) + + @staticmethod + def split_name(name, sep='.'): + try: + name_iter = iter(name.split(sep)) + except AttributeError: + # name is not a string + return None, None + return next(name_iter), next(name_iter, None) + + def __init__(self): + Context.list.append(self) + + @abc.abstractmethod + def init(self, attrs): + """Initiate context.""" + + @staticmethod + def get_cls(context_type): + """Return class of specified type.""" + for context in utils.itersubclasses(Context): + if context_type == context.__context_type__: + return context + raise RuntimeError("No such context_type %s" % context_type) + + @staticmethod + def get(context_type): + """Returns instance of a context for context type. + """ + return Context.get_cls(context_type)() + + def _delete_context(self): + Context.list.remove(self) + + @abc.abstractmethod + def deploy(self): + """Deploy context.""" + + @abc.abstractmethod + def undeploy(self): + """Undeploy context.""" + self._delete_context() diff --git a/vnftest/contexts/csar.py b/vnftest/contexts/csar.py new file mode 100644 index 0000000..2dd4fa4 --- /dev/null +++ b/vnftest/contexts/csar.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.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 +# +# 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 +############################################################################## + +import logging + +from vnftest.contexts.base import Context + +LOG = logging.getLogger(__name__) + + +class CSARContext(Context): + """Class that handle sdc info""" + + __context_type__ = "CSAR" + + def __init__(self): + self.csar_name = None + self.csar_id = None + self.csar_package_location = None + super(CSARContext, self).__init__() + + def init(self, attrs): + """initializes itself from the supplied arguments""" + self.csar_name = attrs.get("csar_name") + self.csar_id = attrs.get("csar_id") + self.csar_package_location = attrs.get("csar_package_location") + + def deploy(self): + """no need to deploy""" + pass + + def undeploy(self): + """no need to undeploy""" + super(CSARContext, self).undeploy() diff --git a/vnftest/contexts/dummy.py b/vnftest/contexts/dummy.py new file mode 100644 index 0000000..04d63ed --- /dev/null +++ b/vnftest/contexts/dummy.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.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 +# +# 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 __future__ import absolute_import +import logging + +from vnftest.contexts.base import Context + + +LOG = logging.getLogger(__name__) + + +class DummyContext(Context): + """Class that handle dummy info""" + + __context_type__ = "Dummy" + + def __init__(self): + super(DummyContext, self).__init__() + + def init(self, attrs): + pass + + def deploy(self): + """don't need to deploy""" + pass + + def undeploy(self): + """don't need to undeploy""" + super(DummyContext, self).undeploy() |