UNPKG

@spotinst/spinnaker-deck

Version:

Spinnaker-Deck service, forked with support to Spotinst

261 lines (256 loc) 10.8 kB
<div class="canary-details" ng-controller="acaTaskExecutionDetailsCtrl as canaryDetailsCtrl"> <execution-details-section-nav sections="configSections"></execution-details-section-nav> <div class="step-section-details" ng-if="detailsSection === 'canarySummary'"> <div class="row"> <div class="col-md-2 canary-summary"> <div class="score score-large"> <canary-score health="canary.health.health" result="canary.canaryResult.overallResult" score="canary.canaryResult.overallScore" ></canary-score> </div> </div> </div> <div class="row"> <div class="col-md-12"> <table class="table"> <tbody> <tr> <td style="border-top: none !important"><strong>Canary Result</strong></td> <td style="border-top: none !important"><strong>Duration</strong></td> <td style="border-top: none !important"><strong>Report</strong></td> <td style="border-top: none !important"><strong>Last Updated</strong></td> </tr> <tr ng-repeat="canaryDeployment in canaryDeployments"> <td> <canary-score result="canaryDeployment.canaryAnalysisResult.result" score="canaryDeployment.canaryAnalysisResult.score" health="canaryDeployment.health.health" ></canary-score> </td> <td> <span ng-if="canaryDeployment.canaryAnalysisResult.timeDuration.durationString"> {{ canaryDeployment.canaryAnalysisResult.timeDuration.durationString }} </span> <span ng-if="!canaryDeployment.canaryAnalysisResult.timeDuration.durationString"> - </span> </td> <td> <a ng-if="canaryDeployment.canaryAnalysisResult.canaryReportURL" target="_blank" ng-href="{{canaryDeployment.canaryAnalysisResult.canaryReportURL}}" > Canary Report </a> </td> <td> <span ng-if="canaryDeployment.canaryAnalysisResult.lastUpdated"> {{ canaryDeployment.canaryAnalysisResult.lastUpdated | timestamp}} </span> <span ng-if="!canaryDeployment.canaryAnalysisResult.lastUpdated"> - </span> </td> </tr> </tbody> </table> </div> </div> <div class="row"> <div class="col-md-12"> <div class="well alert alert-info"> <div class="row" ng-if="canary.launchedDate"> <div class="col-md-2"> <strong>Launched</strong> </div> <div class="col-md-9"> <span>{{ canary.launchedDate | timestamp }}</span> </div> </div> <div class="row" ng-if="canary.endDate" style="margin-top: 6px"> <div class="col-md-2"> <strong>Ended</strong> </div> <div class="col-md-9"> <span>{{ canary.endDate | timestamp }}</span> </div> </div> <div class="row" style="margin-top: 6px"> <div class="col-md-2"> <strong>Status</strong> </div> <div class="col-md-9"> <h5><canary-status status="canary.status.status"></canary-status></h5> </div> </div> <div class="row" ng-if="canary.status.reason"> <div class="col-md-2"> <strong>Message</strong> </div> <div class="col-md-9"> <span>{{ canary.status.reason }}</span> </div> </div> <div class="row" ng-if="canary.canaryResult.manual" style="margin-top: 6px"> <div class="col-md-2"> <strong>Result</strong> </div> <div class="col-md-6"> <div class="alert canary-summary-alert alert-danger"> <strong>Canary result has been manually set</strong> </div> </div> </div> <div class="row" ng-if="!canary.canaryResult.manual && canary.status.complete && canary.canaryResult.overallResult === 'failure' && canary.canaryResult.message" style="margin-top: 6px" > <div class="col-md-2"> <strong>Result</strong> </div> <div class="col-md-10"> <div class="alert canary-summary-alert alert-danger"> <strong>{{ canary.canaryResult.message }}</strong> </div> </div> </div> </div> <stage-failure-message stage="stage" is-failed="stage.exceptions.length > 0" messages="stage.exceptions" ></stage-failure-message> </div> </div> </div> <div class="step-section-details" ng-if="detailsSection === 'canaryConfig'"> <div class="row"> <div class="col-md-12"> <div class="row"> <div class="col-md-4"><h5>Name</h5></div> <div class="col-md-6"><h5 ng-bind="canaryConfig.name"></h5></div> </div> <div class="horizontal-rule"></div> </div> </div> <div class="row"> <div class="col-md-12 canary-config-section"> <div class="row" ng-if="canary.canaryDeployments.length > 0"> <div class="col-md-4 sm-label-right compact">Account</div> <div class="col-md-6"> <account-tag account="canary.canaryDeployments[0].accountName" pad="right"></account-tag> </div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Duration</div> <div class="col-md-6">{{canaryConfig.lifetimeHours}} hours</div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Success Criteria</div> <div class="col-md-6">{{canaryConfig.canarySuccessCriteria.canaryResultScore}}</div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Result Strategy</div> <div class="col-md-6">{{canaryConfig.combinedCanaryResultStrategy | lowercase}}</div> </div> <div class="row" ng-if="canary.canaryDeployments.length > 0"> <div class="col-md-4 sm-label-right compact">Scope Type</div> <div class="col-md-6">{{canary.canaryDeployments[0].type}}</div> </div> <div class="row" ng-if="canary.canaryDeployments.length > 0"> <div class="col-md-4 sm-label-right compact">Baseline</div> <div class="col-md-8" style="word-wrap: break-word">{{canary.canaryDeployments[0].baseline}}</div> </div> <div class="row" ng-if="canary.canaryDeployments.length > 0"> <div class="col-md-4 sm-label-right compact">Canary</div> <div class="col-md-8" style="word-wrap: break-word">{{canary.canaryDeployments[0].canary}}</div> </div> </div> <div class="col-md-12 canary-config-section"> <h5>Analysis Config</h5> <div class="horizontal-rule"></div> <div class="row"> <div class="col-md-4 sm-label-right compact">Config Name</div> <div class="col-md-8" style="word-wrap: break-word"> <a ng-if="queryListUrl" href="{{queryListUrl}}/{{canaryConfig.canaryAnalysisConfig.name}}/edit" target="_blank" > {{canaryConfig.canaryAnalysisConfig.name}} </a> <span ng-if="!queryListUrl"> {{canaryConfig.canaryAnalysisConfig.name}} </span> </div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Warmup Period</div> <div class="col-md-6">{{canaryConfig.canaryAnalysisConfig.beginCanaryAnalysisAfterMins}} minutes</div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Interval</div> <div class="col-md-6">{{canaryConfig.canaryAnalysisConfig.canaryAnalysisIntervalMins}} minutes</div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Notification Hours</div> <div class="col-md-6">{{canaryConfig.canaryAnalysisConfig.notificationHours.join(', ')}}</div> </div> <div class="row"> <div class="col-md-4 sm-label-right compact">Canary Report Recipients</div> <div class="col-md-6">{{canary.recipients.join(', ')}}</div> </div> </div> </div> <div class="row"> <div class="col-md-12 canary-config-section"> <h5>Health Check</h5> <div class="horizontal-rule"></div> <div class="row"> <div class="col-md-4 sm-label-right compact">Minimum Canary Score</div> <div class="col-md-6">{{canaryConfig.canaryHealthCheckHandler.minimumCanaryResultScore}}</div> </div> </div> </div> </div> <div class="step-section-details" ng-if="detailsSection === 'canaryAnalysisHistory'"> <div class="row"> <div class="col-md-12"> <p class="text-center" ng-if="viewState.loadingHistory">Loading...</p> <p class="text-center" ng-if="!viewState.loadingHistory && viewState.loadingHistoryError"> Canary analysis history could not be loaded. <br /> <a href ng-click="loadHistory()">Reload score history</a> </p> <table class="table" ng-if="!viewState.loadingHistory && !viewState.loadingHistoryError"> <thead> <tr> <th>Score</th> <th>Score Duration</th> <th>Generated On</th> <th>Report</th> </tr> </thead> <tbody> <tr ng-repeat="scoreReport in analysisHistory | orderBy: '-lastUpdated'"> <td> <canary-score result="scoreReport.result" score="scoreReport.score" health="scoreReport.health" ></canary-score> </td> <td>{{ scoreReport.timeDuration.durationString }}</td> <td>{{ scoreReport.lastUpdated | timestamp }}</td> <td><a target="_blank" ng-href="{{scoreReport.canaryReportURL}}">Canary Report</a></td> </tr> </tbody> </table> <p class="text-center" ng-if="!viewState.loadingHistory && !analysisHistory.length"> No canary analysis history available </p> </div> </div> </div> </div>