| <!-- |
| 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="x_panel"> |
| <div class="x_title"> |
| <ol class="breadcrumb pull-left"> |
| <li><a ng-click="navigateToPath('/cdns')">CDNs</a></li> |
| <li><a ng-click="navigateToPath('/cdns/' + cdn.id)">{{::cdn.name}}</a></li> |
| <li class="active">Servers</li> |
| </ol> |
| <div class="pull-right"> |
| <div class="btn-group" role="group" uib-dropdown is-open="queue.isopen"> |
| <button type="button" class="btn btn-primary dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false"> |
| Queue Updates |
| <span class="caret"></span> |
| </button> |
| <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu> |
| <li role="menuitem"><a ng-click="confirmCDNQueueServerUpdates(cdn)">Queue {{cdn.name}} Server Updates</a></li> |
| <li role="menuitem"><a ng-click="confirmCDNClearServerUpdates(cdn)">Clear {{cdn.name}} Server Updates</a></li> |
| </ul> |
| </div> |
| <button class="btn btn-default" title="Refresh" ng-click="refresh()"><i class="fa fa-refresh"></i></button> |
| <div id="toggleColumns" class="btn-group" role="group" title="Select Table Columns" uib-dropdown is-open="columnSettings.isopen"> |
| <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false"> |
| <i class="fa fa-columns"></i> |
| <span class="caret"></span> |
| </button> |
| <menu ng-click="$event.stopPropagation()" class="column-settings dropdown-menu-right dropdown-menu" uib-dropdown-menu> |
| <li role="menuitem" ng-repeat="c in columns | orderBy:'name'"> |
| <div class="checkbox"> |
| <label><input type="checkbox" ng-model="c.visible" ng-click="toggleVisibility(c.name)"> {{::c.name}}</label> |
| </div> |
| </li> |
| </menu> |
| </div> |
| </div> |
| <div class="clearfix"></div> |
| </div> |
| <div class="x_content"> |
| <br> |
| <table id="cdnServersTable" class="table responsive-utilities jambo_table"> |
| <thead> |
| <tr class="headings"> |
| <th>Cache Group</th> |
| <th>CDN</th> |
| <th>Domain</th> |
| <th>Host</th> |
| <th>HTTPS Port</th> |
| <th>ID</th> |
| <th>ILO IP Address</th> |
| <th>ILO IP Gateway</th> |
| <th>ILO IP Netmask</th> |
| <th>ILO Username</th> |
| <th>Interface Name</th> |
| <th>IPv6 Address</th> |
| <th>IPv6 Gateway</th> |
| <th>Last Updated</th> |
| <th>Mgmt IP Address</th> |
| <th>Mgmt IP Gateway</th> |
| <th>Mgmt IP Netmask</th> |
| <th>Network Gateway</th> |
| <th>Network IP</th> |
| <th>Network MTU</th> |
| <th>Network Subnet</th> |
| <th>Offline Reason</th> |
| <th>Phys Location</th> |
| <th>Profile</th> |
| <th>Rack</th> |
| <th>Reval Pending</th> |
| <th>Router Hostname</th> |
| <th>Router Port Name</th> |
| <th>Status</th> |
| <th>TCP Port</th> |
| <th>Type</th> |
| <th>Update Pending</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr ng-click="editServer(s.id)" ng-repeat="s in ::servers" ng-class="::{'active': s.updPending}" context-menu="contextMenuItems"> |
| <td data-search="^{{::s.cachegroup}}$">{{::s.cachegroup}}</td> |
| <td data-search="^{{::s.cdnName}}$">{{::s.cdnName}}</td> |
| <td data-search="^{{::s.domainName}}$">{{::s.domainName}}</td> |
| <td data-search="^{{::s.hostName}}$">{{::s.hostName}}</td> |
| <td data-search="^{{::s.httpsPort}}$">{{::s.httpsPort}}</td> |
| <td data-search="^{{::s.id}}$">{{::s.id}}</td> |
| <td data-search="^{{::s.iloIpAddress}}$"><a ng-click="ssh(s.iloIpAddress, $event)">{{::s.iloIpAddress}}</a></td> |
| <td data-search="^{{::s.iloIpGateway}}$"><a ng-click="ssh(s.iloIpGateway, $event)">{{::s.iloIpGateway}}</a></td> |
| <td data-search="^{{::s.iloIpNetmask}}$">{{::s.iloIpNetmask}}</td> |
| <td data-search="^{{::s.iloUsername}}$">{{::s.iloUsername}}</td> |
| <td data-search="^{{::s.interfaceName}}$">{{::s.interfaceName}}</td> |
| <td data-search="^{{::s.ip6Address}}$">{{::s.ip6Address}}</td> |
| <td data-search="^{{::s.ip6Gateway}}$">{{::s.ip6Gateway}}</td> |
| <td data-search="^{{::getRelativeTime(s.lastUpdated)}}$" data-order="{{::s.lastUpdated}}">{{::getRelativeTime(s.lastUpdated)}}</td> |
| <td data-search="^{{::s.mgmtIpAddress}}$"><a ng-click="ssh(s.mgmtIpAddress, $event)">{{::s.mgmtIpAddress}}</a></td> |
| <td data-search="^{{::s.mgmtIpGateway}}$"><a ng-click="ssh(s.mgmtIpGateway, $event)">{{::s.mgmtIpGateway}}</a></td> |
| <td data-search="^{{::s.mgmtIpNetmask}}$">{{::s.mgmtIpNetmask}}</td> |
| <td data-search="^{{::s.ipGateway}}$"><a ng-click="ssh(s.ipGateway, $event)">{{::s.ipGateway}}</a></td> |
| <td data-search="^{{::s.ipAddress}}$"><a ng-click="ssh(s.ipAddress, $event)">{{::s.ipAddress}}</a></td> |
| <td data-search="^{{::s.interfaceMtu}}$">{{::s.interfaceMtu}}</td> |
| <td data-search="^{{::s.ipNetmask}}$">{{::s.ipNetmask}}</td> |
| <td data-search="^{{::s.offlineReason}}$">{{::s.offlineReason}}</td> |
| <td data-search="^{{::s.physLocation}}$">{{::s.physLocation}}</td> |
| <td data-search="^{{::s.profile}}$">{{::s.profile}}</td> |
| <td data-search="^{{::s.rack}}$">{{::s.rack}}</td> |
| <td data-search="{{(s.revalPending) ? 'RVL' : ''}}" data-order="{{::s.revalPending}}"> |
| <i title="Reval Pending (RVL)" ng-show="s.revalPending" class="fa fa-clock-o fa-lg" aria-hidden="true"></i> |
| <i title="Reval Applied" ng-show="!s.revalPending" class="fa fa-check fa-lg" aria-hidden="true"></i> |
| </td> |
| <td data-search="^{{::s.routerHostName}}$">{{::s.routerHostName}}</td> |
| <td data-search="^{{::s.routerPortName}}$">{{::s.routerPortName}}</td> |
| <td data-search="^{{::s.status}}$"> |
| <span ng-if="!isOffline(s.status)">{{::s.status}}</span> |
| <span ng-if="isOffline(s.status)" uib-popover="{{::offlineReason(s)}}" popover-title="Offline Reason" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true">{{::s.status}}</span> |
| </td> |
| <td data-search="^{{::s.tcpPort}}$">{{::s.tcpPort}}</td> |
| <td data-search="^{{::s.type}}$">{{::s.type}}</td> |
| <td data-search="{{(s.updPending) ? 'UPD' : ''}}" data-order="{{::s.updPending}}"> |
| <i title="Updates Pending (UPD)" ng-show="s.updPending" class="fa fa-clock-o fa-lg" aria-hidden="true"></i> |
| <i title="Updates Applied" ng-show="!s.updPending" class="fa fa-check fa-lg" aria-hidden="true"></i> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| |
| |
| |
| |