Convert SLA asserts to raises
[yardstick.git] / yardstick / orchestrator / kubernetes.py
index 6d7045f..ac3a09e 100644 (file)
@@ -23,6 +23,7 @@ class KubernetesObject(object):
         self.command = [kwargs.get('command', '/bin/bash')]
         self.args = kwargs.get('args', [])
         self.ssh_key = kwargs.get('ssh_key', 'yardstick_key')
+        self.node_selector = kwargs.get('nodeSelector', {})
 
         self.volumes = []
 
@@ -37,12 +38,13 @@ class KubernetesObject(object):
                 "template": {
                     "metadata": {
                         "labels": {
-                            "app": ""
+                            "app": name
                         }
                     },
                     "spec": {
                         "containers": [],
-                        "volumes": []
+                        "volumes": [],
+                        "nodeSelector": {}
                     }
                 }
             }
@@ -50,6 +52,7 @@ class KubernetesObject(object):
 
         self._change_value_according_name(name)
         self._add_containers()
+        self._add_node_selector()
         self._add_ssh_key_volume()
         self._add_volumes()
 
@@ -71,7 +74,7 @@ class KubernetesObject(object):
 
     def _add_container(self):
         container_name = '{}-container'.format(self.name)
-        ssh_key_mount_path = "/root/.ssh/"
+        ssh_key_mount_path = '/tmp/.ssh/'
 
         container = {
             "args": self.args,
@@ -88,6 +91,11 @@ class KubernetesObject(object):
 
         return container
 
+    def _add_node_selector(self):
+        utils.set_dict_value(self.template,
+                             'spec.template.spec.nodeSelector',
+                             self.node_selector)
+
     def _add_volumes(self):
         utils.set_dict_value(self.template,
                              'spec.template.spec.volumes',
@@ -106,6 +114,35 @@ class KubernetesObject(object):
         self._add_volume(key_volume)
 
 
+class ServiceObject(object):
+
+    def __init__(self, name):
+        self.name = '{}-service'.format(name)
+        self.template = {
+            'metadata': {
+                'name': '{}-service'.format(name)
+            },
+            'spec': {
+                'type': 'NodePort',
+                'ports': [
+                    {
+                        'port': 22,
+                        'protocol': 'TCP'
+                    }
+                ],
+                'selector': {
+                    'app': name
+                }
+            }
+        }
+
+    def create(self):
+        k8s_utils.create_service(self.template)
+
+    def delete(self):
+        k8s_utils.delete_service(self.name)
+
+
 class KubernetesTemplate(object):
 
     def __init__(self, name, template_cfg):
@@ -117,6 +154,8 @@ class KubernetesTemplate(object):
                                           ssh_key=self.ssh_key,
                                           **cfg)
                          for rc, cfg in template_cfg.items()]
+        self.service_objs = [ServiceObject(s) for s in self.rcs]
+
         self.pods = []
 
     def _get_rc_name(self, rc_name):