From 9797a4c4a6f15136ed49287e1dc6108898794a57 Mon Sep 17 00:00:00 2001 From: Ming He Date: Tue, 5 Jan 2016 16:28:13 -0800 Subject: [PATCH] update ui to work with ansible ha liberty Change-Id: I81810c1bcdfa944772931917386c36d890660a88 --- v2.5/data/config.json | 20 ++ v2.5/data/sample_machine_uploadfile.txt | 5 + v2.5/data/sample_switch_uploadfile.txt | 1 + v2.5/data/wizard_steps.json | 6 +- .../app/controllers/wizardController.coffee | 189 +++++++++++------ .../src/app/partials/cluster-network.tpl.html | 160 +++++++++++++++ v2.5/src/app/partials/network.tpl.html | 14 +- .../src/app/partials/network_mapping.tpl.html | 126 +++++++++--- v2.5/src/app/partials/review.tpl.html | 159 ++++++++++++--- .../src/app/partials/role_assignment.tpl.html | 13 +- v2.5/src/app/services/wizardService.coffee | 5 +- v2.5/target/data/config.json | 20 ++ v2.5/target/data/wizard_steps.json | 6 +- .../src/app/controllers/wizardController.js | 192 ++++++++++++------ .../src/app/partials/cluster-network.tpl.html | 2 +- v2.5/target/src/app/partials/network.tpl.html | 2 +- .../src/app/partials/network_mapping.tpl.html | 6 +- v2.5/target/src/app/partials/review.tpl.html | 4 +- .../src/app/partials/role_assignment.tpl.html | 2 +- v2.5/target/src/app/services/wizardService.js | 4 +- 20 files changed, 725 insertions(+), 211 deletions(-) create mode 100644 v2.5/data/sample_machine_uploadfile.txt create mode 100644 v2.5/data/sample_switch_uploadfile.txt 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 @@
+ +
+
+ OS Installation Network +
+
+ + + + + + + +
{{key}}{{value}}
+
+
+
+
+ IP Settings +
+
+ + + + + + + + + + + + + + + + +
NameCIDRIP RangeRole
{{ip.name}}{{ip.cidr}}{{ip.ip_ranges[0].join(' --- ')}}{{ip.role.join(', ')}} +
+
+
+
+
+ sys_intf_mappings +
+
+ + + + + + + + + + + + + + + + +
NameInterfaceTypeRole
{{ip.name}}{{ip.interface}}{{ip.type}} {{ip.vlan_tag}}{{ip.role.join(', ')}} +
+
+
+
+
+ Virtual IPs +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
TypeInterfaceIPNetmask
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}}
+
+
+
+
+ Network Mapping +
+
+ + + + + + + + + + + +
provider_net_mappings +
+
+ {{key}} +
+
{{value}}
+ + + + + + + + + + + +
public_net_info +
+
+ {{key}} +
+
{{value}}
+
+
+
+
+ Target System Configurations - NeutronConfig +
+
+ + + + + + + + + + + + + + + +
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 - + Autofill IP Address for All Interfaces +

@@ -68,7 +76,7 @@ - + @@ -119,7 +119,7 @@ - @@ -154,7 +154,7 @@ - @@ -211,51 +211,141 @@
- Network Mapping + OS Installation Network +
+
+
- 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

@@ -18,19 +23,91 @@ - + + + + + + + +
{{network_key}} - + + + + + + + + + + Vlan Tag + +
+
+
+
+ + Management Network Virtual IP + + +
+
+
+
+
+
+
+
+ The external network interface need to connect to Internet.
+ Set external virtual ip for HA mode +
+
+
+
+

External Network Interface

