Add simple autofill for hostname and ip address

Change-Id: I5fb624634a3ee8429795ce574936d5db16c5bc41
This commit is contained in:
jiahuay 2014-07-10 18:58:12 -07:00
parent 6e72d6bed3
commit 15cf7b3cb5
5 changed files with 216 additions and 22 deletions

View File

@ -103,9 +103,6 @@ compassAppDev.run(function($httpBackend, settings, $http) {
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Compute",
"name": "os-compute-worker"
}, {
"display_name": "Controller",
"name": "os-controller"
}, {
@ -136,6 +133,146 @@ compassAppDev.run(function($httpBackend, settings, $http) {
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 12,
"mac": "28.e5.ee.47.ee.32",
"switch_ip": "172.29.8.40",
"vlan": "2",
"port": "3",
"name": "sv-3",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Network",
"name": "os-network"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 13,
"mac": "28.e5.ee.47.33.66",
"switch_ip": "172.29.8.40",
"vlan": "2",
"port": "4",
"name": "sv-4",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Compute",
"name": "os-compute-worker"
}, {
"display_name": "Storage",
"name": "os-block-storage-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 14,
"mac": "28.e5.ee.47.2c.22",
"switch_ip": "172.29.8.40",
"vlan": "2",
"port": "5",
"name": "sv-5",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Compute",
"name": "os-compute-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 15,
"mac": "28.e5.ee.47.55.19",
"switch_ip": "172.29.8.40",
"vlan": "2",
"port": "6",
"name": "sv-6",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Storage",
"name": "os-block-storage-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 16,
"mac": "28.e5.ee.47.41.b2",
"switch_ip": "172.29.8.41",
"vlan": "2",
"port": "7",
"name": "sv-7",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Network",
"name": "os-network"
}, {
"display_name": "Storage",
"name": "os-block-storage-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 17,
"mac": "28.e5.ee.47.25.33",
"switch_ip": "172.29.8.41",
"vlan": "8",
"port": "8",
"name": "sv-8",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Network",
"name": "os-network"
}, {
"display_name": "Storage",
"name": "os-block-storage-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 18,
"mac": "28.e5.ee.47.5a.60",
"switch_ip": "172.29.8.41",
"vlan": "9",
"port": "9",
"name": "sv-9",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Network",
"name": "os-network"
}, {
"display_name": "Storage",
"name": "os-block-storage-worker"
}],
"network": {},
"state": "Successful"
}, {
"machine_id": 19,
"mac": "28.e5.ee.47.c1.82",
"switch_ip": "172.29.8.41",
"vlan": "10",
"port": "10",
"name": "sv-10",
"clusters": ["cluster1"],
"os": "CentOS",
"adapter": "OpenStack",
"roles": [{
"display_name": "Compute",
"name": "os-compute-worker"
}, ],
"network": {},
"state": "Successful"
}];
console.log(servers);
return [200, servers, {}];
@ -332,15 +469,13 @@ compassAppDev.run(function($httpBackend, settings, $http) {
$httpBackend.whenPOST(/\.*\/clusters\/[1-9][0-9]*\/action/).respond(function(method, url, data) {
console.log(method, url, data);
var machines = JSON.parse(data)["add_hosts"]["machines"];
angular.forEach(machines, function(machine) {
machine.id = Math.floor((Math.random() * 500) + 1);
})
var actionResponse = {
"hosts": [{
"id": Math.floor((Math.random() * 100) + 1),
"machine_id": 10
}, {
"id": Math.floor((Math.random() * 100) + 1),
"machine_id": 11
}]
}
"hosts": machines
};
return [200, actionResponse, {}];
});

View File

@ -129,6 +129,7 @@ angular.module('compass.services', [])
.factory('wizardFactory', [
function() {
var wizard = {};
wizard.init = function() {

View File

@ -112,10 +112,9 @@
Hostname
</label>
<div class="col-sm-9">
<select class="col-xs-10 col-sm-5 ng-pristine ng-valid">
<select id="hostname-rule" class="col-xs-10 col-sm-5 ng-pristine ng-valid">
<option value="host">Host</option>
<option value="switch_ip">Switch IP</option>
<option value="switch_alias">Switch Alias</option>
</select>
</div>
</div>
@ -125,8 +124,8 @@
{{name}}&nbsp;IP
</label>
<div class="col-sm-9">
<input type="text" placeholder="IP Start">
<select>
<input id="{{name}}-ipstart" type="text" placeholder="IP Start">
<select id="{{name}}-increase-num">
<option value="1">Increase by 1</option>
<option value="2">Increase by 2</option>
<option value="3">Increase by 3</option>

View File

@ -36,7 +36,7 @@
<div class="row">
<div class="table-responsive">
<table ng-table="tableParams" class="table table-hover">
<table ng-table="tableParams" class="table table-hover table-striped">
<thead>
<tr>
<th>

View File

@ -19,7 +19,7 @@ angular.module('compass.wizard', [
if ($stateParams.config == "true") {
dataService.getWizardPreConfig().success(function(data) {
wizardFactory.preConfig(data);
$scope.cluster = wizardFactory.getClusterInfo();
$scope.cluster = wizardFactory.getClusterInfo();
});
}
@ -78,7 +78,9 @@ angular.module('compass.wizard', [
}
break;
case "review":
$state.go("cluster.overview", {'id':$scope.cluster.id});
$state.go("cluster.overview", {
'id': $scope.cluster.id
});
break;
default:
break;
@ -537,9 +539,66 @@ angular.module('compass.wizard', [
};
$scope.autofill = function() {
//TODO: add auto fill
alert("Autofill coming soon");
// Autofill IP for each interface
angular.forEach($scope.interfaces, function(value, key) {
var ip_start = $("#" + key + "-ipstart").val();
var interval = parseInt($("#" + key + "-increase-num").val());
$scope.fillIPBySequence(ip_start, interval, key);
})
// Autofill hostname
var hostname_rule = $("#hostname-rule").val();
$scope.fillHostname(hostname_rule);
};
$scope.fillHostname = function(rule) {
switch (rule) {
case "host":
var server_index = 1;
angular.forEach($scope.servers, function(server) {
server.name = "host-" + server_index;
server_index++;
})
break;
case "switch_ip":
angular.forEach($scope.servers, function(server) {
server.name = server.switch_ip.replace(/\./g, "-") + "-p" + server.port;
})
break;
}
};
$scope.fillIPBySequence = function(ipStart, interval, interface) {
if (ipStart == "")
return;
var ipStartParts = ipStart.split(".");
var ipParts = ipStartParts.map(function(x) {
return parseInt(x);
});
angular.forEach($scope.servers, function(server) {
if (ipParts[3] > 255) {
ipParts[3] = ipParts[3] - 256;
ipParts[2]++;
}
if (ipParts[2] > 255) {
ipParts[2] = ipParts[2] - 256;
ipParts[1]++;
}
if (ipParts[1] > 255) {
ipParts[1] = ipParts[1] - 256;
ipParts[0]++;
}
if (ipParts[0] > 255) {
server.network[interface].ip = "";
return;
} else {
var ip = ipParts[0] + "." + ipParts[1] + "." + ipParts[2] + "." + ipParts[3]
server.network[interface].ip = ip;
ipParts[3] = ipParts[3] + interval;
}
})
}
})
.controller('partitionCtrl', function($scope, wizardFactory, dataService) {
@ -837,10 +896,10 @@ angular.module('compass.wizard', [
$scope.currentTab = $scope.tabs[0].url;
$scope.onClickTab = function (tab) {
$scope.onClickTab = function(tab) {
$scope.currentTab = tab.url;
}
$scope.isActiveTab = function(tabUrl) {
return tabUrl == $scope.currentTab;
}