diff --git a/v2.5/data/config.json b/v2.5/data/config.json
index d8aa00f..174ce04 100644
--- a/v2.5/data/config.json
+++ b/v2.5/data/config.json
@@ -63,6 +63,14 @@
"username": "root",
"password": "root"
},
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
"volume": {
"username": "cinder",
"password": "cinder"
@@ -73,6 +81,10 @@
"username": "admin",
"password": "admin"
},
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
"compute": {
"username": "nova",
"password": "nova"
@@ -85,6 +97,10 @@
"username": "glance",
"password": "glance"
},
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
"metering": {
"username": "ceilometer",
"password": "ceilometer"
@@ -97,6 +113,10 @@
"username": "swift",
"password": "swift"
},
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
"volume": {
"username": "cinder",
"password": "cinder"
diff --git a/v2.5/data/sample_machine_uploadfile.txt b/v2.5/data/sample_machine_uploadfile.txt
new file mode 100644
index 0000000..1c19f31
--- /dev/null
+++ b/v2.5/data/sample_machine_uploadfile.txt
@@ -0,0 +1,5 @@
+00:01:02:03:04:11,8,127.0.0.1
+00:01:02:03:04:12,8,127.0.0.1
+00:01:02:03:04:13,8,127.0.0.1
+00:01:02:03:04:14,8,127.0.0.1
+00:01:02:03:04:15,8,127.0.0.1
diff --git a/v2.5/data/sample_switch_uploadfile.txt b/v2.5/data/sample_switch_uploadfile.txt
new file mode 100644
index 0000000..5277ccc
--- /dev/null
+++ b/v2.5/data/sample_switch_uploadfile.txt
@@ -0,0 +1 @@
+127.0.0.1,huawei,2c,community
diff --git a/v2.5/data/wizard_steps.json b/v2.5/data/wizard_steps.json
index 67af395..413b180 100644
--- a/v2.5/data/wizard_steps.json
+++ b/v2.5/data/wizard_steps.json
@@ -23,21 +23,21 @@
}, {
"id": 4,
"name": "network",
- "title": "Network",
+ "title": "Physical Network",
"state": "",
"template": "src/app/partials/network.tpl.html",
"description": ""
}, {
"id": 5,
"name": "network_mapping",
- "title": "Network Mapping",
+ "title": "Virtual Network",
"state": "",
"template": "src/app/partials/network_mapping.tpl.html",
"description": ""
}, {
"id": 6,
"name": "package_config",
- "title": "Target System Config",
+ "title": "System Credentials",
"state": "",
"template": "src/app/partials/package_config.tpl.html",
"description": ""
diff --git a/v2.5/src/app/controllers/wizardController.coffee b/v2.5/src/app/controllers/wizardController.coffee
index 5f2c012..9518114 100644
--- a/v2.5/src/app/controllers/wizardController.coffee
+++ b/v2.5/src/app/controllers/wizardController.coffee
@@ -170,10 +170,10 @@ define(['./baseController'], ()->
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
+ installInterface[name] = value if value.is_mgmt
+ $rootScope.networkMappingInterfaces[name] = subnet for subnet in $scope.subnetworks when ('' + subnet.id) == ('' + value.subnet_id)
+ $rootScope.networkMappingInterfaces[name].subnet_id = value.subnet_id
+ $rootScope.networkMappingInterfaces[name].is_mgmt = value.is_mgmt
$scope.interfaces = installInterface # only need to store install interface
$cookieStore.put('networkMappingInterfaces', $rootScope.networkMappingInterfaces)
wizardService.networkCommit($scope, sendRequest)
@@ -181,14 +181,8 @@ define(['./baseController'], ()->
# display data in the table
wizardService.getClusterHosts($scope.cluster.id).success (data) ->
$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)
-
+ $scope.interfaces = $cookieStore.get('networkMappingInterfaces')
+ wizardService.setInterfaces($scope.interfaces)
wizardService.displayDataInTable($scope, $scope.servers)
]
.controller 'partitionCtrl', ['$scope', 'wizardService',
@@ -296,51 +290,118 @@ define(['./baseController'], ()->
$scope.autoAssignRoles = ->
wizardService.autoAssignRoles($scope)
+ $scope.haMultipleNodeAssignRoles = ->
+ rolesHash = {}
+ rolesHash[role.name] = role for role in $scope.roles
+ for i in [0...3]
+ $scope.servers[i].roles = []
+ $scope.servers[i].roles.push(rolesHash['controller'])
+ $scope.servers[i].roles.push(rolesHash['ha'])
+ $scope.servers[i].roles.push(rolesHash['ceph-mon'])
+ if i == 0
+ $scope.servers[i].roles.push(rolesHash['odl'])
+ $scope.servers[i].roles.push(rolesHash['onos'])
+ $scope.servers[i].roles.push(rolesHash['ceph-adm'])
+ for i in [3...$scope.servers.length]
+ $scope.servers[i].roles = []
+ $scope.servers[i].roles.push(rolesHash['compute'])
+ $scope.servers[i].roles.push(rolesHash['ceph-osd'])
+ return
+
$scope.commit = (sendRequest)->
wizardService.roleAssignCommit($scope, sendRequest)
wizardService.displayDataInTable($scope, $scope.servers)
]
- .controller 'networkMappingCtrl', ['$scope', 'wizardService',
- ($scope, wizardService) ->
+ .controller 'networkMappingCtrl', ['$scope', 'wizardService', '$cookieStore',
+ ($scope, wizardService, $cookieStore) ->
wizardService.networkMappingInit($scope)
wizardService.watchingTriggeredStep($scope)
- $scope.nics = {
- external: 'eth1',
- mgmt: 'eth1',
- storage: 'eth1'
- };
+ $scope.updateInternalNetwork = (network_name) ->
+ if ($scope.ips[network_name].cidr.split('.') < 4)
+ return
+ $scope.ips[network_name].start = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips[network_name].start.split('.')[3]
+ $scope.ips[network_name].end = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips[network_name].end.split('.')[3]
+ if network_name == 'mgmt'
+ $scope.ips.mgmt.internal_vip = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips.mgmt.internal_vip.split('.')[3]
+ return
- $scope.vlanTags = {
- mgmt: '101',
- storage: '102'
- };
+ $scope.updateExternalNetwork = (network_name) ->
+ nic = $scope.external[network_name]
+ $scope.ips[network_name].cidr = $scope.interfaces[nic].subnet
+ $scope.ips[network_name].start = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips[network_name].start.split('.')[3]
+ $scope.ips[network_name].end = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips[network_name].end.split('.')[3]
+ if network_name == 'external'
+ $scope.ips.external.public_vip = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips.external.public_vip.split('.')[3]
+ $scope.ips.external.gw_ip = $scope.ips[network_name].cidr.split('.').slice(0,3).join('.') +
+ '.' + $scope.ips.external.gw_ip.split('.')[3]
+ return
- $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'
- }
- };
+ defaultCfg = ->
+ $scope.internal = {
+ mgmt: 'eth1',
+ storage: 'eth1'
+ }
+
+ $scope.external = {
+ external: 'eth2'
+ }
+
+ $scope.vlanTags = {
+ mgmt: '101',
+ storage: '102'
+ }
+
+ $scope.ips = {
+ mgmt: {
+ start: '172.16.1.1',
+ end: '172.16.1.254',
+ cidr: '172.16.1.0/24',
+ internal_vip: '172.16.1.222'
+ },
+ external: {
+ start: '10.145.250.210',
+ end: '10.145.250.220',
+ cidr: '10.145.250.0/24',
+ gw_ip: '10.145.250.1',
+ public_vip: '10.145.250.222'
+ },
+ storage: {
+ start: '172.16.2.1',
+ end: '172.16.2.254',
+ cidr: '172.16.2.0/24'
+ }
+ }
+ $scope.updateExternalNetwork('external')
+ return
+
+ saveCfg = ->
+ networkMapping = {
+ internal: $scope.internal,
+ external: $scope.external,
+ vlanTags: $scope.vlanTags,
+ ips: $scope.ips
+ }
+ $cookieStore.put('networkMapping', networkMapping)
+ return
+
+ readCfg = ->
+ $scope.interfaces = $cookieStore.get('networkMappingInterfaces')
+ networkMapping = $cookieStore.get('networkMapping')
+ return defaultCfg() if !networkMapping
+ $scope.internal = networkMapping.internal
+ $scope.external = networkMapping.external
+ $scope.vlanTags = networkMapping.vlanTags
+ $scope.ips = networkMapping.ips
+ return
configureNeutronCfg = ->
neutronCfg = {
@@ -357,13 +418,13 @@ define(['./baseController'], ()->
networkCfg = {
'bond_mappings': [],
'sys_intf_mappings': [{
- 'interface': $scope.nics.mgmt,
+ 'interface': $scope.internal.mgmt,
'role': ['controller', 'compute'],
'vlan_tag': $scope.vlanTags.mgmt,
'type': 'vlan',
'name': 'mgmt'
}, {
- 'interface': $scope.nics.storage,
+ 'interface': $scope.internal.storage,
'role': ['controller', 'compute'],
'vlan_tag': $scope.vlanTags.storage,
'type': 'vlan',
@@ -377,7 +438,7 @@ define(['./baseController'], ()->
'nic_mappings': [],
'public_net_info': {
'no_gateway': 'False',
- 'external_gw': $scope.ips.external.ip,
+ 'external_gw': $scope.ips.external.gw_ip,
'enable': 'False',
'floating_ip_cidr': $scope.ips.external.cidr,
'floating_ip_start': $scope.ips.external.start,
@@ -401,7 +462,7 @@ define(['./baseController'], ()->
'netmask': wizardService.getNetMaskFromCIDR($scope.ips.external.cidr)
},
'provider_net_mappings': [{
- 'interface': $scope.interfaces.external,
+ 'interface': $scope.internal.mgmt,
'role': ['controller', 'compute'],
'type': 'ovs',
'name': 'br-prv',
@@ -443,27 +504,30 @@ define(['./baseController'], ()->
}
return
- configureHAProxyCfg = ->
- haCfg = {
- 'vip': $scope.ips.ha_proxy.vip
- }
- return haCfg
+ # configureHAProxyCfg = ->
+ # haCfg = {
+ # 'vip': $scope.ips.external.public_vip
+ # }
+ # return haCfg
# locate the install network, it is used to setup networkMapping and HAProxy
configureNetworkMapping()
+ # if there is network mapping configurations stored in cookie
+ readCfg()
- $scope.onDrop = ($event, key) ->
- $scope.pendingInterface = key
+ # $scope.onDrop = ($event, key) ->
+ # $scope.pendingInterface = key
- $scope.dropSuccessHandler = ($event, key, dict) ->
- dict[key].mapping_interface = $scope.pendingInterface
+ # $scope.dropSuccessHandler = ($event, key, dict) ->
+ # dict[key].mapping_interface = $scope.pendingInterface
$scope.commit = (sendRequest) ->
networkCfg = configureNetworkCfg()
neutronCfg = configureNeutronCfg()
- haCfg = configureHAProxyCfg()
+ saveCfg() # save changes to cookie
+ # haCfg = configureHAProxyCfg()
wizardService.networkMappingCommit($scope, networkCfg, $scope.networkMapping,
- neutronCfg, haCfg, sendRequest)
+ neutronCfg, sendRequest)
]
.controller 'reviewCtrl', ['$scope', 'wizardService', 'ngTableParams', '$filter', '$location', '$anchorScroll'
($scope, wizardService, ngTableParams, $filter, $location, $anchorScroll) ->
@@ -480,6 +544,9 @@ define(['./baseController'], ()->
wizardService.reviewCommit($scope, sendRequest)
wizardService.displayDataInTable($scope, $scope.servers)
+
+ $scope.reload = ->
+ wizardService.displayDataInTable($scope, $scope.servers)
]
.animation '.fade-animation', [->
return{
diff --git a/v2.5/src/app/partials/cluster-network.tpl.html b/v2.5/src/app/partials/cluster-network.tpl.html
index 43e93fd..441a8f2 100644
--- a/v2.5/src/app/partials/cluster-network.tpl.html
+++ b/v2.5/src/app/partials/cluster-network.tpl.html
@@ -5,6 +5,7 @@
+
+
+
+
+
+ {{key}}
+ {{value}}
+
+
+
+
+
+
+
+
+
+ Name
+ CIDR
+ IP Range
+ Role
+
+
+
+
+ {{ip.name}}
+ {{ip.cidr}}
+ {{ip.ip_ranges[0].join(' --- ')}}
+ {{ip.role.join(', ')}}
+
+
+
+
+
+
+
+
+
+ Name
+ Interface
+ Type
+ Role
+
+
+
+
+ {{ip.name}}
+ {{ip.interface}}
+ {{ip.type}} {{ip.vlan_tag}}
+ {{ip.role.join(', ')}}
+
+
+
+
+
+
+
+
+
+ Type
+ Interface
+ IP
+ Netmask
+
+
+
+
+ Interal
+ {{configuration.package_config['network_cfg']['internal_vip'].interface}}
+ {{configuration.package_config['network_cfg']['internal_vip'].ip}}
+ {{configuration.package_config['network_cfg']['internal_vip'].netmask}}
+
+
+ Public
+ {{configuration.package_config['network_cfg']['public_vip'].interface}}
+ {{configuration.package_config['network_cfg']['public_vip'].ip}}
+ {{configuration.package_config['network_cfg']['public_vip'].netmask}}
+
+
+
+
+
+
+
+
+
+ provider_net_mappings
+
+
+
+
+
+
+ {{key}}
+
+
+ {{value}}
+
+
+
+
+
+
+ public_net_info
+
+
+
+
+
+
+ {{key}}
+
+
+ {{value}}
+
+
+
+
+
+
+
+
+
+ tenent_network_type
+ {{configuration.package_config.neutron_config.openvswitch.tenant_network_type}}
+
+
+ network_vlan_ranges_{{key}}
+ {{value}}
+
+
+ bridge_mappins_{{key}}
+ {{value}}
+
+
+
diff --git a/v2.5/src/app/partials/network.tpl.html b/v2.5/src/app/partials/network.tpl.html
index 3718680..609a6ff 100644
--- a/v2.5/src/app/partials/network.tpl.html
+++ b/v2.5/src/app/partials/network.tpl.html
@@ -1,4 +1,12 @@
+
+
+ Please provide 3 subnets.
+ Check one as OS install network and use Autofill to assign ips. This is used to install OS.
+ The other 2 subnets are used in the next step to configure openstack network.
+
+
+
@@ -8,8 +16,8 @@
- Autofill IP Address for Each Interface
- Add Subnet
+ Autofill IP Address for All Interfaces
+ Add Subnet
{{autoFillButtonDisplay}}
@@ -68,7 +76,7 @@
-
+
{{sub.subnet}}
diff --git a/v2.5/src/app/partials/network_mapping.tpl.html b/v2.5/src/app/partials/network_mapping.tpl.html
index a32ec75..7632bc1 100644
--- a/v2.5/src/app/partials/network_mapping.tpl.html
+++ b/v2.5/src/app/partials/network_mapping.tpl.html
@@ -1,11 +1,16 @@
-
+
+
+
+ Bind openstack management and storage network to a physical inteface.
+ Two virtual networks will be created on the NIC based on the configurations.
+ Just choose network interface. Use the default values for the remaining configurations.
+
+
-
- Allocate IP Address for Each Network Interface
-
+
Internal Network Interface
+
+
+
+
+ Management Network Virtual IP
+
+
+
+
+
+
+
+
+
+
+ The external network interface need to connect to Internet.
+ Set external virtual ip for HA mode
+
+
+
+
+
External Network Interface
+
+
+
+
+ External Network Virtual IP
+
+
+
+
+
diff --git a/v2.5/src/app/partials/review.tpl.html b/v2.5/src/app/partials/review.tpl.html
index 89401a2..60ebc05 100644
--- a/v2.5/src/app/partials/review.tpl.html
+++ b/v2.5/src/app/partials/review.tpl.html
@@ -80,7 +80,7 @@
-
+
{{key}}
{{value.percentage}}
{{value.max_size}}
@@ -119,7 +119,7 @@
-
+
{{key}}
@@ -154,7 +154,7 @@
-
+
{{server.networks[key].ip}}
@@ -211,51 +211,141 @@
+
+
+
+ {{key}}
+ {{value}}
+
+
+
+
+
+
+
+
+
+ Name
+ CIDR
+ IP Range
+ Role
+
+
+
+
+ {{ip.name}}
+ {{ip.cidr}}
+ {{ip.ip_ranges[0].join(' --- ')}}
+ {{ip.role.join(', ')}}
+
+
+
+
+
+
+ Name
Interface
- Network
+ Type
+ Role
-
- {{value}}
-
-
- {{key}}
-
-
-
-
+
+ {{ip.name}}
+ {{ip.interface}}
+ {{ip.type}} {{ip.vlan_tag}}
+ {{ip.role.join(', ')}}
+
+
-
-
-
+
+
+
+
+
+ Type
+ Interface
+ IP
+ Netmask
+
+
+
+
+ Interal
+ {{packageConfig['network_cfg']['internal_vip'].interface}}
+ {{packageConfig['network_cfg']['internal_vip'].ip}}
+ {{packageConfig['network_cfg']['internal_vip'].netmask}}
+
+
+ Public
+ {{packageConfig['network_cfg']['public_vip'].interface}}
+ {{packageConfig['network_cfg']['public_vip'].ip}}
+ {{packageConfig['network_cfg']['public_vip'].netmask}}
+
+
+
+
+
+
-
- {{key}}
+
+ provider_net_mappings
+
+
+
+
+
+
+ {{key}}
+
+
{{value}}
-
- {{key}}
+
+
+
+
+
+ public_net_info
+
+
+
+
+
+
+ {{key}}
+
+
{{value}}
-
-
-
+
+
+
-
-