+ + + + + + + + + + + + + + +
NetworkNICCIDRStart IPEnd IPGateway IP
+ + {{network_key}} + + + @@ -48,32 +125,24 @@ placeholder="IP End"> - - Public Virtual IP - - - - Gateway IP - - - - Internal Virtual IP - - - - Vlan Tag - - +
+
+
+ + 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}} + {{key}}
+ {{server.networks[key].ip}}
+ + + + + + +
{{key}}{{value}}
+
+
+
+
+ IP Settings +
+
+ + + + + + + + + + + + + + + + +
NameCIDRIP RangeRole
{{ip.name}}{{ip.cidr}}{{ip.ip_ranges[0].join(' --- ')}}{{ip.role.join(', ')}} +
+
+
+
+
+ sys_intf_mappings
+ - + + - - - - - + + + + + +
Name InterfaceNetworkTypeRole
{{value}} -
- {{key}} -
-
{{ip.name}}{{ip.interface}}{{ip.type}} {{ip.vlan_tag}}{{ip.role.join(', ')}} +
-
-
- +
+
- Target System Configurations - cephConfig + Virtual IPs +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
TypeInterfaceIPNetmask
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}}
+
+
+
+
+ Network Mapping
- - + + + + + + - - + +
{{key}}
provider_net_mappings +
+
+ {{key}} +
+
{{value}}
{{key}}
+ + + + + + + + - - -
public_net_info +
+
+ {{key}} +
+
{{value}}
+ + +

-
-
Target System Configurations - NeutronConfig @@ -265,7 +355,7 @@ tenent_network_type - {{neutronConfig.openvswitch.tenant_network_type}} + {{packageConfig.neutron_config.openvswitch.tenant_network_type}} tunnel_id_ranges_{{key}} @@ -275,6 +365,14 @@ network_vlan_ranges_{{key}} {{value}} + + network_vlan_ranges_{{key}} + {{value}} + + + bridge_mappins_{{key}} + {{value}} + bridge_mappins_{{key}} {{value}} @@ -283,7 +381,6 @@

