@spotinst/spinnaker-deck
Version:
Spinnaker-Deck service, forked with support to Spotinst
217 lines (206 loc) • 9.45 kB
HTML
<div class="details-panel" ng-class="{ disabled: ctrl.serverGroup.isDisabled }">
<div class="header" ng-if="ctrl.state.loading">
<div class="close-button">
<a class="btn btn-link" ui-sref="^">
<span class="glyphicon glyphicon-remove"></span>
</a>
</div>
<h4 class="text-center">
<span us-spinner="{radius:20, width:6, length: 12}"></span>
</h4>
</div>
<div class="header" ng-if="!ctrl.state.loading">
<div class="close-button">
<a class="btn btn-link" ui-sref="^">
<span class="glyphicon glyphicon-remove"></span>
</a>
</div>
<div class="header-text horizontal middle">
<cloud-provider-logo provider="ctrl.serverGroup.type" height="'36px'" width="'36px'"></cloud-provider-logo>
<h3 class="horizontal middle space-between flex-1" select-on-dbl-click>
{{ctrl.serverGroup.name}}
<render-if-feature feature="entityTags">
<entity-notifications
entity="ctrl.serverGroup"
application="ctrl.application"
placement="bottom"
h-offset-percent="90%"
entity-type="serverGroup"
page-location="details"
on-update="ctrl.application.serverGroups.refresh()"
></entity-notifications>
</render-if-feature>
</h3>
</div>
<div>
<div class="actions" ng-class="{ insights: ctrl.serverGroup.insightActions.length > 0 }">
<div class="dropdown" uib-dropdown dropdown-append-to-body>
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" uib-dropdown-toggle>
Server Group Actions <span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li><a href ng-if=" !ctrl.serverGroup.isDisabled" ng-click="ctrl.rollbackServerGroup()">Rollback</a></li>
<li role="presentation" class="divider" ng-if=" !ctrl.serverGroup.isDisabled"></li>
<li><a href ng-click="ctrl.resizeServerGroup()">Resize</a></li>
<li><a href ng-if=" !ctrl.serverGroup.isDisabled" ng-click="ctrl.disableServerGroup()">Disable</a></li>
<li>
<a href ng-if="ctrl.serverGroup.isDisabled && !ctrl.isEnableLocked()" ng-click="ctrl.enableServerGroup()"
>Enable</a
>
</li>
<li class="disabled" ng-if="ctrl.isEnableLocked()">
<a
uib-tooltip="Cannot enable this server group until resize operation completes"
tooltip-placement="left"
>
<span class="small glyphicon glyphicon-lock"></span>
Enable
</a>
</li>
<li><a href ng-click="ctrl.destroyServerGroup()">Destroy</a></li>
<li><migrator application="ctrl.application" server-group="ctrl.serverGroup"></migrator></li>
<render-if-feature feature="entityTags">
<add-entity-tag-links
component="ctrl.serverGroup"
application="ctrl.application"
entity-type="serverGroup"
owner-options="ctrl.entityTagTargets"
on-update="ctrl.application.serverGroups.refresh()"
></add-entity-tag-links>
</render-if-feature>
</ul>
</div>
<div class="dropdown" ng-if="ctrl.serverGroup.insightActions.length > 0" uib-dropdown dropdown-append-to-body>
<button type="button" class="btn btn-sm btn-default dropdown-toggle" uib-dropdown-toggle>
Insight <span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li ng-repeat="action in ctrl.serverGroup.insightActions">
<a target="_blank" href="{{action.url}}">{{action.label}}</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="band band-info" ng-if="ctrl.serverGroup.isDisabled">Disabled {{ctrl.disabledDate | timestamp}}</div>
<div class="content" ng-if="!ctrl.state.loading">
<server-group-running-tasks-details
server-group="ctrl.serverGroup"
application="ctrl.application"
></server-group-running-tasks-details>
<collapsible-section heading="General" expanded="true">
<dl class="dl-horizontal dl-narrow">
<dt>Created</dt>
<dd>{{ctrl.serverGroup.createdTime | timestamp}}</dd>
<render-if-feature feature="entityTags">
<entity-source metadata="ctrl.serverGroup.entityTags.creationMetadata"></entity-source>
<view-changes-link
change-config="ctrl.changeConfig"
jar-diffs="ctrl.jarDiffs"
link-text="view changes"
name-item="ctrl.serverGroup"
></view-changes-link>
</render-if-feature>
<dt>In</dt>
<dd>
<account-tag account="ctrl.serverGroup.account" pad="right"></account-tag>
<br />
{{ctrl.serverGroup.region}}
</dd>
<dt>ECS Cluster</dt>
<dd>{{ctrl.serverGroup.ecsCluster}}</dd>
<dt>VPC ID</dt>
<dd>{{ctrl.serverGroup.vpcId}}</dd>
</dl>
</collapsible-section>
<collapsible-section heading="Definitions" expanded="true">
<dl class="horizontal-when-filters-collapsed">
<dt>Task Name</dt>
<dd>{{ctrl.serverGroup.taskDefinition.taskName}}</dd>
<dt>Container URL</dt>
<dd>{{ctrl.serverGroup.taskDefinition.containerImage}}</dd>
<dt>Container IAM Profile</dt>
<dd>{{ctrl.serverGroup.taskDefinition.iamRole}}</dd>
<dt ng-if="ctrl.serverGroup.taskDefinition.containerPort">Container Port</dt>
<dd ng-if="ctrl.serverGroup.taskDefinition.containerPort">{{ctrl.serverGroup.taskDefinition.containerPort}}</dd>
<dt>Container CPU Units</dt>
<dd>{{ctrl.serverGroup.taskDefinition.cpuUnits}}</dd>
<dt ng-if="ctrl.serverGroup.taskDefinition.memoryReservation">Container Reserved Memory</dt>
<dd ng-if="ctrl.serverGroup.taskDefinition.memoryReservation">
{{ctrl.serverGroup.taskDefinition.memoryReservation}} mb
</dd>
<dt ng-if="ctrl.serverGroup.taskDefinition.memoryLimit">Container Memory Limit</dt>
<dd ng-if="ctrl.serverGroup.taskDefinition.memoryLimit">{{ctrl.serverGroup.taskDefinition.memoryLimit}} mb</dd>
</dl>
</collapsible-section>
<collapsible-section heading="Environment Variables" expanded="false">
<div ng-if="!ctrl.serverGroup.taskDefinition.environmentVariables.length">
This server group has no environment variables
</div>
<dl ng-if="ctrl.serverGroup.taskDefinition.environmentVariables.length">
<dt ng-repeat-start="variable in ctrl.serverGroup.taskDefinition.environmentVariables">{{variable.name}}</dt>
<dd ng-repeat-end>{{variable.value}}</dd>
</dl>
</collapsible-section>
<collapsible-section heading="Health" expanded="true" ng-if="ctrl.serverGroup.instanceCounts.total > 0">
<dl class="dl-horizontal dl-narrow" ng-if="ctrl.serverGroup">
<dt>Instances</dt>
<dd>
<health-counts container="ctrl.serverGroup.instanceCounts" class="pull-left"></health-counts>
</dd>
</dl>
</collapsible-section>
<collapsible-section heading="{{ctrl.firewallsLabel}}" expanded="false">
<ul>
<li ng-repeat="securityGroup in ctrl.serverGroup.securityGroups">{{securityGroup}}</li>
</ul>
</collapsible-section>
<collapsible-section heading="Capacity" expanded="false">
<dl class="dl-horizontal dl-narrow">
<dt>Current</dt>
<dd>{{ctrl.serverGroup.instances.length}}</dd>
<dt>Desired</dt>
<dd>{{ctrl.serverGroup.capacity.desired}}</dd>
<dt>Min</dt>
<dd>{{ctrl.serverGroup.capacity.min}}</dd>
<dt>Max</dt>
<dd>{{ctrl.serverGroup.capacity.max}}</dd>
</dl>
</collapsible-section>
<collapsible-section heading="Scaling Policies" expanded="false">
<dl class="horizontal-when-filters-collapsed">
<dd
ng-if="ctrl.serverGroup.metricAlarms.length > 0"
ng-repeat="metricAlarmName in ctrl.serverGroup.metricAlarms"
>
{{metricAlarmName}}
</dd>
<dd ng-if="ctrl.serverGroup.metricAlarms.length <= 0"><i>There are no scaling policies assigned.</i></dd>
</dl>
</collapsible-section>
<collapsible-section heading="Build data" ng-if="ctrl.serverGroup.buildInfo && ctrl.serverGroup.buildInfo.jenkins">
<dl class="horizontal-when-filters-collapsed">
<dt>Job</dt>
<dd>{{ctrl.serverGroup.buildInfo.jenkins.name}}</dd>
<dt>Package</dt>
<dd>{{ctrl.serverGroup.buildInfo.package_name}}</dd>
<dt>Build</dt>
<dd>{{ctrl.serverGroup.buildInfo.jenkins.number}}</dd>
<dt>Commit</dt>
<dd>{{ctrl.truncateCommitHash()}}</dd>
<dt>Version</dt>
<dd>{{ctrl.serverGroup.buildInfo.version}}</dd>
<dt>Build Link</dt>
<dd><a target="_blank" href="{{ctrl.buildJenkinsLink()}}">{{ctrl.buildJenkinsLink()}}</a></dd>
</dl>
</collapsible-section>
<collapsible-section heading="Server Group Logs">
<ul>
<li>
<view-events-link server-group="ctrl.serverGroup"></view-events-link>
</li>
</ul>
</collapsible-section>
</div>
</div>