diff options
Diffstat (limited to 'yardstick/orchestrator/kubernetes.py')
-rw-r--r-- | yardstick/orchestrator/kubernetes.py | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/yardstick/orchestrator/kubernetes.py b/yardstick/orchestrator/kubernetes.py index 6d7045f58..198eeac6d 100644 --- a/yardstick/orchestrator/kubernetes.py +++ b/yardstick/orchestrator/kubernetes.py @@ -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() @@ -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): |