-
@@ -564,7 +661,7 @@
- --> \ No newline at end of file + --> diff --git a/v2.5/src/app/partials/role_assignment.tpl.html b/v2.5/src/app/partials/role_assignment.tpl.html index 2fc5e83..b097f67 100644 --- a/v2.5/src/app/partials/role_assignment.tpl.html +++ b/v2.5/src/app/partials/role_assignment.tpl.html @@ -1,5 +1,5 @@
-
+
@@ -58,12 +58,17 @@ + +
-
\ No newline at end of file +
diff --git a/v2.5/src/app/services/wizardService.coffee b/v2.5/src/app/services/wizardService.coffee index 27f2f9e..76c10a5 100644 --- a/v2.5/src/app/services/wizardService.coffee +++ b/v2.5/src/app/services/wizardService.coffee @@ -883,7 +883,7 @@ define(['./baseService'], ()-> "message": response.data ) ) - networkMappingCommit: ($scope, networkCfg, networkMapping, neutronCfg, haCfg, sendRequest) -> + networkMappingCommit: ($scope, networkCfg, networkMapping, neutronCfg, sendRequest) -> wizardFactory = @wizardFactory if !sendRequest wizardFactory.setCommitState( @@ -902,13 +902,14 @@ define(['./baseService'], ()-> "network_cfg": networkCfg "network_mapping": networkMapping "neutron_config": neutronCfg - "ha_proxy": haCfg + #"ha_proxy": haCfg "enable_vpnaas": "False" "enable_fwaas": "False" "enable_secgroup": "False" @dataService.updateClusterConfig($scope.cluster.id, network_mapping).success (data) -> wizardFactory.setNetworkMapping(networks) + wizardFactory.setPackageConfig(network_mapping.package_config) wizardFactory.setCommitState( "name": "network_mapping" "state": "success" diff --git a/v2.5/target/data/config.json b/v2.5/target/data/config.json index d8aa00f..174ce04 100644 --- a/v2.5/target/data/config.json +++ b/v2.5/target/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/target/data/wizard_steps.json b/v2.5/target/data/wizard_steps.json index 67af395..413b180 100644 --- a/v2.5/target/data/wizard_steps.json +++ b/v2.5/target/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/target/src/app/controllers/wizardController.js b/v2.5/target/src/app/controllers/wizardController.js index e834cc6..9c1f433 100644 --- a/v2.5/target/src/app/controllers/wizardController.js +++ b/v2.5/target/src/app/controllers/wizardController.js @@ -221,7 +221,7 @@ }); }; $scope.commit = function(sendRequest) { - var installInterface, name, value, _ref; + var installInterface, name, subnet, value, _i, _len, _ref, _ref1; installInterface = {}; $rootScope.networkMappingInterfaces = {}; _ref = $scope.interfaces; @@ -229,26 +229,25 @@ value = _ref[name]; if (value.is_mgmt) { installInterface[name] = value; - } else { - $rootScope.networkMappingInterfaces[name] = value; } + _ref1 = $scope.subnetworks; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + subnet = _ref1[_i]; + if (('' + subnet.id) === ('' + value.subnet_id)) { + $rootScope.networkMappingInterfaces[name] = subnet; + } + } + $rootScope.networkMappingInterfaces[name].subnet_id = value.subnet_id; + $rootScope.networkMappingInterfaces[name].is_mgmt = value.is_mgmt; } $scope.interfaces = installInterface; $cookieStore.put('networkMappingInterfaces', $rootScope.networkMappingInterfaces); return wizardService.networkCommit($scope, sendRequest); }; return wizardService.getClusterHosts($scope.cluster.id).success(function(data) { - var name, savedNetworkMappingInterfaces, value; $scope.servers = data; - if ($scope.servers[0].networks && Object.keys($scope.servers[0].networks).length !== 0) { - $scope.interfaces = $scope.servers[0].networks; - savedNetworkMappingInterfaces = $cookieStore.get('networkMappingInterfaces'); - for (name in savedNetworkMappingInterfaces) { - value = savedNetworkMappingInterfaces[name]; - $scope.interfaces[name] = value; - } - wizardService.setInterfaces($scope.interfaces); - } + $scope.interfaces = $cookieStore.get('networkMappingInterfaces'); + wizardService.setInterfaces($scope.interfaces); return wizardService.displayDataInTable($scope, $scope.servers); }); } @@ -383,47 +382,117 @@ $scope.autoAssignRoles = function() { return wizardService.autoAssignRoles($scope); }; + $scope.haMultipleNodeAssignRoles = function() { + var i, role, rolesHash, _i, _j, _k, _len, _ref, _ref1; + rolesHash = {}; + _ref = $scope.roles; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + role = _ref[_i]; + rolesHash[role.name] = role; + } + for (i = _j = 0; _j < 3; i = ++_j) { + $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 = _k = 3, _ref1 = $scope.servers.length; 3 <= _ref1 ? _k < _ref1 : _k > _ref1; i = 3 <= _ref1 ? ++_k : --_k) { + $scope.servers[i].roles = []; + $scope.servers[i].roles.push(rolesHash['compute']); + $scope.servers[i].roles.push(rolesHash['ceph-osd']); + } + }; $scope.commit = function(sendRequest) { return wizardService.roleAssignCommit($scope, sendRequest); }; return wizardService.displayDataInTable($scope, $scope.servers); } ]).controller('networkMappingCtrl', [ - '$scope', 'wizardService', function($scope, wizardService) { - var configureHAProxyCfg, configureNetworkCfg, configureNetworkMapping, configureNeutronCfg; + '$scope', 'wizardService', '$cookieStore', function($scope, wizardService, $cookieStore) { + var configureNetworkCfg, configureNetworkMapping, configureNeutronCfg, defaultCfg, readCfg, saveCfg; 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' + $scope.updateInternalNetwork = function(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]; + } + }; + $scope.updateExternalNetwork = function(network_name) { + var nic; + 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]; + } + }; + defaultCfg = function() { + $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'); + }; + saveCfg = function() { + var networkMapping; + networkMapping = { + internal: $scope.internal, + external: $scope.external, + vlanTags: $scope.vlanTags, + ips: $scope.ips + }; + $cookieStore.put('networkMapping', networkMapping); + }; + readCfg = function() { + var networkMapping; + $scope.interfaces = $cookieStore.get('networkMappingInterfaces'); + networkMapping = $cookieStore.get('networkMapping'); + if (!networkMapping) { + return defaultCfg(); + } + $scope.internal = networkMapping.internal; + $scope.external = networkMapping.external; + $scope.vlanTags = networkMapping.vlanTags; + $scope.ips = networkMapping.ips; }; configureNeutronCfg = function() { var neutronCfg; @@ -442,13 +511,13 @@ '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', @@ -463,7 +532,7 @@ '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, @@ -488,7 +557,7 @@ }, 'provider_net_mappings': [ { - 'interface': $scope.interfaces.external, + 'interface': $scope.internal.mgmt, 'role': ['controller', 'compute'], 'type': 'ovs', 'name': 'br-prv', @@ -538,26 +607,14 @@ } }; }; - configureHAProxyCfg = function() { - var haCfg; - haCfg = { - 'vip': $scope.ips.ha_proxy.vip - }; - return haCfg; - }; configureNetworkMapping(); - $scope.onDrop = function($event, key) { - return $scope.pendingInterface = key; - }; - $scope.dropSuccessHandler = function($event, key, dict) { - return dict[key].mapping_interface = $scope.pendingInterface; - }; + readCfg(); return $scope.commit = function(sendRequest) { - var haCfg, networkCfg, neutronCfg; + var networkCfg, neutronCfg; networkCfg = configureNetworkCfg(); neutronCfg = configureNeutronCfg(); - haCfg = configureHAProxyCfg(); - return wizardService.networkMappingCommit($scope, networkCfg, $scope.networkMapping, neutronCfg, haCfg, sendRequest); + saveCfg(); + return wizardService.networkMappingCommit($scope, networkCfg, $scope.networkMapping, neutronCfg, sendRequest); }; } ]).controller('reviewCtrl', [ @@ -574,7 +631,10 @@ $scope.commit = function(sendRequest) { return wizardService.reviewCommit($scope, sendRequest); }; - return wizardService.displayDataInTable($scope, $scope.servers); + wizardService.displayDataInTable($scope, $scope.servers); + return $scope.reload = function() { + return wizardService.displayDataInTable($scope, $scope.servers); + }; } ]).animation('.fade-animation', [ function() { diff --git a/v2.5/target/src/app/partials/cluster-network.tpl.html b/v2.5/target/src/app/partials/cluster-network.tpl.html index 9f2158e..11433aa 100644 --- a/v2.5/target/src/app/partials/cluster-network.tpl.html +++ b/v2.5/target/src/app/partials/cluster-network.tpl.html @@ -1 +1 @@ -
NetworkInterface
{{key}} Network{{value}}
\ No newline at end of file +
OS Installation Network
{{key}}{{value}}


IP Settings
NameCIDRIP RangeRole
{{ip.name}}{{ip.cidr}}{{ip.ip_ranges[0].join(' --- ')}}{{ip.role.join(', ')}}


sys_intf_mappings
NameInterfaceTypeRole
{{ip.name}}{{ip.interface}}{{ip.type}} {{ip.vlan_tag}}{{ip.role.join(', ')}}


Virtual IPs
TypeInterfaceIPNetmask
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}}


