Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/298318

Change subject: Add a webservice shell command
......................................................................

Add a webservice shell command

Change-Id: Ie364fcefd06d6bdb929254c210f88bb86034d1ff
---
M scripts/webservice
M toollabs/webservice/backends/kubernetesbackend.py
2 files changed, 42 insertions(+), 1 deletion(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/operations/software/tools-webservice 
refs/changes/18/298318/1

diff --git a/scripts/webservice b/scripts/webservice
index 097ef93..cc82f8b 100755
--- a/scripts/webservice
+++ b/scripts/webservice
@@ -16,7 +16,7 @@
 argparser.add_argument('--backend', help='Which cluster backend to use run the 
webservice',
                        choices=['gridengine', 'kubernetes'])
 argparser.add_argument('action', help='Action to perform',
-                       choices=['start', 'stop', 'status', 'restart'])
+                       choices=['start', 'stop', 'status', 'restart', 'shell'])
 argparser.add_argument('extra_args', help='Extra arguments to be parsed by the 
chosen webservicetype',
                        nargs='?')
 # Backwards compat with older webservice. Allows for webservice --release 
precise lighttpd <action>
@@ -143,4 +143,9 @@
             print('Your webservice is running', end='')
         else:
             print('Your webservice is not running', end='')
+    elif args.action == 'shell':
+        if args.backend != 'kubernetes':
+            print('webservice shell only supported for kubernetes backend')
+            sys.exit()
+        job.shell()
     print()  # End program with newline, don't output newline anywhere else :)
diff --git a/toollabs/webservice/backends/kubernetesbackend.py 
b/toollabs/webservice/backends/kubernetesbackend.py
index afa014a..e5590d8 100644
--- a/toollabs/webservice/backends/kubernetesbackend.py
+++ b/toollabs/webservice/backends/kubernetesbackend.py
@@ -29,6 +29,7 @@
         'python2': {
             'cls': PythonWebService,
             'image': 'toollabs-python2-web',
+            'shell-image': 'toollabs-python2-base',
             'resources': {
                  'limits': {
                     # Pods can't use more than these resource limits
@@ -48,6 +49,9 @@
         super(KubernetesBackend, self).__init__(tool, type, extra_args=None)
 
         self.container_image = 
'docker-registry.tools.wmflabs.org/{image}:latest'.format(
+            image=KubernetesBackend.CONFIG[type]['image']
+        )
+        self.shell_image = 
'docker-registry.tools.wmflabs.org/{image}:latest'.format(
             image=KubernetesBackend.CONFIG[type]['image']
         )
         self.container_resources = KubernetesBackend.CONFIG[type]['resources']
@@ -220,3 +224,35 @@
             # FIXME: Check if pod is running as well
             return Backend.STATE_RUNNING
         return Backend.STATE_STOPPED
+
+    def shell(self):
+        labels = {
+            'tools.wmflabs.org/webservice-interactive': 'true',
+            'tools.wmflabs.org/webservice-interactive-version': '1',
+            'name': 'interactive'
+        }
+        label_selector = ','.join(
+            ['{k}={v}'.format(k=k, v=v) for k, v in labels.items()]
+        )
+
+        podSpec = {
+            'apiVersion': 'v1',
+            'kind': 'Pod',
+            'metadata': {
+                'namespace': self.tool.name,
+                'name': 'interactive',
+                'labels': labels,
+            },
+            'spec': self._get_container_spec(
+                'interactive',
+                self.shell_image,
+                '/bin/bash -i',
+                resources={},
+                ports={},
+                stdin=True,
+                tty=True
+            )
+        }
+        if self._find_obj(pykube.Pod, label_selector) is None:
+            pykube.Pod(self.api, podSpec).create()
+

-- 
To view, visit https://gerrit.wikimedia.org/r/298318
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie364fcefd06d6bdb929254c210f88bb86034d1ff
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/tools-webservice
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to