/usr/local/bin/webservice is a Python application used by Toolforge members to start and stop web services for their tools.
There are a number of outstanding bugs and feature requests to make this widely used command nicer:
- T156626: k8s webservice restart failure with `ValueError: get() more than one object; use filter`
- T164245: Webservice stuck in failed restart loop because of corrupt service.manifest
- T140415: `webservice restart` does not always wait for service to stop before trying to start again
- T122515: Possible race condition in webservice HSET/HDEL
- T158244: Improve `webservice status` output
- T148872: Make webservice command read default cli arguments from ~/.webservicerc
- T107878: Limit webservice manifest restarts
- T95097: webservice and webservice-runner have no man pages
- T159892: Make tools-webservice use the official kubernetes python client rather than pykube
- T154506: Make webservice backend for lighttpd default to kubernetes
- T154504: Make webservice backend default to kubernetes
- T183436: Add memory limit configuration for Kubernetes pods
- T141572: Add a nice and simple perl5 webservice type based on modern perl5 principles
- T169695: Run non-interactive commands on Toolforge kubernetes webservices
- T174769: Make it less cumbersome to bootstrap and update python webservices
We are looking for someone who is familiar with Python development to help fix these issues. Familiarity with Toolforge and/or the Wikimedia movement is a plus!
- Source code: rOSTW operations-software-tools-webservice
- Code review: Gerrit
- Chat: #wikimedia-cloud freenode IRC channel
- Mentors: @Andrew, @bd808, @madhuvishy
- Skills needed: Python
Microtask
Here is a series of things that you can do to become familiar with our tools and demonstrate interest in this project:
- Create a new Phabricator task that is a subtask of this task titled "GSoC - webservice microtask for <your Phabricator username>"
- Add a checklist of these steps as the description of the new task:
[] Register for [[https://www.mediawiki.org/wiki/Special:MyLanguage/Developer_access|Developer access]] [] Read the [[https://www.mediawiki.org/wiki/Special:MyLanguage/Gerrit/Tutorial|Gerrit tutorial]] [] Clone [[https://gerrit.wikimedia.org/r/#/admin/projects/operations/software/tools-webservice|the project repository from Gerrit]] [] Read over the source code and try to understand what `scripts/webservice` does when a user runs it as: * `webservice --backend kubernetes start` * `webservice --backend kubernetes stop` [] [[https://www.mediawiki.org/wiki/Gerrit/Tutorial#How_to_submit_a_patch|Submit a patch]] to Gerrit adding a "GSOC-task.<your shell username>.txt" file that describes your understanding of the `webservice --backend kubernetes {start,stop}` commands from the previous step. [] Add `BryanDavis`, `Madhuvishy`, and `Andrew Bogott` as reviewers for your new Gerrit patch.
- Claim the new task you created.
- Do the steps described in the task and mark each step as done "[x]" as you complete it.