Network Mapping
provider_net_mappings
{{key}}
{{value}}
public_net_info
{{key}}
{{value}}


Target System Configurations - NeutronConfig
tenent_network_type{{configuration.package_config.neutron_config.openvswitch.tenant_network_type}}
network_vlan_ranges_{{key}}{{value}}
bridge_mappins_{{key}}{{value}}
\ No newline at end of file diff --git a/v2.5/target/src/app/partials/network.tpl.html b/v2.5/target/src/app/partials/network.tpl.html index b272dfd..b961c2a 100644 --- a/v2.5/target/src/app/partials/network.tpl.html +++ b/v2.5/target/src/app/partials/network.tpl.html @@ -1,3 +1,3 @@ -

Autofill IP Address for Each Interface

ActionInterfaceIs OS Install NetworkPromisc ModeSubnetAutofill Rules
{{interface_name}}

Autofill Hostname

{{alert.msg}}
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.

Autofill IP Address for All Interfaces

ActionInterfaceIs OS Install NetworkPromisc ModeSubnetAutofill Rules
{{interface_name}}

Autofill Hostname

{{alert.msg}}
{{column.title}}
{{name}}
- {{cluster.name}}  {{server[column.field]}}
\ No newline at end of file diff --git a/v2.5/target/src/app/partials/network_mapping.tpl.html b/v2.5/target/src/app/partials/network_mapping.tpl.html index f2f086e..815ace0 100644 --- a/v2.5/target/src/app/partials/network_mapping.tpl.html +++ b/v2.5/target/src/app/partials/network_mapping.tpl.html @@ -1,4 +1,4 @@ -

