| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <div class="entity-summary" ng-init="show = { status: true, mostRecentActivityInError: true, policies: true };"> |
| <div class="tab-header"> |
| <div class="entity-header"> |
| <h2 ng-if="!vm.entity" class="entity-name loading"><loading-state error="vm.error.entity"></loading-state></h2> |
| <h2 ng-if="vm.entity" class="entity-name"> |
| <span class="node-icon"><img ng-src="{{ vm.entity | iconGeneratorPipe:{doNotAutogenerate: true} }}"/></span> |
| <span class="node-name" editable-text="vm.name" blur="submit" buttons="no" blur="submit" onaftersave="vm.updateEntityName()">{{ vm.entity.name }}</span> |
| </h2> |
| </div> |
| <p ng-if="vm.sensors['main.uri']"> |
| <a ng-href="{{vm.sensors['main.uri']}}">{{vm.sensors['main.uri']}}</a> |
| </p> |
| </div> |
| |
| <br-collapsible state="show.status"> |
| <heading> |
| Status |
| </heading> |
| |
| <div ng-if="!vm.sensors || !vm.sensorsInfo"> |
| <loading-state error="vm.error.sensors"></loading-state> |
| </div> |
| |
| <div class="table-responsive" ng-if="vm.sensors && vm.sensorsInfo"> |
| <table class="status table-bordered"> |
| <tbody> |
| <tr ng-repeat="(key, label) in vm.sensorsToShow track by key" ng-if="vm.sensors[key] && !vm.isEmpty(vm.sensors[key])"> |
| <td><strong>{{label}}</strong></td> |
| <td sensitive-field field-name="{{vm.sensors[key]}}"> |
| <table class="table-bordered" ng-if="vm.isObject(vm.sensors[key])"> |
| <tbody> |
| <tr ng-repeat="(itemKey, itemValue) in vm.sensors[key] track by itemKey"> |
| <td>{{itemKey}}</td> |
| <td sensitive-field field-name="itemValue">{{itemValue}}</td> |
| </tr> |
| </tbody> |
| </table> |
| <span ng-if="!vm.isObject(vm.sensors[key])">{{vm.sensors[key]}}</span> |
| </td> |
| </tr> |
| <tr> |
| <td><strong>Entity type</strong></td> |
| <td> |
| <loading-state error="vm.error.entity" ng-if="!vm.entity"></loading-state> |
| <span ng-if="vm.entity">{{vm.entity.type}}</span> |
| </td> |
| </tr> |
| <tr> |
| <td><strong>Entity ID</strong></td> |
| <td> |
| <loading-state error="vm.error.entity" ng-if="!vm.entity"></loading-state> |
| <span ng-if="vm.entity">{{vm.entity.id}}</span> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </br-collapsible> |
| |
| <br-collapsible ng-if="vm.location.items.length !== 0 || vm.location.multi" state="show.location"> |
| <heading> |
| Location |
| </heading> |
| |
| <div ng-if="!vm.location.items"> |
| <loading-state error="vm.error.location"></loading-state> |
| </div> |
| |
| <div ng-if="vm.location.items"> |
| <div ng-if="vm.location.items.length !== 0 || !vm.location.multi"> |
| <p>This entity is running on <em><ng-pluralize count="vm.location.items.length" when="{'0': 'no locations', 'one': '{} location', 'other': '{} locations'}"></ng-pluralize></em></p> |
| <ul> |
| <li ng-repeat="item in vm.location.items track by item.id"> |
| <strong>{{item.config['spec.final'] | specToLabel:vm.metadata}}</strong> |
| <span ng-if="item.config.availabilityZone">in <code>{{item.config.availabilityZone}}</code> availability zone</span> |
| </li> |
| </ul> |
| </div> |
| <div ng-if="vm.location.multi"> |
| <p class="location-multi">This entity is part of a multi-location deployment. <a class="btn btn-link more" ng-click="vm.expandMultiLocation()" ng-if="!vm.subLocations.requested">Know more.</a></p> |
| <div ng-if="!vm.subLocations.items && vm.subLocations.requested"> |
| <loading-state error="vm.error.subLocations"></loading-state> |
| </div> |
| <table class="status table-bordered" ng-if="vm.subLocations.items"> |
| <thead> |
| <tr> |
| <th>Cloud</th> |
| <th>Region</th> |
| <th>Availability zone</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr ng-repeat="subLocation in vm.subLocations.items track by subLocation.id"> |
| <td>{{subLocation.config['spec.final'] | specToLabel:vm.metadata}}</td> |
| <td ng-class="{'na': !subLocation.config.region}">{{subLocation.config.region}}</td> |
| <td ng-class="{'na': !subLocation.config.availabilityZone}">{{subLocation.config.availabilityZone}}</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </br-collapsible> |
| |
| <br-collapsible ng-if="vm.mostRecentActivityInError" state="show.mostRecentActivityInError"> |
| <heading> |
| Recent error |
| </heading> |
| |
| <div> |
| <h4>Error in task: {{vm.mostRecentActivityInError.displayName}}</h4> |
| |
| <span>{{vm.mostRecentActivityInError.result}}</span> |
| |
| <h3> |
| <a class="btn btn-primary pull-right" ui-sref="main.inspect.activities.detail({entityId: vm.mostRecentActivityInError.entityId, activityId: vm.mostRecentActivityInError.id})">More information</a> |
| </h3> |
| </div> |
| </br-collapsible> |
| |
| <br-collapsible ng-if="vm.policies && vm.policies.length > 0" state="show.policies"> |
| <heading> |
| Policies |
| </heading> |
| |
| <div ng-if="!vm.policies"> |
| <loading-state error="vm.error.policies"></loading-state> |
| </div> |
| |
| <adjuncts-list ng-if="vm.policies" adjuncts="vm.policies" summary="true"></adjuncts-list> |
| </br-collapsible> |
| |
| <br-collapsible state="show.blueprint"> |
| <heading> |
| Blueprint |
| </heading> |
| |
| <div> |
| <loading-state error="vm.error.spec" ng-if="!vm.spec"></loading-state> |
| <pre ng-if="vm.spec">{{vm.spec}}</pre> |
| </div> |
| </br-collapsible> |
| |
| <br-collapsible state="show.config"> |
| <heading> |
| Config |
| </heading> |
| |
| <div> |
| <loading-state error="vm.error.config" ng-if="!vm.config"></loading-state> |
| <config-sensor-table data="vm.config" info="vm.configInfo" ng-if="vm.config"></config-sensor-table> |
| </div> |
| </br-collapsible> |
| </div> |