From ff3cd7a245840606b09322c7705f8a64cf1868f2 Mon Sep 17 00:00:00 2001 From: John O'Loughlin Date: Thu, 17 May 2018 15:06:53 +0000 Subject: Add "ports" parameters in Kubernetes context This new parameter, "ports", will allow the user to automatically to add port variables in a pod definition: context: type: Kubernetes servers: host: image: ... commands: ... ports: - containerPort: # Mandatory hostIP: # Optional hostPort: # Optional name: # Optional protocol: # Optional The port type and the definition must be one of the supported ones in Kubernetes [1]. Container port definition, V1 API, Kubernetes Python library v6.0.0 [2] [1] https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/ [2] https://github.com/kubernetes-client/python/blob/6.0.0/kubernetes/client/models/v1_container_port.py JIRA: YARDSTICK-1183 Change-Id: I3673dbeec8d380cb2f8b1dacf6c25c7cdbc37e28 Signed-off-by: John O Loughlin --- yardstick/orchestrator/kubernetes.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'yardstick/orchestrator/kubernetes.py') diff --git a/yardstick/orchestrator/kubernetes.py b/yardstick/orchestrator/kubernetes.py index 2c401fc93..6fd3fa640 100644 --- a/yardstick/orchestrator/kubernetes.py +++ b/yardstick/orchestrator/kubernetes.py @@ -22,7 +22,8 @@ class ContainerObject(object): SSH_MOUNT_PATH = '/tmp/.ssh/' IMAGE_DEFAULT = 'openretriever/yardstick' COMMAND_DEFAULT = '/bin/bash' - RESOURCES = ['requests', 'limits'] + RESOURCES = ('requests', 'limits') + PORT_OPTIONS = ('containerPort', 'hostIP', 'hostPort', 'name', 'protocol') def __init__(self, name, ssh_key, **kwargs): self._name = name @@ -34,6 +35,7 @@ class ContainerObject(object): self._security_context = kwargs.get('securityContext') self._env = kwargs.get('env', []) self._resources = kwargs.get('resources', {}) + self._ports = kwargs.get('ports', []) def _create_volume_mounts(self): """Return all "volumeMounts" items per container""" @@ -66,6 +68,15 @@ class ContainerObject(object): for env in self._env: container['env'].append({'name': env['name'], 'value': env['value']}) + if self._ports: + container['ports'] = [] + for port in self._ports: + if 'containerPort' not in port.keys(): + raise exceptions.KubernetesContainerPortNotDefined( + port=port) + _port = {port_option: value for port_option, value + in port.items() if port_option in self.PORT_OPTIONS} + container['ports'].append(_port) if self._resources: container['resources'] = {} for res in (res for res in self._resources if -- cgit 1.2.3-korg