Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1728)

Unified Diff: appengine/swarming/elements/res/imp/botpage/bot-page-data.html

Issue 2283133002: Add bot-page stubs (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-py@master
Patch Set: Makefile should download demo json Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/swarming/elements/res/imp/botpage/bot-page-data.html
diff --git a/appengine/swarming/elements/res/imp/botpage/bot-page-data.html b/appengine/swarming/elements/res/imp/botpage/bot-page-data.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0e8e0a981ad649b6a8ceda86bcdf830be8a37cb
--- /dev/null
+++ b/appengine/swarming/elements/res/imp/botpage/bot-page-data.html
@@ -0,0 +1,148 @@
+<!--
+ Copyright 2016 The LUCI Authors. All rights reserved.
+ Use of this source code is governed under the Apache License, Version 2.0
+ that can be found in the LICENSE file.
+
+ This in an HTML Import-able file that contains the definition
+ of the following elements:
+
+ <bot-page-data>
+
+ This makes calls authenticated with Oauth 2 to the swarming apis. It parses
+ that data into usable data structures.
+
+ Properties:
+ busy: Boolean, if we are fetching any data from the server.
+ bot: Object, The information about the bot. See swarming_rpcs.py#BotInfo
+ for all relevent fields.
+ events: Array<Object>, The most recent events that pertain to this bot.
+ Contains the following fields: "event_type", "message", "ts" (timestamp),
+ "quarantined", "version".
+ tasks: Array<Object>, The most recent tasks done by this bot.
+ Contains the following fields: "abandoned_ts", "bot_version", "duration",
+ "failure", "internal_failure", "modified_ts", "name", "started_ts",
+ "state", "task_id", "try_number".
+
+ Methods:
+ request(): Force a fetch of the data. This happens automatically when
+ auth_headers is set or bot_id is changed.
+
+ Events:
+ None.
+-->
+
+
+<link rel="import" href="/res/imp/common/common-behavior.html">
+
+<dom-module id="bot-page-data">
+ <script>
+ (function(){
+
+ Polymer({
+ is: 'bot-page-data',
+
+ behaviors: [
+ SwarmingBehaviors.CommonBehavior,
+ ],
+
+ properties: {
+ // inputs
+ auth_headers: {
+ type: Object,
+ },
+ bot_id: {
+ type: String,
+ },
+
+ // outputs
+ busy: {
+ type: Boolean,
+ computed: "_or(_busy1,_busy2,_busy3)",
+ notify: true,
+ },
+ bot: {
+ type: Object,
+ computed: "_parseBot(_bot)",
+ notify: true,
+ },
+ events: {
+ type: Array,
+ computed: "_parseEvents(_events)",
+ notify: true,
+ },
+ tasks: {
+ type: Array,
+ computed: "_parseTasks(_tasks)",
+ notify: true,
+ },
+
+ // private
+ _busy1: {
+ type: Boolean,
+ value: false
+ },
+ _busy2: {
+ type: Boolean,
+ value: false
+ },
+ _busy3: {
+ type: Boolean,
+ value: false
+ },
+ _bot: {
+ type: Object,
+ },
+ _events: {
+ type: Object,
+ },
+ _tasks: {
+ type: Object,
+ },
+ },
+
+ observers: [
+ "request(auth_headers,bot_id)",
+ ],
+
+ request: function(){
+ if (!this.bot_id || !this.auth_headers) {
+ console.log("bot_id and auth_headers can't be empty");
+ return;
+ }
+ var baseUrl = "/_ah/api/swarming/v1/bot/"+this.bot_id;
+ this._getJsonAsync("_bot", baseUrl + "/get",
+ "_busy1", this.auth_headers);
+ // We limit the fields on these two queries to make them faster.
+ this._getJsonAsync("_events",
+ baseUrl + "/events?fields=items(event_type%2Cmessage%2Cquarantined%2Ctask_id%2Cts%2Cversion)",
+ "_busy2", this.auth_headers);
+ this._getJsonAsync("_tasks",
+ baseUrl + "/tasks?fields=items(abandoned_ts%2Cbot_version%2Ccompleted_ts%2Cduration%2Cexit_code%2Cfailure%2Cinternal_failure%2Cmodified_ts%2Cname%2Cstarted_ts%2Cstate%2Ctask_id%2Ctry_number)",
+ "_busy3", this.auth_headers);
+ },
+
+ _parseBot: function(bot) {
+ if (!bot) {
+ return {};
+ }
+ return bot;
+ },
+
+ _parseEvents: function(events) {
+ if (!events || !events.items) {
+ return [];
+ }
+ return events.items;
+ },
+
+ _parseTasks: function(tasks) {
+ if (!tasks || !tasks.items) {
+ return [];
+ }
+ return tasks.items;
+ }
+
+ });
+ })();
+ </script>
+</dom-module>

Powered by Google App Engine
This is Rietveld 408576698