| OLD | NEW |
| (Empty) |
| 1 {% extends "swarming/base.html" %} | |
| 2 | |
| 3 | |
| 4 {% block headers %} | |
| 5 <script src="/third_party/webcomponentsjs/webcomponents.min.js"></script> | |
| 6 <style> | |
| 7 .highlight_section { | |
| 8 background-color: #ffffee; | |
| 9 border-radius: 20px; | |
| 10 padding: 10px; | |
| 11 } | |
| 12 .admin a { | |
| 13 {% if not is_admin %} | |
| 14 color: gray; | |
| 15 text-decoration: line-through; | |
| 16 {% endif %} | |
| 17 } | |
| 18 .command { | |
| 19 font-family: monospace; | |
| 20 margin-bottom: 10px; | |
| 21 margin-top: 10px; | |
| 22 white-space: pre-wrap; | |
| 23 } | |
| 24 .privileged_user a { | |
| 25 {% if not is_privileged_user %} | |
| 26 color: gray; | |
| 27 text-decoration: line-through; | |
| 28 {% endif %} | |
| 29 } | |
| 30 .user a { | |
| 31 {% if not is_user %} | |
| 32 color: gray; | |
| 33 text-decoration: line-through; | |
| 34 {% endif %} | |
| 35 } | |
| 36 stats-overview { | |
| 37 min-width: 600px; | |
| 38 } | |
| 39 </style> | |
| 40 {% endblock %} | |
| 41 | |
| 42 | |
| 43 {% block body %} | |
| 44 | |
| 45 <h1>Swarming Server</h1> | |
| 46 <div layout horizontal> | |
| 47 <div> | |
| 48 <div class=highlight_section> | |
| 49 Swarming Server is an open source task distribution service. It is written | |
| 50 in python and runs on <a | |
| 51 href="https://cloud.google.com/appengine/">AppEngine</a>. It is part of | |
| 52 <a href="https://github.com/luci/luci-py">LUCI</a>. | |
| 53 </div> | |
| 54 <p> | |
| 55 | |
| 56 {% if user_type %} | |
| 57 As a {{user_type}}, you are entitled to see these pages: | |
| 58 {% else %} | |
| 59 Please <a href="{{signin_link|safe}}">sign in</a> for more access. | |
| 60 {% endif %} | |
| 61 | |
| 62 <h3>Service Status</h3> | |
| 63 <ul> | |
| 64 <li class="user"><a href="/stats">Usage statistics</a></li> | |
| 65 <li class="admin"><a href="/restricted/ereporter2/report">Exceptions in se
rver log</a></li> | |
| 66 <li class="admin"><a href="/restricted/ereporter2/errors">Ereporter2 error
s</a></li> | |
| 67 <li class="admin"><a href="/restricted/mapreduce/status">Map reduce jobs</
a></li> | |
| 68 <li class="admin"> | |
| 69 <a href="https://console.cloud.google.com/appengine?project={{app_id|utf
8}}&versionId={{app_version|utf8}}&duration=P2D&graph=AE_INSTANCES">View instanc
es on AppEngine</a> | |
| 70 </li> | |
| 71 <li class="admin"> | |
| 72 <a href="https://console.cloud.google.com/appengine?project={{app_id|utf
8}}&versionId={{app_version|utf8}}&duration=P2D&graph=AE_ERROR_DETAILS">View HTT
P 4xx/5xx on AppEngine</a> | |
| 73 </li> | |
| 74 </ul> | |
| 75 | |
| 76 <h3>Configuration</h3> | |
| 77 <ul class="admin"> | |
| 78 <li><a href="/restricted/config">Server config</a></li> | |
| 79 <li><a href="/restricted/upload/bootstrap">bootstrap.py</a></li> | |
| 80 <li><a href="/restricted/upload/bot_config">bot_config.py</a></li> | |
| 81 <li><a href="/auth/groups">User groups</a></li> | |
| 82 </ul> | |
| 83 | |
| 84 <h3>Running a bot</h3> | |
| 85 {% if is_bootstrapper %} | |
| 86 To bootstrap a bot, run one of these (all links are valid for 1 hour): | |
| 87 {% else %} | |
| 88 To bootstrap a bot, an admin can run one of these: | |
| 89 {% endif %} | |
| 90 <ol> | |
| 91 <li> | |
| 92 <strong> TL;DR; </strong> | |
| 93 <pre class="command">python -c "import urllib; exec urllib.urlopen('{{host_url}}
/bootstrap?tok={{bootstrap_token}}').read()"</pre> | |
| 94 </li> | |
| 95 <li> | |
| 96 Escaped version to pass as a ssh argument: | |
| 97 <pre class="command">'python -c "import urllib; exec urllib.urlopen('"'{{host_ur
l}}/bootstrap?tok={{bootstrap_token}}'"').read()"'</pre> | |
| 98 </li> | |
| 99 <li> | |
| 100 Manually: | |
| 101 <pre class="command" style="margin-bottom:0">mkdir bot; cd bot | |
| 102 rm -f swarming_bot.zip; curl -sSLOJ {{host_url}}/bot_code?tok={{bootstrap_token}
} | |
| 103 python swarming_bot.zip</pre> | |
| 104 </li> | |
| 105 </ol> | |
| 106 </li> | |
| 107 | |
| 108 {% if is_admin %} | |
| 109 <h3>Map reduce jobs</h3> | |
| 110 <ul class="admin"> | |
| 111 {% for job in mapreduce_jobs %} | |
| 112 <li> | |
| 113 <form action="/restricted/launch_mapreduce" method="post"> | |
| 114 <input type="hidden" name="xsrf_token" value="{{xsrf_token}}" /> | |
| 115 <input type="hidden" name="job_id" value="{{job.id}}" /> | |
| 116 <button type="submit">Launch '{{job.name}}'</button> | |
| 117 </form> | |
| 118 </li> | |
| 119 {% endfor %} | |
| 120 </ul> | |
| 121 {% endif %} | |
| 122 </div> | |
| 123 <stats-overview flex></stats-overview> | |
| 124 </div> | |
| 125 | |
| 126 {% endblock %} | |
| OLD | NEW |