Added 'k8s_deployed' fixture
Created a separate fixture for Kubernetes deployment.
Modified existing k8s related fixtures / tests so they
use it now and updated templates with k8s environments.
Also this patch includes few minor changes:
* removed unused fixture 'deploy_openstack' which
was a full copy of 'openstack_deployed' fixture;
* removed unused modules imports;
* fixed typos and docstrings.
Change-Id: Ic35551f3e52913cede753b92e7d5a81f54570b01
Reviewed-on: https://review.gerrithub.io/365234
Reviewed-by: <vrovachev@mirantis.com>
Reviewed-by: Dennis Dmitriev <dis.xcom@gmail.com>
Tested-by: Tatyanka Leontovich <tleontovich@mirantis.com>
diff --git a/tcp_tests/managers/k8s/base.py b/tcp_tests/managers/k8s/base.py
new file mode 100644
index 0000000..7adb41a
--- /dev/null
+++ b/tcp_tests/managers/k8s/base.py
@@ -0,0 +1,108 @@
+# Copyright 2017 Mirantis, 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
+
+
+class K8sBaseResource(object):
+ """docstring for K8sBaseResource"""
+
+ def __init__(self, manager, data):
+ self._manager = manager
+ self._add_details(data)
+
+ def __repr__(self):
+ reprkeys = sorted(k
+ for k in self.__dict__.keys()
+ if k[0] != '_' and
+ k not in ['manager'])
+ info = ", ".join("%s=%s" % (k, getattr(self, k)) for k in reprkeys)
+ return "<%s %s>" % (self.__class__.__name__, info)
+
+ @property
+ def api_version(self):
+ return self._data.api_version
+
+ def _add_details(self, data):
+ self._data = data
+ for k in [k for k in dir(data)
+ if not any((k.startswith('_'), k in ('to_dict', 'to_str')))]:
+ try:
+ setattr(self, k, getattr(data, k))
+ except AttributeError:
+ # In this case we already defined the attribute on the class
+ pass
+
+ def __eq__(self, other):
+ if not isinstance(other, K8sBaseResource):
+ return NotImplemented
+ # two resources of different types are not equal
+ if not isinstance(other, self.__class__):
+ return False
+ return self._info == other._info
+
+
+class K8sBaseManager(object):
+
+ resource_class = None
+
+ def __init__(self, api, namespace):
+ self._api = api
+ self._namespace = namespace
+ self._raw = None
+
+ @property
+ def api(self):
+ return self._api
+
+ @property
+ def namespace(self):
+ return self._namespace
+
+ def get(self, *args, **kwargs):
+ if not hasattr(self, '_get'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_get'))
+
+ return self.resource_class(self, self._get(*args, **kwargs))
+
+ def list(self, *args, **kwargs):
+ if not hasattr(self, '_list'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_list'))
+
+ lst = self._list(*args, **kwargs)
+
+ return [self.resource_class(self, item) for item in lst.items]
+
+ def create(self, *args, **kwargs):
+ if not hasattr(self, '_create'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_create'))
+ return self.resource_class(self, self._create(*args, **kwargs))
+
+ def replace(self, *args, **kwargs):
+ if not hasattr(self, '_replace'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_replace'))
+ return self._replace(*args, **kwargs)
+
+ def delete(self, *args, **kwargs):
+ if not hasattr(self, '_delete'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_delete'))
+ return self._delete(*args, **kwargs)
+
+ def deletecollection(self, *args, **kwargs):
+ if not hasattr(self, '_deletecollection'):
+ raise NotImplementedError(
+ '{} does not have {}'.format(self, '_deletecollection'))
+ return self._deletecollection(*args, **kwargs)