Allocate IP Address for Each Network Interface

NetworkNICCIDRStart IPEnd IPVlan Configuration
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.

Internal Network Interface

NetworkNICCIDRStart IPEnd IPVlan Configuration
{{network_key}}Public Virtual IP Gateway IP Internal Virtual IP Vlan Tag

HA Proxy

NetworkNICIP Address
install{{networkMapping.install.interface}}
\ No newline at end of file + 'label-warning': network_key == 'storage'}">{{network_key}}
Vlan Tag
Management Network Virtual IP
The external network interface need to connect to Internet.
Set external virtual ip for HA mode

External Network Interface

NetworkNICCIDRStart IPEnd IPGateway IP
{{network_key}}
External Network Virtual IP
\ No newline at end of file diff --git a/v2.5/target/src/app/partials/review.tpl.html b/v2.5/target/src/app/partials/review.tpl.html index fce4f17..73f46e2 100644 --- a/v2.5/target/src/app/partials/review.tpl.html +++ b/v2.5/target/src/app/partials/review.tpl.html @@ -1,2 +1,2 @@ -

OS Config

OS Global Configurations
{{key}}{{value}}
Server Credentials
Username{{os_global_config.server_credentials.username}}
Password{{os_global_config.server_credentials.password}}


Partition
Mount PointSize Percentage (%)Max Size (G)
{{key}}{{value.percentage}}{{value.max_size}}

Host

Hosts
{{column.title}}
{{key}}
- {{cluster.name}}  {{server[column.field]}}{{server.networks[key].ip}}


Roles
HostnameRoles
{{server.hostname}}{{role.display_name}}

Target Config

Network Mapping
InterfaceNetwork
{{value}}
{{key}}


Target System Configurations - cephConfig
{{key}}{{value}}
{{key}}{{value}}


Target System Configurations - NeutronConfig
tenent_network_type{{neutronConfig.openvswitch.tenant_network_type}}
tunnel_id_ranges_{{key}}{{value}}
network_vlan_ranges_{{key}}{{value}}
bridge_mappins_{{key}}{{value}}


Target System Configurations - High Availability Config
VIP{{haConfig.ha_proxy.vip}}


Target System Configurations - console_credentials
ServiceUsernamePassword
{{key}}{{value.username}}{{value.password}}


Target System Configurations - service_credentials
ServiceUsernamePassword
{{key}}{{value.username}}{{value.password}}
\ No newline at end of file +

OS Config

OS Global Configurations
{{key}}{{value}}
Server Credentials
Username{{os_global_config.server_credentials.username}}
Password{{os_global_config.server_credentials.password}}


