diff options
| author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-12-05 15:19:55 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-12-18 10:24:06 +0000 |
| commit | aa9816ad79ca34000c1cb0cdc4d35b5fc09a9ba3 (patch) | |
| tree | 0c902d4bdf2bab05b1740c63cbe3735707b5394f /bitbake/lib/toaster/toastergui/templates/builddashboard.html | |
| parent | 85a17f86ea2edf24b54aa62bd25e10ff522cb6e7 (diff) | |
| download | poky-aa9816ad79ca34000c1cb0cdc4d35b5fc09a9ba3.tar.gz | |
bitbake: toastergui: implement UI changes to allow file download
This patchset adds download links in the build analisys pages
if toaster runs in managed mode. This allows the user to access
data directly from the web interface.
[YOCTO #6837]
(Bitbake rev: 6000e1ae5c846e51932ecd0dc21e0fa02eb10357)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates/builddashboard.html')
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/builddashboard.html | 131 |
1 files changed, 91 insertions, 40 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html index e682094305..2458cdb6d1 100644 --- a/bitbake/lib/toaster/toastergui/templates/builddashboard.html +++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html | |||
| @@ -42,9 +42,9 @@ | |||
| 42 | {% if build.toaster_exceptions.count > 0 %} | 42 | {% if build.toaster_exceptions.count > 0 %} |
| 43 | <div class="row"> | 43 | <div class="row"> |
| 44 | <small class="pull-right"> | 44 | <small class="pull-right"> |
| 45 | <i class="icon-question-sign get-help get-help-blue" title="" data-original-title="Toaster exceptions do not affect your build: only the operation of Toaster"></i> | 45 | <i class="icon-question-sign get-help get-help-blue" title="" data-original-title="Toaster exceptions do not affect your build: only the operation of Toaster"></i> |
| 46 | <a class="show-exceptions" href="#exceptions">Toaster threw {{build.toaster_exceptions.count}} exception{{build.toaster_exceptions.count|pluralize}}</a> | 46 | <a class="show-exceptions" href="#exceptions">Toaster threw {{build.toaster_exceptions.count}} exception{{build.toaster_exceptions.count|pluralize}}</a> |
| 47 | </small> | 47 | </small> |
| 48 | </div> | 48 | </div> |
| 49 | {% endif %} | 49 | {% endif %} |
| 50 | </div> | 50 | </div> |
| @@ -54,6 +54,9 @@ | |||
| 54 | <div class="accordion span10 pull-right" id="errors"> | 54 | <div class="accordion span10 pull-right" id="errors"> |
| 55 | <div class="accordion-group"> | 55 | <div class="accordion-group"> |
| 56 | <div class="accordion-heading"> | 56 | <div class="accordion-heading"> |
| 57 | {% if MANAGED and build.project %} | ||
| 58 | <a class="btn btn-large pull-right" href="{% url 'build_artifact' build.id "cookerlog" build.id %}" style="margin:15px;">Download build log</a> | ||
| 59 | {% endif %} | ||
| 57 | <a class="accordion-toggle error toggle-errors"> | 60 | <a class="accordion-toggle error toggle-errors"> |
| 58 | <h2 id="error-toggle"> | 61 | <h2 id="error-toggle"> |
| 59 | <i class="icon-minus-sign"></i> | 62 | <i class="icon-minus-sign"></i> |
| @@ -66,13 +69,10 @@ | |||
| 66 | <div class="span10"> | 69 | <div class="span10"> |
| 67 | {% for error in logmessages %}{% if error.level == 2 %} | 70 | {% for error in logmessages %}{% if error.level == 2 %} |
| 68 | <div class="alert alert-error"> | 71 | <div class="alert alert-error"> |
| 69 | {% if MANAGED and error.pathname %} | ||
| 70 | <pre><a href="{% url 'build_artifact' build.pk 'logmessagefile' error.pk %}" target="_blanc">{{error.message}}</pre> | ||
| 71 | {% else %} | ||
| 72 | <pre>{{error.message}}</pre> | 72 | <pre>{{error.message}}</pre> |
| 73 | {% endif %} | ||
| 74 | </div> | 73 | </div> |
| 75 | {% endif %}{% endfor %} | 74 | {% endif %} |
| 75 | {% endfor %} | ||
| 76 | </div> | 76 | </div> |
| 77 | </div> | 77 | </div> |
| 78 | </div> | 78 | </div> |
| @@ -84,21 +84,21 @@ | |||
| 84 | <!-- built images --> | 84 | <!-- built images --> |
| 85 | {% if hasImages %} | 85 | {% if hasImages %} |
| 86 | <div class="row-fluid span10 pull-right"> | 86 | <div class="row-fluid span10 pull-right"> |
| 87 | <h2>Images</h2> | 87 | <h2>Images</h2> |
| 88 | {% for target in targets %} | 88 | {% for target in targets %} |
| 89 | {% if target.target.is_image %} | 89 | {% if target.target.is_image %} |
| 90 | <div class="well dashboard-section"> | 90 | <div class="well dashboard-section"> |
| 91 | <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a> | 91 | <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a> |
| 92 | </h3> | 92 | </h3> |
| 93 | <dl class="dl-horizontal"> | 93 | <dl class="dl-horizontal"> |
| 94 | <dt>Packages included</dt> | 94 | <dt>Packages included</dt> |
| 95 | <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd> | 95 | <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd> |
| 96 | <dt>Total package size</dt> | 96 | <dt>Total package size</dt> |
| 97 | <dd>{{target.pkgsz|filtered_filesizeformat}}</dd> | 97 | <dd>{{target.pkgsz|filtered_filesizeformat}}</dd> |
| 98 | {% if target.targetHasNoImages %} | 98 | {% if target.targetHasNoImages %} |
| 99 | </dl> | 99 | </dl> |
| 100 | <div class="row-fluid"> | 100 | <div class="row-fluid"> |
| 101 | <div class="alert alert-info span7"> | 101 | <div class="alert alert-info span7"> |
| 102 | <p> | 102 | <p> |
| 103 | <b>This build did not create any image files</b> | 103 | <b>This build did not create any image files</b> |
| 104 | </p> | 104 | </p> |
| @@ -111,30 +111,45 @@ | |||
| 111 | license manifest information</a> in Toaster. | 111 | license manifest information</a> in Toaster. |
| 112 | </p> | 112 | </p> |
| 113 | </div> | 113 | </div> |
| 114 | </div> | 114 | </div> |
| 115 | {% else %} | 115 | {% else %} |
| 116 | <dt> | 116 | <dt> |
| 117 | <i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i> | 117 | <i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i> |
| 118 | <a href="{% url 'targetpkg' build.pk target.target.pk %}">License manifest</a> | 118 | |
| 119 | </dt> | 119 | {% if MANAGED and build.project %} |
| 120 | <dd><code>{{target.target.license_manifest_path}}</code></dd> | 120 | License manifest |
| 121 | <dt> | 121 | {% else %} |
| 122 | <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i> | 122 | <a href="{% url 'targetpkg' build.pk target.target.pk %}">License manifest</a> |
| 123 | Image files | 123 | {% endif %} |
| 124 | </dt> | 124 | </dt> |
| 125 | <dd> | 125 | {% if MANAGED and build.project %} |
| 126 | <ul> | 126 | <dd> |
| 127 | <a href="{% url 'targetpkg' build.pk target.target.pk %}">View in Toaster</a> | | ||
| 128 | <a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd> | ||
| 129 | {% else %} | ||
| 130 | <dd><code>{{target.target.license_manifest_path}}</code></dd> | ||
| 131 | {% endif %} | ||
| 132 | <dt> | ||
| 133 | <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i> | ||
| 134 | Image files | ||
| 135 | </dt> | ||
| 136 | <dd> | ||
| 137 | <ul> | ||
| 127 | {% for i in target.imageFiles %} | 138 | {% for i in target.imageFiles %} |
| 128 | <li>{{i.path}} | 139 | {% if build.project %} |
| 129 | ({{i.size|filtered_filesizeformat}})</li> | 140 | <li><a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">{{i.path}}</a> |
| 141 | {% else %} | ||
| 142 | <li>{{i.path}} | ||
| 143 | {% endif %} | ||
| 144 | ({{i.size|filtered_filesizeformat}})</li> | ||
| 130 | {% endfor %} | 145 | {% endfor %} |
| 131 | </ul> | 146 | </ul> |
| 132 | </dd> | 147 | </dd> |
| 133 | </dl> | 148 | </dl> |
| 134 | {% endif %} | 149 | {% endif %} |
| 135 | </div> | 150 | </div> |
| 136 | {% endif %} | 151 | {% endif %} |
| 137 | {% endfor %} | 152 | {% endfor %} |
| 138 | </div> | 153 | </div> |
| 139 | {% endif %} | 154 | {% endif %} |
| 140 | 155 | ||
| @@ -142,6 +157,35 @@ | |||
| 142 | <!-- error dump --> | 157 | <!-- error dump --> |
| 143 | {%endif%} | 158 | {%endif%} |
| 144 | 159 | ||
| 160 | <!-- other artifacts --> | ||
| 161 | {% if build.buildartifact_set.all.count > 0 %} | ||
| 162 | <div class="row-fluid span10 pull-right"> | ||
| 163 | <h2>Other artifacts</h2> | ||
| 164 | |||
| 165 | <div class="well dashboard-section"> | ||
| 166 | <dl class="dl-horizontal"> | ||
| 167 | <dt> | ||
| 168 | <i class="icon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></i> | ||
| 169 | Other artifacts</dt> | ||
| 170 | <dd><div> | ||
| 171 | {% for ba in build.buildartifact_set.all|dictsort:"file_name" %} | ||
| 172 | {% if MANAGED and build.project %} | ||
| 173 | <a href="{%url 'build_artifact' build.id 'buildartifact' ba.id %}"> | ||
| 174 | {% endif %} | ||
| 175 | {{ba.get_local_file_name}} | ||
| 176 | {% if MANAGED and build.project %} | ||
| 177 | </a> | ||
| 178 | {% endif %} | ||
| 179 | |||
| 180 | ({{ba.file_size|filtered_filesizeformat}}) <br/> | ||
| 181 | {% endfor %} | ||
| 182 | </div> | ||
| 183 | </dd> | ||
| 184 | |||
| 185 | </div> | ||
| 186 | |||
| 187 | </div> | ||
| 188 | {% endif %} | ||
| 145 | <!-- build summary --> | 189 | <!-- build summary --> |
| 146 | <div class="row-fluid span10 pull-right"> | 190 | <div class="row-fluid span10 pull-right"> |
| 147 | <h2>Build summary</h2> | 191 | <h2>Build summary</h2> |
| @@ -158,12 +202,19 @@ | |||
| 158 | <dl> | 202 | <dl> |
| 159 | {% query build.task_build outcome=4 order__gt=0 as exectask%} | 203 | {% query build.task_build outcome=4 order__gt=0 as exectask%} |
| 160 | {% if exectask.count > 0 %} | 204 | {% if exectask.count > 0 %} |
| 161 | <dt>Failed tasks</td> | 205 | <dt>Failed tasks</dt> |
| 162 | <dd> | 206 | <dd> |
| 163 | {% if exectask.count == 1 %} | 207 | {% if exectask.count == 1 %} |
| 164 | <a class="error" href="{% url "task" build.id exectask.0.id %}"> | 208 | <a class="error" href="{% url "task" build.id exectask.0.id %}"> |
| 165 | {{exectask.0.recipe.name}} | 209 | {{exectask.0.recipe.name}} |
| 166 | <span class="task-name">{{exectask.0.task_name}}</span> | 210 | <span class="task-name">{{exectask.0.task_name}}</span> |
| 211 | |||
| 212 | {% if MANAGED and build.project %} | ||
| 213 | <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}"> | ||
| 214 | <i class="icon-download-alt" title="" data-original-title="Download task log file"></i> | ||
| 215 | </a> | ||
| 216 | {% endif %} | ||
| 217 | |||
| 167 | </a> | 218 | </a> |
| 168 | {% elif exectask.count > 1%} | 219 | {% elif exectask.count > 1%} |
| 169 | <a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a> | 220 | <a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a> |
