2013-10-15 08:34:08 -07:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html ng-app>
|
|
|
|
<head>
|
|
|
|
<!-- Standard Meta -->
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
|
|
|
|
|
|
|
<!-- Site Properities -->
|
|
|
|
<title>Feed Example - Semantic</title>
|
|
|
|
|
|
|
|
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700|Open+Sans:300italic,400,300,700' rel='stylesheet' type='text/css'>
|
2013-10-16 16:41:58 +04:00
|
|
|
<link rel="stylesheet" type="text/css" href="/static/semantic-ui/packaged/css/semantic.css">
|
2013-10-15 08:34:08 -07:00
|
|
|
|
|
|
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.js"></script>
|
|
|
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.address/1.6/jquery.address.js"></script>
|
2013-10-16 16:41:58 +04:00
|
|
|
<script src="/static/semantic-ui/packaged/javascript/semantic.js"></script>
|
|
|
|
<script src="/static/lib/angular.min.js"></script>
|
|
|
|
<script src="/static/lib/moment.min.js"></script>
|
2013-10-15 08:34:08 -07:00
|
|
|
|
2013-10-16 16:41:58 +04:00
|
|
|
<link rel="stylesheet" type="text/css" href="/static/css/main.css">
|
|
|
|
<script src="/static/js/main.js"></script>
|
2013-10-15 08:34:08 -07:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<div class="main container">
|
|
|
|
|
|
|
|
<div class="ui page grid">
|
|
|
|
<div class="ui column">
|
|
|
|
<h2 class="ui header">
|
|
|
|
<i class="circular emphasized bug icon"></i>
|
|
|
|
<div class="content">
|
|
|
|
OpenStack Config Validator
|
|
|
|
<div class="sub header">
|
|
|
|
A real-time validator of consistency and correctness of
|
|
|
|
OpenStack configuration files.
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</h2>
|
|
|
|
|
|
|
|
|
|
|
|
<div ng-controller="ValidatorCtrl">
|
|
|
|
<div class="ui large steps">
|
|
|
|
<div class="ui step"
|
|
|
|
ng-class="{'active': currentStep == 'cluster'}"
|
|
|
|
ng-click="setStep('cluster')">Select Cluster</div>
|
|
|
|
<div class="ui step"
|
|
|
|
ng-class="{'active': currentStep == 'rules'}"
|
|
|
|
ng-click="setStep('rules')">Select Rules</div>
|
|
|
|
<div class="ui step"
|
|
|
|
ng-class="{'active': currentStep == 'validate'}"
|
|
|
|
ng-click="setStep('validate')">Validate</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div ng-show="currentStep == 'cluster'" style="margin-top: 40px;">
|
|
|
|
|
|
|
|
<div class="ui blue button" ng-click="showAddClusterModal()"><i class="add icon"></i>Add Cluster</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="ui items">
|
|
|
|
<div class="item" ng-repeat="cluster in clusters">
|
|
|
|
<div class="content">
|
|
|
|
<div class="meta">{{cluster.lastChecked}}</div>
|
|
|
|
<div class="name">{{cluster.name}}</div>
|
|
|
|
<p class="description"> {{cluster.description}}
|
|
|
|
<div>Status: {{cluster.status}}</div>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="extra">{{cluster.nodesCount}} nodes</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ui modal" id="add-cluster-modal">
|
|
|
|
<i class="close icon"></i>
|
|
|
|
<div class="header">
|
|
|
|
New Cluster
|
|
|
|
</div>
|
|
|
|
<div class="content">
|
|
|
|
|
|
|
|
<div class="ui form segment">
|
|
|
|
<div class="field">
|
|
|
|
<label>Cluster Name</label>
|
|
|
|
<div class="ui left labeled icon input">
|
|
|
|
<input type="text" placeholder="My Cluster" ng-model="newCluster.name">
|
|
|
|
<div class="ui corner label">
|
|
|
|
<i class="icon asterisk"></i>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<label>IP Address (of any node in management network)</label>
|
|
|
|
<div class="ui left labeled icon input">
|
|
|
|
<input type="text" placeholder="172.168.10.5" ng-model="newCluster.ip">
|
|
|
|
<i class="terminal icon"></i>
|
|
|
|
<div class="ui corner label">
|
|
|
|
<i class="icon asterisk"></i>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<label>SSH Key (for root user)</label>
|
|
|
|
<div class="ui left labeled icon input">
|
|
|
|
<textarea ng-model="newCluster.sshKey"></textarea>
|
|
|
|
<i class="file icon"></i>
|
|
|
|
<div class="ui corner label">
|
|
|
|
<i class="icon asterisk"></i>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ui error message">
|
|
|
|
<div class="header">We noticed some issues</div>
|
|
|
|
</div>
|
|
|
|
<div class="ui blue submit button">Test Connection</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div class="actions">
|
|
|
|
<div class="ui button">Cancel</div>
|
|
|
|
<div class="ui button" ng-click="addCluster()">Create</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div ng-show="currentStep == 'rules'" style="margin-top: 40px;">
|
|
|
|
|
|
|
|
<div class="ui pointing menu">
|
|
|
|
<a class="item"
|
|
|
|
ng-click="setRuleGroup('valid')"
|
|
|
|
ng-class="{'active' : ruleGroup == 'valid'}">
|
|
|
|
|
|
|
|
<i class="cloud icon"></i> Validty
|
|
|
|
<div class="ui label">5</div>
|
|
|
|
</a>
|
|
|
|
<a class="item"
|
|
|
|
ng-click="setRuleGroup('ha')"
|
|
|
|
ng-class="{'active' : ruleGroup == 'ha'}">
|
|
|
|
<i class="legal icon"></i> High Availability
|
|
|
|
<div class="ui label">0</div>
|
|
|
|
</a>
|
|
|
|
<a class="item"
|
|
|
|
ng-click="setRuleGroup('best')"
|
|
|
|
ng-class="{'active' : ruleGroup == 'best'}">
|
|
|
|
<i class="certificate icon"></i> Best Practices
|
|
|
|
<div class="ui label">2</div>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="ui fluid accordion" ng-show="ruleGroup == 'valid'">
|
|
|
|
<div class="active title">
|
|
|
|
<i class="dropdown icon"></i>
|
|
|
|
<strong>Feature:</strong> Nova has proper Keystone host
|
|
|
|
</div>
|
|
|
|
<div class="active content">
|
|
|
|
<div class="ui list">
|
|
|
|
<div><strong>Given</strong> I use OpenStack Grizzly 2013.1</div>
|
|
|
|
<div><strong>And</strong> Nova has <code>"auth_strategy"</code> equal to <code>"keystone"</code></div>
|
|
|
|
<div><strong>And</strong> Keystone addresses are <code>@X</code></div>
|
|
|
|
<div><strong>Then</strong> Nova should have <code>"keystone_authtoken.auth_host"</code> in <code>"$X"</code></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="title">
|
|
|
|
<i class="dropdown icon"></i>
|
|
|
|
<strong>Feature:</strong> Nova has proper Keystone host
|
|
|
|
</div>
|
|
|
|
<div class="content">
|
|
|
|
<div class="ui link list">
|
|
|
|
<div><strong>Given</strong> I use OpenStack Grizzly 2013.1</div>
|
|
|
|
<div><strong>And</strong> Nova has <code>"auth_strategy"</code> equal to <code>"keystone"</code></div>
|
|
|
|
<div><strong>And</strong> Keystone addresses are <code>@X</code></div>
|
|
|
|
<div><strong>Then</strong> Nova should have <code>"keystone_authtoken.auth_host"</code> in <code>"$X"</code></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div ng-show="currentStep == 'validate'" style="margin-top: 40px;">
|
|
|
|
<div class="ui segment">
|
|
|
|
<div class="ui list">
|
|
|
|
<div><strong>Cluster Name:</strong> Bebebeko</strong>
|
|
|
|
<div><strong>Rules selected:</strong> 17</strong>
|
|
|
|
<div style="margin-top: 15px;">
|
|
|
|
<a class="ui blue button">Run Validation</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|