Partition
Mount PointSize Percentage (%)Max Size (G)
{{key}}{{value.percentage}}{{value.max_size}}

Host

Hosts
{{column.title}}
{{key}}
- {{cluster.name}}  {{server[column.field]}}{{server.networks[key].ip}}


Roles
HostnameRoles
{{server.hostname}}{{role.display_name}}

Target Config

OS Installation Network
{{key}}{{value}}


IP Settings
NameCIDRIP RangeRole
{{ip.name}}{{ip.cidr}}{{ip.ip_ranges[0].join(' --- ')}}{{ip.role.join(', ')}}


sys_intf_mappings
NameInterfaceTypeRole
{{ip.name}}{{ip.interface}}{{ip.type}} {{ip.vlan_tag}}{{ip.role.join(', ')}}


Virtual IPs
TypeInterfaceIPNetmask
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}}


Network Mapping
provider_net_mappings
{{key}}
{{value}}
public_net_info
{{key}}
{{value}}


Target System Configurations - NeutronConfig
tenent_network_type{{packageConfig.neutron_config.openvswitch.tenant_network_type}}
tunnel_id_ranges_{{key}}{{value}}
network_vlan_ranges_{{key}}{{value}}
network_vlan_ranges_{{key}}{{value}}
bridge_mappins_{{key}}{{value}}
bridge_mappins_{{key}}{{value}}


Target System Configurations - High Availability Config
VIP{{haConfig.ha_proxy.vip}}


Target System Configurations - console_credentials
ServiceUsernamePassword
{{key}}{{value.username}}{{value.password}}


Target System Configurations - service_credentials
ServiceUsernamePassword
{{key}}{{value.username}}{{value.password}}
\ No newline at end of file diff --git a/v2.5/target/src/app/partials/role_assignment.tpl.html b/v2.5/target/src/app/partials/role_assignment.tpl.html index 92fc5bb..cbdd702 100644 --- a/v2.5/target/src/app/partials/role_assignment.tpl.html +++ b/v2.5/target/src/app/partials/role_assignment.tpl.html @@ -1,2 +1,2 @@ -
Total Hosts: {{servers.length}} | Total Roles: {{rolesTotalCount}}
Total Hosts: {{servers.length}} | Total Roles: {{rolesTotalCount}}
{{column.title}}
Roles
- {{cluster.name}}  {{server[column.field]}}
{{role.display_name | limitTo : 15}}

Drag to Assign

{{role_value.display_name}}
\ No newline at end of file diff --git a/v2.5/target/src/app/services/wizardService.js b/v2.5/target/src/app/services/wizardService.js index 927c0a0..f8bd8da 100644 --- a/v2.5/target/src/app/services/wizardService.js +++ b/v2.5/target/src/app/services/wizardService.js @@ -1325,7 +1325,7 @@ }); }; - WizardService.prototype.networkMappingCommit = function($scope, networkCfg, networkMapping, neutronCfg, haCfg, sendRequest) { + WizardService.prototype.networkMappingCommit = function($scope, networkCfg, networkMapping, neutronCfg, sendRequest) { var key, network_mapping, networks, value, wizardFactory, _ref; wizardFactory = this.wizardFactory; if (!sendRequest) { @@ -1347,7 +1347,6 @@ "network_cfg": networkCfg, "network_mapping": networkMapping, "neutron_config": neutronCfg, - "ha_proxy": haCfg, "enable_vpnaas": "False", "enable_fwaas": "False", "enable_secgroup": "False" @@ -1355,6 +1354,7 @@ }; return this.dataService.updateClusterConfig($scope.cluster.id, network_mapping).success(function(data) { wizardFactory.setNetworkMapping(networks); + wizardFactory.setPackageConfig(network_mapping.package_config); return wizardFactory.setCommitState({ "name": "network_mapping", "state": "success",