384 lines
24 KiB
HTML
384 lines
24 KiB
HTML
<!--Copyright 2015 Cisco Systems, Inc. All rights reserved.-->
|
|
|
|
<!--Licensed 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.-->
|
|
|
|
<!--<alert ng-repeat="alert in alerts" type="{{alert.type}}" close="closeAlert($index)" style="background-color:#ffcc99;color:white">{{alert.msg}}</alert>-->
|
|
|
|
<div style="text-align:right;">
|
|
<div class="btn-group">
|
|
<a href="" class="btn btn-default" ng-click="stage()" ng-disabled="setUnstage" style="width:100px">{{stageButton}}</a>
|
|
<!--<a herf="" class="btn btn-default" ng-click="setConfig()" ng-disabled="setStatus">Save Settings</a>-->
|
|
<a href="" class="btn btn-default" ng-click="scaleTest()" ng-disabled="runStatus" style="width:100px">{{runButton}}</a>
|
|
</div>
|
|
<!--<button type="submit" class="btn btn-default" ng-click="CleanUp()">Unstage</button>-->
|
|
<!--<button type="submit" class="btn btn-warning" ng-click="setConfig()" ng-disabled="setStatus">Save Settings</button>-->
|
|
<!--<button type="submit" class="btn btn-primary" ng-click="scaleTest()" ng-disabled="runStatus">{{runButton}}</button>-->
|
|
</div>
|
|
|
|
|
|
<div class="supercontainer">
|
|
<div class="container">
|
|
<div id="sidebar">
|
|
<div class="">
|
|
<accordion close-others="oneAtATime">
|
|
<accordion-group heading="" is-open="status1.open">
|
|
<accordion-heading>
|
|
Staging Settings (VM Count: {{config.server.number_tenants*config.server.routers_per_tenant*config.server.networks_per_router*config.server.vms_per_network*config.server.secgroups_per_network}})
|
|
<i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': !status1.open, 'glyphicon-chevron-up': status1.open}"></i>
|
|
</accordion-heading>
|
|
<div class="col-lg-14" id="stagingConfig">
|
|
<form class="bs-component" name="monitoring_staging_settings">
|
|
<md-content layout-padding style="padding:0">
|
|
<md-input-container class="col-md-12" style="padding-top:0">
|
|
<label>Tenants</label>
|
|
<input type="number" min="1" max="9999" step="1" id="number_tenants"
|
|
ng-model="config.server.number_tenants" name="number_tenants"
|
|
ng-pattern="/^[1-9][0-9]{0,3}$/i"
|
|
required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_staging_settings.number_tenants.$error"
|
|
ng-if="interactive_staging_settings.number_tenants.$dirty">
|
|
<div ng-message="required" style="text-align:left;">This field is required</div>
|
|
<div ng-message="pattern" style="text-align:left;">Must be a number between 1 and 9999</div>
|
|
</div>
|
|
</md-input-container>
|
|
|
|
<md-input-container class="col-md-12">
|
|
<label>Routers/Tenant</label>
|
|
<input type="number" min="1" max="999" step="1" id="server_routers_per_tenant"
|
|
ng-model="config.server.routers_per_tenant" name="server_routers_per_tenant"
|
|
ng-pattern="/^[1-9][0-9]{0,2}$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_staging_settings.server_routers_per_tenant.$error"
|
|
ng-if="interactive_staging_settings.server_routers_per_tenant.$dirty">
|
|
<div ng-message="required" style="text-align:left;">This field is required</div>
|
|
<div ng-message="pattern" style="text-align:left;">Must be a number between 1 and 999</div>
|
|
</div>
|
|
</md-input-container>
|
|
|
|
<md-input-container class="col-md-12">
|
|
<label>Networks/Router</label>
|
|
<input type="number" min="1" max="999" step="1" id="server_networks_per_router"
|
|
ng-model="config.server.networks_per_router" name="server_networks_per_router"
|
|
ng-pattern="/^[1-9][0-9]{0,2}$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_staging_settings.server_networks_per_router.$error"
|
|
ng-if="interactive_staging_settings.server_networks_per_router.$dirty">
|
|
<div ng-message="required" style="text-align:left;">This field is required</div>
|
|
<div ng-message="pattern" style="text-align:left;">Must be a number between 1 and 999</div>
|
|
</div>
|
|
</md-input-container>
|
|
|
|
<md-input-container class="col-md-12">
|
|
<label>VMs/Network</label>
|
|
<input type="number" min="1" max="999" step="1" id="server_vms_per_network"
|
|
ng-model="config.server.vms_per_network" name="server_vms_per_network"
|
|
ng-pattern="/^[1-9][0-9]{0,2}$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_staging_settings.server_vms_per_network.$error"
|
|
ng-if="interactive_staging_settings.server_vms_per_network.$dirty">
|
|
<div ng-message="required" style="text-align:left;">This field is required</div>
|
|
<div ng-message="pattern" style="text-align:left;">Must be a number between 1 and 999</div>
|
|
</div>
|
|
</md-input-container>
|
|
|
|
<md-input-container class="col-md-12">
|
|
<label>Secgroups/Network</label>
|
|
<input type="number" min="1" max="999" step="1" id="server_secgroups_per_network"
|
|
ng-model="config.server.secgroups_per_network"
|
|
name="server_secgroups_per_network" ng-pattern="/^[1-9][0-9]{0,2}$/i" required
|
|
style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_staging_settings.server_secgroups_per_network.$error"
|
|
ng-if="interactive_staging_settings.server_secgroups_per_network.$dirty">
|
|
<div ng-message="required" style="text-align:left;">This field is required</div>
|
|
<div ng-message="pattern" style="text-align:left;">Must be a number between 1 and 999</div>
|
|
</div>
|
|
</md-input-container>
|
|
</md-content>
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Number of tenants to be created on the cloud" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Tenants</span>-->
|
|
<!--<input type="number" min="1" max="10000" step="1" class="form-control" id="number_tenants"-->
|
|
<!--ng-model="config.server.number_tenants" name="number_tenants" ng-pattern="/^[1-9][0-9]{0,3}$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_staging_settings.number_tenants.$error"-->
|
|
<!--ng-if="monitoring_staging_settings.number_tenants.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number between 1 and 9999</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Number of routers to be created within the context of each User" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Routers/Tenant</span>-->
|
|
<!--<input type="number" min="1" max="1000" step="1" class="form-control" id="server_routers_per_tenant"-->
|
|
<!--ng-model="config.server.routers_per_tenant" name="server_routers_per_tenant"-->
|
|
<!--ng-pattern="/^[1-9][0-9]{0,2}$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_staging_settings.server_routers_per_tenant.$error"-->
|
|
<!--ng-if="monitoring_staging_settings.server_routers_per_tenant.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number between 1 and 999</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Number of networks to be created within the context of each Router" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Networks/Router</span>-->
|
|
<!--<input type="number" min="1" max="1000" step="1" class="form-control" id="server_networks_per_router"-->
|
|
<!--ng-model="config.server.networks_per_router" name="server_networks_per_router"-->
|
|
<!--ng-pattern="/^[1-9][0-9]{0,2}$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_staging_settings.server_networks_per_router.$error"-->
|
|
<!--ng-if="monitoring_staging_settings.server_networks_per_router.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number between 1 and 999</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Number of VM instances to be created within the context of each Network" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">VMs/Network</span>-->
|
|
<!--<input type="number" min="1" max="1000" step="1" class="form-control" id="server_vms_per_network"-->
|
|
<!--ng-model="config.server.vms_per_network" name="server_vms_per_network"-->
|
|
<!--ng-pattern="/^[1-9][0-9]{0,2}$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_staging_settings.server_vms_per_network.$error"-->
|
|
<!--ng-if="monitoring_staging_settings.server_vms_per_network.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number between 1 and 999</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Number of security groups per network" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Secgroups/Network</span>-->
|
|
<!--<input type="number" min="1" max="1000" step="1" class="form-control"-->
|
|
<!--id="server_secgroups_per_network" ng-model="config.server.secgroups_per_network"-->
|
|
<!--name="server_secgroups_per_network" ng-pattern="/^[1-9][0-9]{0,2}$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_staging_settings.server_secgroups_per_network.$error"-->
|
|
<!--ng-if="monitoring_staging_settings.server_secgroups_per_network.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number between 1 and 999</div>-->
|
|
<!--</div>-->
|
|
</form>
|
|
</div>
|
|
<!--Run-->
|
|
</accordion-group>
|
|
<accordion-group is-open="status2.open">
|
|
<accordion-heading>
|
|
Run Settings <i class="pull-right glyphicon"
|
|
ng-class="{'glyphicon-chevron-down': !status2.open, 'glyphicon-chevron-up': status2.open}"></i>
|
|
</accordion-heading>
|
|
<div class="col-lg-14" id="runningConfig">
|
|
<form class="bs-component" name="monitoring_running_settings">
|
|
<md-content layout-padding style="padding:0">
|
|
<md-input-container class="col-md-12" style="padding-top:0">
|
|
<label>Duration/Run (sec)</label>
|
|
<input type="number" min="1" max="" step="1" id="client_duration"
|
|
ng-model="config.client.http_tool_configs.duration" name="client_duration"
|
|
ng-pattern="/^[1-9][0-9]*$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_running_settings.client_duration.$error"
|
|
ng-if="interactive_running_settings.client_duration.$dirty">
|
|
<div ng-message="required">This field is required</div>
|
|
<div ng-message="pattern">Must be a number no less than 1</div>
|
|
</div>
|
|
</md-input-container>
|
|
<md-input-container class="col-md-12" style="padding-top:0">
|
|
<label>Reporting Interval (sec)</label>
|
|
<input type="number" min="1" max="" step="1" id="report_interval"
|
|
ng-model="config.client.http_tool_configs.report_interval" name="report_interval"
|
|
ng-pattern="/^[1-9][0-9]*$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="monitoring_running_settings.report_interval.$error">
|
|
<div ng-message="required">This field is required</div>
|
|
<div ng-message="pattern">Must be a number no less than 1</div>
|
|
</div>
|
|
</md-input-container>
|
|
<md-input-container class="col-md-12">
|
|
<label>Rate Limit/VM</label>
|
|
<input type="number" min="0" max="" step="1000" id="client_rate_limit"
|
|
ng-model="config.client.http_tool_configs.rate_limit" name="client_rate_limit"
|
|
ng-pattern="/^[0-9]*$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_running_settings.client_rate_limit.$error"
|
|
ng-if="interactive_running_settings.client_rate_limit.$dirty">
|
|
<div ng-message="required">This field is required</div>
|
|
<div ng-message="pattern">Must be a number no less than 0</div>
|
|
</div>
|
|
</md-input-container>
|
|
|
|
<md-input-container class="col-md-12">
|
|
<label>Connections/VM</label>
|
|
<input type="number" min="0" max="" step="1000" id="client_connections"
|
|
ng-model="config.client.http_tool_configs.connections"
|
|
name="client_connections" ng-pattern="/^[1-9][0-9]*$/i" required style="text-align:left;"/>
|
|
|
|
<div ng-messages="interactive_running_settings.client_connections.$error"
|
|
ng-if="interactive_running_settings.client_connections.$dirty">
|
|
<div ng-message="required">This field is required</div>
|
|
<div ng-message="pattern">Must be a number no less than 1</div>
|
|
</div>
|
|
</md-input-container>
|
|
</md-content>
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto">-->
|
|
<!--<span class="input-group-addon">connection Type:</span>-->
|
|
<!--<input type="text" class="form-control" id="client_connection_type" ng-model="config.client.http_tool_configs.connection_type"/>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Duration of testing tools" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Duration/Run (sec)</span>-->
|
|
<!--<input type="number" min="1" max="" step="1" class="form-control" id="client_duration"-->
|
|
<!--ng-model="config.client.http_tool_configs.duration" name="client_duration" ng-pattern="/^[1-9][0-9]*$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_running_settings.client_duration.$error" ng-if="monitoring_running_settings.client_duration.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number no less than 1</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Interval for periodical report in seconds" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Reporting Interval (sec)</span>-->
|
|
<!--<input type="number" min="1" max="" step="1" class="form-control" id="report_interval"-->
|
|
<!--ng-model="config.client.http_tool_configs.report_interval" name="report_interval" ng-pattern="/^[1-9][0-9]*$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_running_settings.report_interval.$error">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number no less than 1</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Rate limit in RPS per client (0 for unlimited)" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Rate Limit/VM</span>-->
|
|
<!--<input type="number" min="0" max="" step="1000" class="form-control" id="client_rate_limit"-->
|
|
<!--ng-model="config.client.http_tool_configs.rate_limit" name="client_rate_limit" ng-pattern="/^[1-9][0-9]*$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_running_settings.client_rate_limit.$error" ng-if="monitoring_running_settings.client_rate_limit.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number no less than 1</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto" popover="Connections to be kept concurrently per VM. This number also corresponds to the number of HTTP users connected at any time to the matching HTTP server" popover-trigger="mouseenter" popover-placement="right">-->
|
|
<!--<span class="input-group-addon">Connections/VM</span>-->
|
|
<!--<input type="number" min="0" max="" step="1000" min="0" max="" step="10" class="form-control"-->
|
|
<!--id="client_connections" ng-model="config.client.http_tool_configs.connections" name="client_connections" ng-pattern="/^[1-9][0-9]*$/i" required/>-->
|
|
<!--</div>-->
|
|
<!--<div ng-messages="monitoring_running_settings.client_connections.$error" ng-if="monitoring_running_settings.client_connections.$dirty">-->
|
|
<!--<div ng-message="required">This field is required</div>-->
|
|
<!--<div ng-message="pattern">Must be a number no less than 1</div>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto">-->
|
|
<!--<span class="input-group-addon">Threads:</span>-->
|
|
<!--<input type="number" min="0" max="" step="10" class="form-control" id="client_threads" ng-model="config.client.http_tool_configs.threads"/>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto">-->
|
|
<!--<span class="input-group-addon">Timeout:</span>-->
|
|
<!--<input type="number" min="0" max="" step="5" class="form-control" id="client_timeout" ng-model="config.client.http_tool_configs.timeout"/>-->
|
|
<!--</div>-->
|
|
<!--<br/>-->
|
|
<!--<div class="input-group col-sm-12" style="margin:0 auto">-->
|
|
<!--<span class="input-group-addon">Polling Interval:</span>-->
|
|
<!--<input type="number" min="0" max="" step="5" class="form-control" id="client_polling_interval" ng-model="config.client.polling_interval"/>-->
|
|
<!--</div>-->
|
|
</form>
|
|
</div>
|
|
</accordion-group>
|
|
</accordion>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="main-content">
|
|
<div class="swipe-area"></div>
|
|
<a href="" data-toggle=".container" id="sidebar-toggle" style="text-decoration:none">
|
|
<!--<span class="bar"></span>-->
|
|
<!--<span class="bar"></span>-->
|
|
<!--<span class="bar"></span>-->
|
|
<span id="littleglyph1" class="bar glyphicon glyphicon-triangle-right" style="color:white"></span>
|
|
</a>
|
|
|
|
<div class="content" id="content">
|
|
|
|
<div class="row">
|
|
<div class="">
|
|
|
|
<h6>Latency(ms)</h6>
|
|
<linechart data="data" options="options" mode="" width="" height="500"></linechart>
|
|
<!--<h6 style="float:right; text-align: right; line-height: 30%">Percentile</h6>-->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" style="text-align:right;margin: 0 5%">
|
|
<button type="submit" class="btn btn-default btn-xs" ng-click="saveResult()">Save Result</button>
|
|
<button type="submit" class="btn btn-default btn-xs" ng-click="initChart()">Clear Chart</button>
|
|
</div>
|
|
<br/>
|
|
|
|
|
|
<div class="navbar navbar-default navbar-fixed-bottom" role="navigation"
|
|
style="min-height: 48px;background: transparent">
|
|
<div style="height: 12px;background-color: transparent;width: 100%;margin:0;border:0;padding:0;"></div>
|
|
|
|
<div style="background: white; width: 52px; height: 52px;border-radius: 50%;position:absolute;z-index: 10;top:0;left:60px;">
|
|
<div class='loading spin-1'>
|
|
<div class='loading spin-2'>
|
|
<div class='loading spin-3'>
|
|
<div class='loading spin-4'>
|
|
<div class='loading spin-5'>
|
|
<div class='loading spin-6'></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="background: rgb(44,62,80);width: 100%;height: 36px;margin:0;border:0;padding:0;">
|
|
|
|
<div style="margin: 0 80px 0 120px;vertical-align: middle;">
|
|
<h5>
|
|
<div class="row">
|
|
<div class="col-md-2 col-xs-2" style="line-height:33px; height:20px; color:white;">
|
|
<!--Status:-->
|
|
<button class="btn {{statusButton}} btn-xs" ng-click="checkStatus()" style="height:24px;">{{status}}
|
|
</button>
|
|
</div>
|
|
|
|
<div class="col-md-6 col-xs-6" style="line-height:35px; height:20px; color:white;">Created
|
|
<button class="btn btn-primary btn-xs" ng-click="checkStatus()" style="height:24px;">{{server_vm_count}}
|
|
</button>
|
|
Server VM(s),
|
|
<button class="btn btn-primary btn-xs" ng-click="checkStatus()" style="height:24px;">{{client_vm_count}}
|
|
</button>
|
|
Client VM(s).
|
|
</div>
|
|
<div class="col-md-4 col-xs-4" style="line-height:33px; height:20px; color:white;" ng-show="info">
|
|
<button class="btn btn-xs btn-info" style="width:220px;text-align: left;">{{info}}</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!--sessionID: <button class="btn btn-info btn-xs" disabled>{{sessionID}}</button>-->
|
|
<!--<button style="float:right;" type="submit" class="btn btn-default btn-xs" ng-click="deleteSession()" popover="Session can be destroyed only if it is at READY." popover-trigger="mouseenter">Del Ses</button>-->
|
|
</h5>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|