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