diff --git a/.gitignore b/.gitignore
index d94c0c8..f63ae55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,9 @@
*~
*.swp
.DS_Store
+node_modules
+bower_components
+.remote-sync.json
+venv
+
+
diff --git a/v2.5/assets/css/angular-ui-tree.min.css b/v2.5/assets/css/angular-ui-tree.min.css
old mode 100755
new mode 100644
diff --git a/v2.5/assets/css/chosen.css b/v2.5/assets/css/chosen.css
old mode 100755
new mode 100644
diff --git a/v2.5/bower.json b/v2.5/bower.json
index aa82302..a124d3e 100644
--- a/v2.5/bower.json
+++ b/v2.5/bower.json
@@ -16,6 +16,7 @@
"devDependencies": {
"angular-bootstrap": "~0.12.0",
"angular": "1.2.16",
+ "angular-cookies": "1.2.16",
"angular-daterangepicker": "~0.1.12",
"bootstrap": "3.1.1",
"angular-ui-router": "~0.2.13",
diff --git a/v2.5/data/config.json b/v2.5/data/config.json
index f6feeba..d8aa00f 100644
--- a/v2.5/data/config.json
+++ b/v2.5/data/config.json
@@ -16,38 +16,17 @@
"max_size": "20G"
}
},
- "interface": {
- "eth0": {
- "subnet_id": 1,
- "is_mgmt": true,
- "is_promiscuous": false
- },
- "eth1": {
- "subnet_id": 2,
- "is_mgmt": false,
- "is_promiscuous": true
- },
- "eth2": {
- "subnet_id": 1,
- "is_mgmt": false,
- "is_promiscuous": false
- },
- "eth3": {
- "subnet_id": 2,
- "is_mgmt": false,
- "is_promiscuous": false
- }
- },
+ "interface": { },
"general": {
"timezone": "America/Los_Angeles",
"language": "en",
"http_proxy": "",
"https_proxy": "",
"no_proxy": [""],
- "ntp_server": "",
- "dns_servers": [""],
+ "ntp_server": "127.0.0.1",
+ "dns_servers": ["ods.com"],
"search_path": ["ods.com"],
- "domain": "ods.com",
+ "domain": ["ods.com"],
"default_gateway": "10.145.88.1",
"local_repo": ""
},
@@ -124,8 +103,7 @@
}
},
"network_mapping": {
- "management": "",
- "tenant": "",
+ "mgmt": "",
"storage": "",
"external": ""
}
@@ -471,4 +449,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/v2.5/data/config.json-backup b/v2.5/data/config.json-backup
new file mode 100644
index 0000000..f6feeba
--- /dev/null
+++ b/v2.5/data/config.json-backup
@@ -0,0 +1,474 @@
+{
+ "openstack": {
+ "cluster": {
+ "id": 1,
+ "name": "demo",
+ "adapter_id": 1,
+ "os_id": 1
+ },
+ "partition": {
+ "/var": {
+ "percentage": 30,
+ "max_size": "10G"
+ },
+ "/usr": {
+ "percentage": 30,
+ "max_size": "20G"
+ }
+ },
+ "interface": {
+ "eth0": {
+ "subnet_id": 1,
+ "is_mgmt": true,
+ "is_promiscuous": false
+ },
+ "eth1": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": true
+ },
+ "eth2": {
+ "subnet_id": 1,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ },
+ "eth3": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ }
+ },
+ "general": {
+ "timezone": "America/Los_Angeles",
+ "language": "en",
+ "http_proxy": "",
+ "https_proxy": "",
+ "no_proxy": [""],
+ "ntp_server": "",
+ "dns_servers": [""],
+ "search_path": ["ods.com"],
+ "domain": "ods.com",
+ "default_gateway": "10.145.88.1",
+ "local_repo": ""
+ },
+ "server_credentials": {
+ "username": "",
+ "password": ""
+ },
+ "service_credentials": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "console_credentials": {
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "network_mapping": {
+ "management": "",
+ "tenant": "",
+ "storage": "",
+ "external": ""
+ }
+ },
+ "openstack_ceph": {
+ "cluster": {
+ "id": 1,
+ "name": "demo",
+ "adapter_id": 1,
+ "os_id": 1
+ },
+ "partition": {
+ "/var": {
+ "percentage": 30,
+ "max_size": "10G"
+ },
+ "/usr": {
+ "percentage": 30,
+ "max_size": "20G"
+ }
+ },
+ "interface": {
+ "eth0": {
+ "subnet_id": 1,
+ "is_mgmt": true,
+ "is_promiscuous": false
+ },
+ "eth1": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": true
+ },
+ "eth2": {
+ "subnet_id": 1,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ },
+ "eth3": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ }
+ },
+ "general": {
+ "timezone": "America/Los_Angeles",
+ "language": "en",
+ "http_proxy": "",
+ "https_proxy": "",
+ "no_proxy": [""],
+ "ntp_server": "",
+ "dns_servers": [""],
+ "search_path": ["ods.com"],
+ "domain": "ods.com",
+ "default_gateway": "10.145.88.1",
+ "local_repo": ""
+ },
+ "server_credentials": {
+ "username": "",
+ "password": ""
+ },
+ "service_credentials": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "console_credentials": {
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "network_mapping": {
+ "management": "",
+ "tenant": "",
+ "storage": "",
+ "external": "",
+ "public_network": "",
+ "cluster_network": ""
+ },
+ "ceph_config": {
+ "global_config": {
+ "osd_pool_pg_num": "1024",
+ "osd_pool_pgp_num": "1024",
+ "osd_pool_size": "3"
+ },
+ "osd_config": {
+ "journal_size": "10000",
+ "op_threads": 10
+ }
+ }
+ },
+ "os_only": {
+ "cluster": {
+ "id": 1,
+ "name": "demo",
+ "adapter_id": 1,
+ "os_id": 1
+ },
+ "partition": {
+ "/var": {
+ "percentage": 30,
+ "max_size": "10G"
+ },
+ "/usr": {
+ "percentage": 30,
+ "max_size": "20G"
+ }
+ },
+ "interface": {
+ "eth0": {
+ "subnet_id": 1,
+ "is_mgmt": true,
+ "is_promiscuous": false
+ },
+ "eth1": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": true
+ },
+ "eth2": {
+ "subnet_id": 1,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ },
+ "eth3": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ }
+ },
+ "general": {
+ "timezone": "America/Los_Angeles",
+ "language": "en",
+ "http_proxy": "",
+ "https_proxy": "",
+ "no_proxy": [""],
+ "ntp_server": "",
+ "dns_servers": [""],
+ "search_path": ["ods.com"],
+ "domain": "ods.com",
+ "default_gateway": "10.145.88.1",
+ "local_repo": ""
+ },
+ "server_credentials": {
+ "username": "",
+ "password": ""
+ }
+ },
+ "ceph_firefly": {
+ "cluster": {
+ "id": 1,
+ "name": "demo",
+ "adapter_id": 1,
+ "os_id": 1
+ },
+ "partition": {
+ "/var": {
+ "percentage": 30,
+ "max_size": "10G"
+ },
+ "/usr": {
+ "percentage": 30,
+ "max_size": "20G"
+ }
+ },
+ "interface": {
+ "eth0": {
+ "subnet_id": 1,
+ "is_mgmt": true,
+ "is_promiscuous": false
+ },
+ "eth1": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": true
+ },
+ "eth2": {
+ "subnet_id": 1,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ },
+ "eth3": {
+ "subnet_id": 2,
+ "is_mgmt": false,
+ "is_promiscuous": false
+ }
+ },
+ "general": {
+ "timezone": "America/Los_Angeles",
+ "language": "en",
+ "http_proxy": "",
+ "https_proxy": "",
+ "no_proxy": [""],
+ "ntp_server": "",
+ "dns_servers": [""],
+ "search_path": ["ods.com"],
+ "domain": "ods.com",
+ "default_gateway": "10.145.88.1",
+ "local_repo": ""
+ },
+ "server_credentials": {
+ "username": "",
+ "password": ""
+ },
+ "service_credentials": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "console_credentials": {
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ },
+ "network_mapping": {
+ "public_network": "",
+ "cluster_network": ""
+ },
+ "ceph_config": {
+ "global_config": {
+ "osd_pool_pg_num": "1024",
+ "osd_pool_pgp_num": "1024",
+ "osd_pool_size": "3"
+ },
+ "osd_config": {
+ "journal_size": "10000",
+ "op_threads": 10
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/v2.5/data/wizard_steps.json b/v2.5/data/wizard_steps.json
index 68857f0..67af395 100644
--- a/v2.5/data/wizard_steps.json
+++ b/v2.5/data/wizard_steps.json
@@ -15,39 +15,39 @@
"description": ""
}, {
"id": 3,
- "name": "network",
- "title": "Network",
- "state": "",
- "template": "src/app/partials/network.tpl.html",
- "description": ""
- }, {
- "id": 4,
"name": "partition",
"title": "Partition",
"state": "",
"template": "src/app/partials/partition.tpl.html",
"description": ""
+ }, {
+ "id": 4,
+ "name": "network",
+ "title": "Network",
+ "state": "",
+ "template": "src/app/partials/network.tpl.html",
+ "description": ""
}, {
"id": 5,
+ "name": "network_mapping",
+ "title": "Network Mapping",
+ "state": "",
+ "template": "src/app/partials/network_mapping.tpl.html",
+ "description": ""
+ }, {
+ "id": 6,
"name": "package_config",
"title": "Target System Config",
"state": "",
"template": "src/app/partials/package_config.tpl.html",
"description": ""
}, {
- "id": 6,
+ "id": 7,
"name": "role_assign",
"title": "Role Assignment",
"state": "",
"template": "src/app/partials/role_assignment.tpl.html",
"description": ""
- }, {
- "id": 7,
- "name": "network_mapping",
- "title": "Network Mapping",
- "state": "",
- "template": "src/app/partials/network_mapping.tpl.html",
- "description": ""
}, {
"id": 8,
"name": "review",
diff --git a/v2.5/src/app/app.coffee b/v2.5/src/app/app.coffee
old mode 100755
new mode 100644
index 8a54333..0adf45c
--- a/v2.5/src/app/app.coffee
+++ b/v2.5/src/app/app.coffee
@@ -1,6 +1,7 @@
define(['angular'
'uiRouter'
'angularTable'
+ 'angularCookies'
'uiBootstrap'
'angularDragDrop'
'app/controllers/all'
@@ -16,6 +17,7 @@ define(['angular'
'ngTable'
'ui.bootstrap'
'ngDragDrop'
+ 'ngCookies'
'compass.controllers'
'compass.services'
'compass.factories'
@@ -47,21 +49,21 @@ define(['angular'
controller: 'wizardCtrl'
templateUrl: 'src/app/partials/wizard.tpl.html'
requireAuthenticated: true
- resolve:
+ resolve:
clusterData: ['$stateParams', '$q', 'wizardService', ($stateParams, $q, wizardService) ->
clusterId = $stateParams.id
deferred = $q.defer()
wizardService.getClusterById(clusterId).success (data) ->
deferred.resolve(data)
-
+
return deferred.promise;
]
- machinesHostsData: ['$q', 'wizardService', ($q, wizardService) ->
+ machinesHostsData: ['$q', 'wizardService', ($q, wizardService) ->
deferred = $q.defer()
wizardService.getAllMachineHosts().success (data) ->
deferred.resolve(data)
-
+
return deferred.promise
]
wizardStepsData: ['$q', 'wizardService', ($q, wizardService) -> # get the create-cluster-wizard steps
@@ -71,7 +73,7 @@ define(['angular'
);
return deferred.promise
]
- clusterConfigData: ['$stateParams', '$q', 'wizardService', ($stateParams, $q, wizardService) ->
+ clusterConfigData: ['$stateParams', '$q', 'wizardService', ($stateParams, $q, wizardService) ->
clusterId = $stateParams.id
deferred = $q.defer()
wizardService.getClusterConfig(clusterId).success((data) ->
@@ -172,4 +174,4 @@ define(['angular'
$state.transitionTo("login")
event.preventDefault()
]
-)
\ No newline at end of file
+)
diff --git a/v2.5/src/app/controllers/all.coffee b/v2.5/src/app/controllers/all.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/controllers/baseController.coffee b/v2.5/src/app/controllers/baseController.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/controllers/wizardController.coffee b/v2.5/src/app/controllers/wizardController.coffee
index 83fccf8..5f2c012 100644
--- a/v2.5/src/app/controllers/wizardController.coffee
+++ b/v2.5/src/app/controllers/wizardController.coffee
@@ -1,4 +1,4 @@
-define(['./baseController'], ()->
+define(['./baseController'], ()->
'use strict';
angular.module('compass.controllers')
@@ -44,7 +44,7 @@ define(['./baseController'], ()->
$scope.server_columns = data.showall
wizardService.displayDataInTable($scope, $scope.allservers)
-
+
wizardService.watchingTriggeredStep($scope)
$scope.hideUnselected = ->
@@ -52,7 +52,7 @@ define(['./baseController'], ()->
$scope.ifPreSelect = (server) ->
server.disable = false
- if server.clusters
+ if server.clusters
server.disabled = true if server.clusters.length > 0
for svCluster in server.clusters
if svCluster.id == $scope.cluster.id
@@ -89,7 +89,7 @@ define(['./baseController'], ()->
wizardService.watchAndAddNewServers($scope)
$scope.commit = (sendRequest) ->
- wizardService.svSelectonCommit($scope)
+ wizardService.svSelectonCommit($scope)
]
.controller 'globalCtrl', ['$scope', 'wizardService', '$q',
($scope, wizardService, $q) ->
@@ -106,8 +106,8 @@ define(['./baseController'], ()->
$scope.commit = (sendRequest) ->
wizardService.globalCommit($scope,sendRequest)
]
- .controller 'networkCtrl', ['$scope', 'wizardService', 'ngTableParams', '$filter', '$modal', '$timeout'
- ($scope, wizardService, ngTableParams, $filter, $modal, $timeout) ->
+ .controller 'networkCtrl', ['$rootScope', '$scope', 'wizardService', 'ngTableParams', '$filter', '$modal', '$timeout', '$cookieStore',
+ ($rootScope, $scope, wizardService, ngTableParams, $filter, $modal, $timeout, $cookieStore) ->
wizardService.networkInit($scope)
wizardService.watchingTriggeredStep($scope)
@@ -139,6 +139,16 @@ define(['./baseController'], ()->
delete $scope.interfaces[delInterface]
delete sv.networks[delInterface] for sv in $scope.servers
+ $scope.selectAsInstallInterface = (evt, name) ->
+ checkbox = evt.target
+ if !checkbox.checked
+ return
+
+ for n of $scope.interfaces
+ if n != name
+ $scope.interfaces[n].is_mgmt = false
+ return
+
$scope.openAddSubnetModal = ->
modalInstance = $modal.open(
templateUrl: "src/app/partials/modalAddSubnet.tpl.html"
@@ -157,6 +167,15 @@ define(['./baseController'], ()->
)
$scope.commit = (sendRequest) ->
+ installInterface = {}; # the physical interface to install os
+ $rootScope.networkMappingInterfaces = {}; # the interface name are needed to map openstack componets
+ for name, value of $scope.interfaces
+ if value.is_mgmt
+ installInterface[name] = value
+ else
+ $rootScope.networkMappingInterfaces[name] = value
+ $scope.interfaces = installInterface # only need to store install interface
+ $cookieStore.put('networkMappingInterfaces', $rootScope.networkMappingInterfaces)
wizardService.networkCommit($scope, sendRequest)
# display data in the table
@@ -164,6 +183,10 @@ define(['./baseController'], ()->
$scope.servers = data
if $scope.servers[0].networks and Object.keys($scope.servers[0].networks).length != 0
$scope.interfaces = $scope.servers[0].networks
+ # retrive saved network mapping interfaces
+ savedNetworkMappingInterfaces = $cookieStore.get('networkMappingInterfaces');
+ for name, value of savedNetworkMappingInterfaces
+ $scope.interfaces[name] = value
wizardService.setInterfaces($scope.interfaces)
wizardService.displayDataInTable($scope, $scope.servers)
@@ -284,6 +307,151 @@ define(['./baseController'], ()->
wizardService.networkMappingInit($scope)
wizardService.watchingTriggeredStep($scope)
+ $scope.nics = {
+ external: 'eth1',
+ mgmt: 'eth1',
+ storage: 'eth1'
+ };
+
+ $scope.vlanTags = {
+ mgmt: '101',
+ storage: '102'
+ };
+
+ $scope.ips = {
+ mgmt: {
+ start: '172.16.1.10',
+ end: '172.16.1.255',
+ cidr: '127.16.1.0/24',
+ internal_vip: '172.16.1.222'
+ },
+ external: {
+ start: '10.145.250.10',
+ end: '10.145.250.255',
+ cidr: '10.145.250.0/24',
+ gw_ip: '10.145.250.1',
+ public_vip: '10.145.250.221'
+ },
+ storage: {
+ start: '172.16.2.10',
+ end: '172.16.2.255',
+ cidr: '172.16.2.0/24'
+ },
+ ha_proxy: {
+ vip: '10.1.0.222'
+ }
+ };
+
+ configureNeutronCfg = ->
+ neutronCfg = {
+ 'openvswitch': {
+ 'tenant_network_type': 'vxlan',
+ 'network_vlan_ranges': ['physnet:1:4094'],
+ 'bridge_mappings': ['physnet:br-prv']
+ }
+ }
+ return neutronCfg
+
+ configureNetworkCfg = ->
+ #configure the packageConfig.network_cfg
+ networkCfg = {
+ 'bond_mappings': [],
+ 'sys_intf_mappings': [{
+ 'interface': $scope.nics.mgmt,
+ 'role': ['controller', 'compute'],
+ 'vlan_tag': $scope.vlanTags.mgmt,
+ 'type': 'vlan',
+ 'name': 'mgmt'
+ }, {
+ 'interface': $scope.nics.storage,
+ 'role': ['controller', 'compute'],
+ 'vlan_tag': $scope.vlanTags.storage,
+ 'type': 'vlan',
+ 'name': 'storage'
+ }, {
+ 'interface': 'br-prv',
+ 'role': ['controller', 'compute'],
+ 'type': 'ovs',
+ 'name': 'external'
+ }],
+ 'nic_mappings': [],
+ 'public_net_info': {
+ 'no_gateway': 'False',
+ 'external_gw': $scope.ips.external.ip,
+ 'enable': 'False',
+ 'floating_ip_cidr': $scope.ips.external.cidr,
+ 'floating_ip_start': $scope.ips.external.start,
+ 'floating_ip_end': $scope.ips.external.end,
+ 'provider_network': 'physnet',
+ 'subnet': 'ext-subnet',
+ 'network': 'ext-net',
+ 'enable_dhcp': 'False',
+ 'segment_id': 1000,
+ 'router': 'router-ext',
+ 'type': 'vlan'
+ },
+ 'internal_vip': {
+ 'interface': 'mgmt',
+ 'ip': $scope.ips.mgmt.internal_vip,
+ 'netmask': wizardService.getNetMaskFromCIDR($scope.ips.mgmt.cidr)
+ },
+ 'public_vip': {
+ 'interface': 'external',
+ 'ip': $scope.ips.external.public_vip,
+ 'netmask': wizardService.getNetMaskFromCIDR($scope.ips.external.cidr)
+ },
+ 'provider_net_mappings': [{
+ 'interface': $scope.interfaces.external,
+ 'role': ['controller', 'compute'],
+ 'type': 'ovs',
+ 'name': 'br-prv',
+ 'network': 'physnet'
+ }],
+ 'ip_settings': [{
+ 'cidr': $scope.ips.mgmt.cidr,
+ 'role': ['controller', 'compute'],
+ 'name': 'mgmt',
+ 'ip_ranges': [[$scope.ips.mgmt.start, $scope.ips.mgmt.end]]
+ }, {
+ 'cidr': $scope.ips.storage.cidr,
+ 'role': ['controller', 'compute'],
+ 'name': 'storage',
+ 'ip_ranges': [[$scope.ips.storage.start, $scope.ips.storage.end]]
+ }, {
+ 'gw': $scope.ips.external.gw_ip,
+ 'cidr': $scope.ips.external.cidr,
+ 'role': ['controller', 'compute'],
+ 'name': 'external',
+ 'ip_ranges': [[$scope.ips.external.start, $scope.ips.external.end]]
+ }]
+ }
+ return networkCfg
+
+ configureNetworkMapping = ->
+ installNic = {}
+ nicName = ''
+ # somehow the interfaces are stored from previous step
+ # use it to configure the install network for networkMapping
+ for nic, value of $scope.interfaces
+ installNic = value if value.is_mgmt
+ nicName = nic if value.is_mgmt
+ $scope.networkMapping = {
+ 'install': {
+ 'interface': nicName,
+ 'subnet': installNic.subnet
+ }
+ }
+ return
+
+ configureHAProxyCfg = ->
+ haCfg = {
+ 'vip': $scope.ips.ha_proxy.vip
+ }
+ return haCfg
+
+ # locate the install network, it is used to setup networkMapping and HAProxy
+ configureNetworkMapping()
+
$scope.onDrop = ($event, key) ->
$scope.pendingInterface = key
@@ -291,14 +459,18 @@ define(['./baseController'], ()->
dict[key].mapping_interface = $scope.pendingInterface
$scope.commit = (sendRequest) ->
- wizardService.networkMappingCommit($scope, sendRequest)
+ networkCfg = configureNetworkCfg()
+ neutronCfg = configureNeutronCfg()
+ haCfg = configureHAProxyCfg()
+ wizardService.networkMappingCommit($scope, networkCfg, $scope.networkMapping,
+ neutronCfg, haCfg, sendRequest)
]
.controller 'reviewCtrl', ['$scope', 'wizardService', 'ngTableParams', '$filter', '$location', '$anchorScroll'
($scope, wizardService, ngTableParams, $filter, $location, $anchorScroll) ->
wizardService.reviewInit($scope)
wizardService.watchingTriggeredStep($scope)
- $scope.scrollTo = (id) ->
+ $scope.scrollTo = (id) ->
old = $location.hash();
$location.hash(id);
$anchorScroll();
diff --git a/v2.5/src/app/directives/all.coffee b/v2.5/src/app/directives/all.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/directives/baseDirective.coffee b/v2.5/src/app/directives/baseDirective.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/factory/all.coffee b/v2.5/src/app/factory/all.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/factory/baseFactory.coffee b/v2.5/src/app/factory/baseFactory.coffee
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-config.tpl.html b/v2.5/src/app/partials/cluster-config.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-nav.tpl.html b/v2.5/src/app/partials/cluster-nav.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-network.tpl.html b/v2.5/src/app/partials/cluster-network.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-overview.tpl.html b/v2.5/src/app/partials/cluster-overview.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-partition.tpl.html b/v2.5/src/app/partials/cluster-partition.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-roles.tpl.html b/v2.5/src/app/partials/cluster-roles.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster-security.tpl.html b/v2.5/src/app/partials/cluster-security.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/cluster.tpl.html b/v2.5/src/app/partials/cluster.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/find-new-servers.tpl.html b/v2.5/src/app/partials/find-new-servers.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/network.tpl.html b/v2.5/src/app/partials/network.tpl.html
index 92772f7..3718680 100644
--- a/v2.5/src/app/partials/network.tpl.html
+++ b/v2.5/src/app/partials/network.tpl.html
@@ -1,218 +1,216 @@
-
-
-
-
-
-
-
-
-
- Autofill IP Address for Each Interface
- Add Subnet
- {{autoFillButtonDisplay}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Column Show / Hide
-
-
-
-
-
-
-
- Set Subnet
-
-
-
-
-
{{alert.msg}}
-
-
-
+
+
+
+
+
+
+
+
+
+ Autofill IP Address for Each Interface
+ Add Subnet
+ {{autoFillButtonDisplay}}
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+ Column Show / Hide
+
+
+
+
+
+
+
+ Set Subnet
+
+
+
+
+ {{alert.msg}}
+
-
diff --git a/v2.5/src/app/partials/network_mapping.tpl.html b/v2.5/src/app/partials/network_mapping.tpl.html
index 9c5b96d..a32ec75 100644
--- a/v2.5/src/app/partials/network_mapping.tpl.html
+++ b/v2.5/src/app/partials/network_mapping.tpl.html
@@ -1,4 +1,113 @@
+
+
+
+
+
+ Allocate IP Address for Each Network Interface
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v2.5/src/app/partials/network_mapping.tpl.html-old b/v2.5/src/app/partials/network_mapping.tpl.html-old
new file mode 100644
index 0000000..9c5b96d
--- /dev/null
+++ b/v2.5/src/app/partials/network_mapping.tpl.html-old
@@ -0,0 +1,51 @@
+
\ No newline at end of file
diff --git a/v2.5/src/app/partials/progressbar.tpl.html b/v2.5/src/app/partials/progressbar.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/server-list.tpl.html b/v2.5/src/app/partials/server-list.tpl.html
old mode 100755
new mode 100644
diff --git a/v2.5/src/app/partials/topnav.tpl.html b/v2.5/src/app/partials/topnav.tpl.html
index fce3fde..6a4ae24 100644
--- a/v2.5/src/app/partials/topnav.tpl.html
+++ b/v2.5/src/app/partials/topnav.tpl.html
@@ -1,14 +1,14 @@