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)