{"id":19989649,"url":"https://github.com/wavesoft/dumbq","last_synced_at":"2026-05-11T11:39:38.989Z","repository":{"id":26516784,"uuid":"29969612","full_name":"wavesoft/dumbq","owner":"wavesoft","description":"A very simple service that starts multiple project agents inside a micro-cernvm distribution in isolated linux containers.","archived":false,"fork":false,"pushed_at":"2016-02-16T10:59:43.000Z","size":916,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T20:02:11.834Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wavesoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-28T13:53:29.000Z","updated_at":"2016-02-16T10:59:44.000Z","dependencies_parsed_at":"2022-08-24T14:56:50.743Z","dependency_job_id":null,"html_url":"https://github.com/wavesoft/dumbq","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoft%2Fdumbq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoft%2Fdumbq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoft%2Fdumbq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoft%2Fdumbq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wavesoft","download_url":"https://codeload.github.com/wavesoft/dumbq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241430321,"owners_count":19961635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T04:48:49.708Z","updated_at":"2026-05-11T11:39:38.937Z","avatar_url":"https://github.com/wavesoft.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DumbQ\n\nA very simple service that starts multiple project agents inside a micro-cernvm distribution in isolated linux containers.\n\n## How it works?\n\nThere is a configuration file in a server, where you define the different projects you have and the chance of each of these projects to be selected by a  volunteer's computer.\n\nWhen the VM is booted, the script will fetch this configuration, roll a dice and depending on the result, pick one of the projects defined in the configuration and start it.\n\nEach project is started in a new CernVM fork, running in an isolated linux container. For more details on this check the `cernvm-fork` utility.\n\nIn principle if your project agent runs in CernVM or in SLC6, you are ready to use this utility off-the-shelf.\n\n# Server-Side\n\nThe ONLY thing you need on the server is a text file served by a webserver in the following syntax:\n\n    # Comments start with '#'\n    # Each line defines a project in the following way:\n    #  \u003cproject\u003e : \u003cstart chance %\u003e : \u003ccvmfs\u003e[,\u003ccvmfs\u003e...] : \u003cbootstrap\u003e\n    #\n    # Example:\n    test-app:80:sft.cern.ch:sft.cern.ch/lcg/experimental/test-app-bootstrap.sh\n\nEach colon-seprated parameter has the following meaning:\n\n * `\u003cproject\u003e` : A short name for the project\n * `\u003cstart chance %\u003e` : The chance this project has to be selected (0 = never, 100 = always)\n * `\u003ccvmfs\u003e[,\u003ccvmfs\u003e...]` : A  comma-separated list of cvmfs repositories this project requires to be mounted\n * `\u003cbootstrap\u003e` : A bootstrap application to be executed within the container. Whatever you enter in this field is *already* prefixed with `/cvmfs/`. Therefore `sft.cern.ch/lcg/experimental/test.sh` will be translated to `/cvmfs/sft.cern.ch/lcg/experimental/test.sh`.\n\nThe benefit from using this script instead of a proper job queue is that you can have **any** kind of job queue within the container, therefore allowing diverse projects to share the same resources.\n\n_Note: Something to keep in mind is that the chances of all the projects should sum up to 100%._\n\n# Client-Side\n\nOn the client side you have only the `dumbq-client.sh` script that should be run at the moment you want to start the containers (usually after system boot). No additional parameters are required.\n\nThe script will remain alive and monitor the status of the containers and if a container goes down it will try to re-start it (or the next available).\n\n## Overriding chances\n\nIf you want (from the user-side) to change the chances of each project to be selected, you can do so by creating the `/var/lib/dumbq/preference.conf` \n\n## Securing the configuration\n\nIf you want to be 100% sure that the configuration file is not tampered, you can use SSL and provide the public certificate of your server. Just modify the dumbq-client.sh and provide the required information in the configuration section:\n\n    CONFIG_SOURCE=\"https://myserver/dumbq.conf\"\n    CONFIG_SSL_CERTS=\"/path/to/server_cert_path.pem\"\n    CONFIG_SSL_CAPATH=\"/path/to/CA/list\"\n\nThe script will automatically supply the required information to CURL.\n\n# Requirements\n\nThis script requires the following utilities to exist in the distribution:\n\n * `cernvm-fork` (available from https://github.com/wavesoft/cernvm-fork)\n\n# License\n\nDumbQ - A very simple project scheduler\n\nCopyright (C) 2015  Ioannis Charalampidis, PH-SFT, CERN\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesoft%2Fdumbq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwavesoft%2Fdumbq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesoft%2Fdumbq/lists"}