update ui to work with ansible ha liberty
Change-Id: I81810c1bcdfa944772931917386c36d890660a88
This commit is contained in:
parent
8a7c18c13d
commit
9797a4c4a6
@ -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"
|
||||
|
5
v2.5/data/sample_machine_uploadfile.txt
Normal file
5
v2.5/data/sample_machine_uploadfile.txt
Normal file
@ -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
|
1
v2.5/data/sample_switch_uploadfile.txt
Normal file
1
v2.5/data/sample_switch_uploadfile.txt
Normal file
@ -0,0 +1 @@
|
||||
127.0.0.1,huawei,2c,community
|
@ -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": ""
|
||||
|
@ -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{
|
||||
|
@ -5,6 +5,7 @@
|
||||
</div>
|
||||
<div class="row side-padding-10 padding-top-30">
|
||||
<div class="col-xs-12">
|
||||
<!--
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -19,5 +20,164 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
-->
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
OS Installation Network
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in configuration.package_config['network_mapping'].install">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
IP Settings
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>CIDR</th>
|
||||
<th>IP Range</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="ip in configuration.package_config['network_cfg']['ip_settings']">
|
||||
<td>{{ip.name}}</td>
|
||||
<td>{{ip.cidr}}</td>
|
||||
<td>{{ip.ip_ranges[0].join(' --- ')}}</td>
|
||||
<td>{{ip.role.join(', ')}}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
sys_intf_mappings
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Interface</th>
|
||||
<th>Type</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="ip in configuration.package_config['network_cfg']['sys_intf_mappings']">
|
||||
<td>{{ip.name}}</td>
|
||||
<td>{{ip.interface}}</td>
|
||||
<td>{{ip.type}} {{ip.vlan_tag}}</td>
|
||||
<td>{{ip.role.join(', ')}}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
Virtual IPs
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Interface</th>
|
||||
<th>IP</th>
|
||||
<th>Netmask</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Interal</td>
|
||||
<td>{{configuration.package_config['network_cfg']['internal_vip'].interface}}</td>
|
||||
<td>{{configuration.package_config['network_cfg']['internal_vip'].ip}}</td>
|
||||
<td>{{configuration.package_config['network_cfg']['internal_vip'].netmask}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Public</td>
|
||||
<td>{{configuration.package_config['network_cfg']['public_vip'].interface}}</td>
|
||||
<td>{{configuration.package_config['network_cfg']['public_vip'].ip}}</td>
|
||||
<td>{{configuration.package_config['network_cfg']['public_vip'].netmask}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
Network Mapping
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="table-review-padding"><strong>provider_net_mappings</strong>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr ng-repeat="(key, value) in configuration.package_config['network_cfg'].provider_net_mappings[0]">
|
||||
<td class="capitalize">
|
||||
<div>
|
||||
{{key}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="table-review-padding"><strong>public_net_info</strong>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr ng-repeat="(key, value) in configuration.package_config['network_cfg'].public_net_info">
|
||||
<td class="capitalize">
|
||||
<div>
|
||||
{{key}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white">
|
||||
Target System Configurations - NeutronConfig
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>tenent_network_type</td>
|
||||
<td>{{configuration.package_config.neutron_config.openvswitch.tenant_network_type}}</td>
|
||||
</tr>
|
||||
<tr ng-if="configuration.package_config.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in configuration.package_config.neutron_config.openvswitch.network_vlan_ranges">
|
||||
<td>network_vlan_ranges_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
<tr ng-if="configuration.package_config.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in configuration.package_config.neutron_config.openvswitch.bridge_mappings">
|
||||
<td>bridge_mappins_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,4 +1,12 @@
|
||||
<div ng-controller="networkCtrl">
|
||||
<div class="row">
|
||||
<div class="alert alert-info">
|
||||
<span>Please provide 3 subnets.</span><br/>
|
||||
<span>Check one as OS install network and use Autofill to assign ips. This is used to install OS.</span><br/>
|
||||
<span>The other 2 subnets are used in the next step to configure openstack network.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="space-10"></div>
|
||||
<div class="row">
|
||||
<div collapse="autoFillPanel.isCollapsed" class="dashed-panel" style="height: auto; background-color: rgba(224, 226, 227, 0.25);">
|
||||
<span class="action pull-right" ng-click="autoFillPanel.isCollapsed = true;">
|
||||
@ -8,8 +16,8 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>
|
||||
Autofill IP Address for Each Interface
|
||||
<button class="btn btn-sm btn-info pull-right" ng-click="openAddSubnetModal()" >Add Subnet</button>
|
||||
Autofill IP Address for All Interfaces
|
||||
<button class="btn btn-sm btn-success pull-right" ng-click="openAddSubnetModal()" >Add Subnet</button>
|
||||
<button class="btn btn-sm btn-info pull-right" ng-model="autoFill" style="margin-right:15px;" ng-click="autoFillManage()">{{autoFillButtonDisplay}}</button>
|
||||
</h4>
|
||||
<table class="table table-hover nowrap">
|
||||
@ -68,7 +76,7 @@
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<select ng-model="value.subnet_id" class="max-width-200" ng-show="value.is_mgmt">
|
||||
<select ng-model="value.subnet_id" class="max-width-200">
|
||||
<option ng-repeat="sub in subnetworks" value="{{sub.id}}" ng-selected="sub.id == value.subnet_id">
|
||||
{{sub.subnet}}
|
||||
</option>
|
||||
|
@ -1,11 +1,16 @@
|
||||
<div ng-controller="networkMappingCtrl">
|
||||
<div class="row">
|
||||
<div class="panel" style="height: auto; background-color: rgba(224, 226, 227, 0.25);">
|
||||
<div class="panel" style="height: auto; padding: 10px; margin-top: -30px;">
|
||||
<div class="row"><div class="col-sm-12">
|
||||
<div class="alert alert-info">
|
||||
<span>Bind openstack management and storage network to a physical inteface.</span><br/>
|
||||
<span>Two virtual networks will be created on the NIC based on the configurations.</span><br/>
|
||||
<span>Just choose network interface. Use the default values for the remaining configurations.</span>
|
||||
</div>
|
||||
</div></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>
|
||||
Allocate IP Address for Each Network Interface
|
||||
</h4>
|
||||
<h4>Internal Network Interface</h4>
|
||||
<table class="table table-hover nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -18,19 +23,91 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="(network_key, network_value) in nics">
|
||||
<tr ng-repeat="(network_key, network_value) in internal">
|
||||
<td>
|
||||
<span class="external-event margin-right-5 fade-animation"
|
||||
ng-class="{
|
||||
'label-success': network_key == 'mgmt',
|
||||
'label-purple': network_key == 'external',
|
||||
'label-warning': network_key == 'storage'}">
|
||||
<span class="capitalize">{{network_key}}</span>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<select class="max-width-200" ng-model="nics[network_key]">
|
||||
<option ng-repeat="(name, interface) in $root.networkMappingInterfaces" value="{{name}}" >
|
||||
<select class="max-width-200" ng-model="internal[network_key]">
|
||||
<option ng-repeat="(name, interface) in $root.networkMappingInterfaces" ng-hide="interface.is_mgmt"
|
||||
value="{{name}}"
|
||||
ng-selected="internal[network_key] == name">
|
||||
{{name}}
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="{{name}}-cidr" type="text" class="input-medium" ng-model="ips[network_key].cidr"
|
||||
placeholder="CIDR" ng-change="updateInternalNetwork(network_key)">
|
||||
</td>
|
||||
<td>
|
||||
<input id="{{name}}-ipstart" type="text" class="input-medium" ng-model="ips[network_key].start"
|
||||
placeholder="IP Start">
|
||||
</td>
|
||||
<td>
|
||||
<input id="{{name}}-ipend" type="text" class="input-medium" ng-model="ips[network_key].end"
|
||||
placeholder="IP End">
|
||||
</td>
|
||||
<td>
|
||||
<span class="label-yellow" style="color: #fff;">Vlan Tag</span>
|
||||
<input id="{{name}}-vlan-tag" type="text" class="input-small" ng-model="vlanTags[network_key]"
|
||||
placeholder="Vlan tag">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="space-10"></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<span style="margin-right: 10px;">
|
||||
Management Network Virtual IP
|
||||
</span>
|
||||
<input id="interal_vip" type="text" class="input-medium" ng-model="ips.mgmt.internal_vip"
|
||||
placeholder="Internal Virtual IP">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel" style="height: auto; padding: 10px;">
|
||||
<div class="row"><div class="col-sm-12">
|
||||
<div class="alert alert-info">
|
||||
<span>The external network interface need to connect to Internet.</span><br/>
|
||||
<span>Set external virtual ip for HA mode</span>
|
||||
</div>
|
||||
</div></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>External Network Interface</h4>
|
||||
<table class="table table-hover nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Network</th>
|
||||
<th>NIC</th>
|
||||
<th>CIDR</th>
|
||||
<th>Start IP</th>
|
||||
<th>End IP</th>
|
||||
<th>Gateway IP</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="(network_key, network_value) in external">
|
||||
<td>
|
||||
<span class="external-event margin-right-5 fade-animation"
|
||||
ng-class="{
|
||||
'label-purple': network_key == 'external'}">
|
||||
<span class="capitalize">{{network_key}}</span>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<select class="max-width-200" ng-model="external[network_key]" ng-change="updateExternalNetwork(network_key)">
|
||||
<option ng-repeat="(name, interface) in $root.networkMappingInterfaces" ng-hide="interface.is_mgmt"
|
||||
value="{{name}}" ng-selected="external[network_key] == name">
|
||||
{{name}}
|
||||
</option>
|
||||
</select>
|
||||
@ -48,32 +125,24 @@
|
||||
placeholder="IP End">
|
||||
</td>
|
||||
<td>
|
||||
<span ng-show="network_key == 'external'">
|
||||
<span class="label-primary" style="color: #fff;">Public Virtual IP</span>
|
||||
<input id="external_gw" type="text" class="input-medium" ng-model="ips.external.public_vip"
|
||||
placeholder="Public Virtual IP">
|
||||
</span>
|
||||
<span ng-show="network_key == 'external'">
|
||||
<span class="label-info" style="color: #fff;">Gateway IP</span>
|
||||
<input id="external_gw" type="text" class="input-medium" ng-model="ips.external.gw_ip"
|
||||
placeholder="External Gateway IP">
|
||||
</span>
|
||||
<span ng-show="network_key == 'mgmt'">
|
||||
<span class="label-primary" style="color: #fff;">Internal Virtual IP</span>
|
||||
<input id="interal_vip" type="text" class="input-medium" ng-model="ips.mgmt.internal_vip"
|
||||
placeholder="Internal Virtual IP">
|
||||
</span>
|
||||
<span ng-show="network_key == 'storage' || network_key == 'mgmt'">
|
||||
<span class="label-yellow" style="color: #fff;">Vlan Tag</span>
|
||||
<input id="{{name}}-vlan-tag" type="text" class="input-small" ng-model="vlanTags[network_key]"
|
||||
placeholder="Vlan tag">
|
||||
</span>
|
||||
<input id="external_gw" type="text" class="input-medium" ng-model="ips.external.gw_ip"
|
||||
placeholder="External Gateway IP">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="space-10"></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<span style="margin-right: 10px;">
|
||||
External Network Virtual IP
|
||||
</span>
|
||||
<input id="external_gw" type="text" class="input-medium" ng-model="ips.external.public_vip"
|
||||
placeholder="External Virtual IP for HA">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="col-sm-12">
|
||||
<h4>
|
||||
HA Proxy
|
||||
@ -102,6 +171,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -80,7 +80,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in os_global_config.partition">
|
||||
<tr ng-repeat="(key, value) in partition">
|
||||
<td class="table-review-padding">{{key}}</td>
|
||||
<td>{{value.percentage}}</td>
|
||||
<td>{{value.max_size}}</td>
|
||||
@ -119,7 +119,7 @@
|
||||
</th>
|
||||
<th>
|
||||
</th>
|
||||
<th ng-repeat="(key, value) in interfaces">
|
||||
<th ng-repeat="(key, value) in interfaces" ng-show="value.is_mgmt">
|
||||
{{key}}
|
||||
</th>
|
||||
</tr>
|
||||
@ -154,7 +154,7 @@
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td ng-repeat="(key, value) in interfaces">
|
||||
<td ng-repeat="(key, value) in interfaces" ng-show="value.is_mgmt">
|
||||
{{server.networks[key].ip}}
|
||||
</td>
|
||||
</tr>
|
||||
@ -211,51 +211,141 @@
|
||||
<div class="widget-main review-padding" collapse="isMappingCollapsed">
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('network_mapping')">
|
||||
Network Mapping
|
||||
OS Installation Network
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in packageConfig['network_mapping'].install">
|
||||
<td>{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
IP Settings
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>CIDR</th>
|
||||
<th>IP Range</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="ip in packageConfig['network_cfg']['ip_settings']">
|
||||
<td>{{ip.name}}</td>
|
||||
<td>{{ip.cidr}}</td>
|
||||
<td>{{ip.ip_ranges[0].join(' --- ')}}</td>
|
||||
<td>{{ip.role.join(', ')}}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
sys_intf_mappings
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Interface</th>
|
||||
<th>Network</th>
|
||||
<th>Type</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in network_mapping">
|
||||
<td>{{value}}</td>
|
||||
<td class="capitalize">
|
||||
<div class="label review-network-badge" ng-class="{'label-pink': key == 'management', 'label-success': key == 'tenant', 'label-purple': key == 'external', 'label-warning': key == 'storage', 'label-info': key == 'public_network', 'label-red': key == 'cluster_network'}">
|
||||
{{key}}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tr ng-repeat="ip in packageConfig['network_cfg']['sys_intf_mappings']">
|
||||
<td>{{ip.name}}</td>
|
||||
<td>{{ip.interface}}</td>
|
||||
<td>{{ip.type}} {{ip.vlan_tag}}</td>
|
||||
<td>{{ip.role.join(', ')}}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<span ng-if="currentAdapterName == 'ceph_openstack_icehouse' || currentAdapterName == 'ceph_firefly'">
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
Target System Configurations - cephConfig
|
||||
Virtual IPs
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Interface</th>
|
||||
<th>IP</th>
|
||||
<th>Netmask</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Interal</td>
|
||||
<td>{{packageConfig['network_cfg']['internal_vip'].interface}}</td>
|
||||
<td>{{packageConfig['network_cfg']['internal_vip'].ip}}</td>
|
||||
<td>{{packageConfig['network_cfg']['internal_vip'].netmask}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Public</td>
|
||||
<td>{{packageConfig['network_cfg']['public_vip'].interface}}</td>
|
||||
<td>{{packageConfig['network_cfg']['public_vip'].ip}}</td>
|
||||
<td>{{packageConfig['network_cfg']['public_vip'].netmask}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
Network Mapping
|
||||
</h5>
|
||||
</div>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in cephConfig.global_config">
|
||||
<td>{{key}}</td>
|
||||
<tr>
|
||||
<td class="table-review-padding"><strong>provider_net_mappings</strong>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr ng-repeat="(key, value) in packageConfig['network_cfg'].provider_net_mappings[0]">
|
||||
<td class="capitalize">
|
||||
<div>
|
||||
{{key}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="(key, value) in cephConfig.osd_config">
|
||||
<td>{{key}}</td>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-striped table-border-grey">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="table-review-padding"><strong>public_net_info</strong>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr ng-repeat="(key, value) in packageConfig['network_cfg'].public_net_info">
|
||||
<td class="capitalize">
|
||||
<div>
|
||||
{{key}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</span>
|
||||
<span ng-if="currentAdapterName == 'ceph_openstack_icehouse' || currentAdapterName == 'openstack_icehouse'">
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
Target System Configurations - NeutronConfig
|
||||
@ -265,7 +355,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>tenent_network_type</td>
|
||||
<td>{{neutronConfig.openvswitch.tenant_network_type}}</td>
|
||||
<td>{{packageConfig.neutron_config.openvswitch.tenant_network_type}}</td>
|
||||
</tr>
|
||||
<tr ng-if="neutronConfig.openvswitch.tenant_network_type=='gre'" ng-repeat="(key, value) in neutronConfig.openvswitch.tunnel_id_ranges">
|
||||
<td>tunnel_id_ranges_{{key}}</td>
|
||||
@ -275,6 +365,14 @@
|
||||
<td>network_vlan_ranges_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
<tr ng-if="packageConfig.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in packageConfig.neutron_config.openvswitch.network_vlan_ranges">
|
||||
<td>network_vlan_ranges_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
<tr ng-if="packageConfig.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in packageConfig.neutron_config.openvswitch.bridge_mappings">
|
||||
<td>bridge_mappins_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
</tr>
|
||||
<tr ng-if="neutronConfig.openvswitch.tenant_network_type=='vlan'" ng-repeat="(key, value) in neutronConfig.openvswitch.bridge">
|
||||
<td>bridge_mappins_{{key}}</td>
|
||||
<td>{{value}}</td>
|
||||
@ -283,7 +381,6 @@
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</span>
|
||||
<span ng-if="currentFlavor == 'HA-multinodes'">
|
||||
<div class="widget-header widget-header-flat review-targetconfig">
|
||||
<h5 class="widget-title white" ng-click="returnStep('security')">
|
||||
@ -564,7 +661,7 @@
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-repeat="tab in tabs" ng-class="{active:isActiveTab(tab.url)}" ng-click="onClickTab(tab)">
|
||||
<a href>{{tab.title}}</a>
|
||||
</li>
|
||||
</li>
|
||||
<a class="action margin-right-5" ng-click="isCredCollapsed = !isCredCollapsed">
|
||||
<i class="ace-icon fa fa-chevron-up" ng-class="{'fa-chevron-up': !isCredCollapsed, 'fa-chevron-down': isCredCollapsed}"></i>
|
||||
</a>
|
||||
@ -632,4 +729,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
-->
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div ng-controller="roleAssignCtrl">
|
||||
<div class="row">
|
||||
<div class="row" ng-init="autoAssignRoles.isCollapsed = true;">
|
||||
<div collapse="autoAssignRoles.isCollapsed" class="dashed-panel" style="background-color: rgba(224, 226, 227, 0.25);">
|
||||
<span class="action pull-right" ng-click="autoAssignRoles.isCollapsed = true;">
|
||||
<i class="ace-icon fa fa-times-circle bigger-120 light-grey"></i>
|
||||
@ -58,12 +58,17 @@
|
||||
<span style="display: none">
|
||||
<input type="text" placeholder="HA VIP" ng-model="ha_vip">
|
||||
</span>
|
||||
<!--
|
||||
<button class="btn btn-sm btn-info" ng-init="autoAssignRoles.isCollapsed = true;" ng-click="autoAssignRoles.isCollapsed = !autoAssignRoles.isCollapsed">
|
||||
Auto Assign
|
||||
<i class="ace-icon fa fa-plus" ng-class="{'fa-minus': !autoAssignRoles.isCollapsed}"></i>
|
||||
</button>
|
||||
|
||||
|
||||
-->
|
||||
<button class="btn btn-sm btn-success" ng-click="haMultipleNodeAssignRoles()"
|
||||
ng-show="servers.length > 4">
|
||||
HA 3+N Mode Assign
|
||||
<i class="ace-icon fa fa-plus"></i>
|
||||
</button>
|
||||
|
||||
<div class="btn-group" dropdown>
|
||||
<button type="button" style="border-bottom-width: 3px; border-top-width: 3px;" class="btn btn-sm btn-info dropdown-toggle" dropdown-toggle ng-disabled="disabled">
|
||||
@ -159,4 +164,4 @@
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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": ""
|
||||
|
@ -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() {
|
||||
|
@ -1 +1 @@
|
||||
<div class="page-header"><h1>Network</h1></div><div class="row side-padding-10 padding-top-30"><div class="col-xs-12"><table class="table table-striped"><thead><tr><th>Network</th><th>Interface</th></tr></thead><tbody><tr ng-repeat="(key, value) in configuration.package_config.network_mapping"><td class="capitalize">{{key}} Network</td><td>{{value}}</td></tr></tbody></table></div></div>
|
||||
<div class="page-header"><h1>Network</h1></div><div class="row side-padding-10 padding-top-30"><div class="col-xs-12"><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">OS Installation Network</h5></div><table class="table table-striped table-border-grey"><tbody><tr ng-repeat="(key, value) in configuration.package_config['network_mapping'].install"><td>{{key}}</td><td>{{value}}</td></tr></tbody></table><br><br><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">IP Settings</h5></div><table class="table table-striped table-border-grey"><thead><tr><th>Name</th><th>CIDR</th><th>IP Range</th><th>Role</th></tr></thead><tbody><tr ng-repeat="ip in configuration.package_config['network_cfg']['ip_settings']"><td>{{ip.name}}</td><td>{{ip.cidr}}</td><td>{{ip.ip_ranges[0].join(' --- ')}}</td><td>{{ip.role.join(', ')}}</td></tr></tbody></table><br><br><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">sys_intf_mappings</h5></div><table class="table table-striped table-border-grey"><thead><tr><th>Name</th><th>Interface</th><th>Type</th><th>Role</th></tr></thead><tbody><tr ng-repeat="ip in configuration.package_config['network_cfg']['sys_intf_mappings']"><td>{{ip.name}}</td><td>{{ip.interface}}</td><td>{{ip.type}} {{ip.vlan_tag}}</td><td>{{ip.role.join(', ')}}</td></tr></tbody></table><br><br><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">Virtual IPs</h5></div><table class="table table-striped table-border-grey"><thead><tr><th>Type</th><th>Interface</th><th>IP</th><th>Netmask</th></tr></thead><tbody><tr><td>Interal</td><td>{{configuration.package_config['network_cfg']['internal_vip'].interface}}</td><td>{{configuration.package_config['network_cfg']['internal_vip'].ip}}</td><td>{{configuration.package_config['network_cfg']['internal_vip'].netmask}}</td></tr><tr><td>Public</td><td>{{configuration.package_config['network_cfg']['public_vip'].interface}}</td><td>{{configuration.package_config['network_cfg']['public_vip'].ip}}</td><td>{{configuration.package_config['network_cfg']['public_vip'].netmask}}</td></tr></tbody></table><br><br><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">Network Mapping</h5></div><table class="table table-striped table-border-grey"><tbody><tr><td class="table-review-padding"><strong>provider_net_mappings</strong></td><td></td></tr><tr ng-repeat="(key, value) in configuration.package_config['network_cfg'].provider_net_mappings[0]"><td class="capitalize"><div>{{key}}</div></td><td>{{value}}</td></tr></tbody></table><table class="table table-striped table-border-grey"><tbody><tr><td class="table-review-padding"><strong>public_net_info</strong></td><td></td></tr><tr ng-repeat="(key, value) in configuration.package_config['network_cfg'].public_net_info"><td class="capitalize"><div>{{key}}</div></td><td>{{value}}</td></tr></tbody></table><br><br><div class="widget-header widget-header-flat review-targetconfig"><h5 class="widget-title white">Target System Configurations - NeutronConfig</h5></div><table class="table table-striped table-border-grey"><tbody><tr><td>tenent_network_type</td><td>{{configuration.package_config.neutron_config.openvswitch.tenant_network_type}}</td></tr><tr ng-if="configuration.package_config.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in configuration.package_config.neutron_config.openvswitch.network_vlan_ranges"><td>network_vlan_ranges_{{key}}</td><td>{{value}}</td></tr><tr ng-if="configuration.package_config.neutron_config.openvswitch.tenant_network_type=='vxlan'" ng-repeat="(key, value) in configuration.package_config.neutron_config.openvswitch.bridge_mappings"><td>bridge_mappins_{{key}}</td><td>{{value}}</td></tr></tbody></table></div></div>
|
@ -1,3 +1,3 @@
|
||||
<div ng-controller="networkCtrl"><div class="row"><div collapse="autoFillPanel.isCollapsed" class="dashed-panel" style="height: auto; background-color: rgba(224, 226, 227, 0.25)"><span class="action pull-right" ng-click="autoFillPanel.isCollapsed = true;"><i class="ace-icon fa fa-times-circle bigger-120 networkDeleteButton"></i></span><div class="clearfix"></div><div class="row"><div class="col-sm-12"><h4>Autofill IP Address for Each Interface <button class="btn btn-sm btn-info pull-right" ng-click="openAddSubnetModal()">Add Subnet</button> <button class="btn btn-sm btn-info pull-right" ng-model="autoFill" style="margin-right:15px" ng-click="autoFillManage()">{{autoFillButtonDisplay}}</button></h4><table class="table table-hover nowrap"><thead><tr><th>Action</th><th>Interface</th><th>Is OS Install Network</th><th>Promisc Mode</th><th>Subnet</th><th ng-if="autoFill">Autofill Rules</th></tr></thead><tbody><tr><td><span ng-click="addInterface(newInterface)" class="action"><i class="fa fa-plus-circle bigger-140 blue"></i></span></td><td><input class="input-small" type="text" ng-model="newInterface.name" placeholder="Interface" required></td><td></td><td></td></tr><tr ng-repeat="(interface_name, value) in interfaces track by $index"><td><span class="action" ng-click="deleteInterface(interface_name)"><i class="fa fa-minus-circle bigger-140 blue"></i></span></td><td>{{interface_name}}</td><td><label><input ng-model="value.is_mgmt" type="checkbox" class="ace" name="is-mgmt" ng-click="selectAsInstallInterface($event, interface_name)"> <span class="lbl"></span></label></td><td><label><input ng-model="value.is_promiscuous" type="checkbox" class="ace" name="promisc"> <span class="lbl"></span></label></td><td><select ng-model="value.subnet_id" class="max-width-200" ng-show="value.is_mgmt"><option ng-repeat="sub in subnetworks" value="{{sub.id}}" ng-selected="sub.id == value.subnet_id">{{sub.subnet}}</option></select></td><td ng-if="autoFill"><span ng-show="value.is_mgmt"><input id="{{interface_name}}-ipstart" type="text" ng-model="sub.autoInput" class="input-medium" placeholder="IP Start"><select id="{{interface_name}}-increase-num"><option value="1">Increase by 1</option><option value="2">Increase by 2</option><option value="3">Increase by 3</option><option value="4">Increase by 4</option><option value="5">Increase by 5</option></select></span></td></tr><tr style="border:none"><td></td><td></td><td></td><td></td><td></td><td ng-if="autoFill"><h4>Autofill Hostname</h4><select id="hostname-rule" class="input-large"><option value="" selected="selected">Please select a pattern</option><option value="host">Host</option><option value="switch_ip">Switch IP</option></select><button ng-click="autofill(3000)" class="btn btn-sm btn-primary">Fill Values</button></td></tr></tbody></table><div class="space-10"></div></div></div><div class="space-10"></div></div></div><div class="row"><div class="pull-left"><span class="input-icon"><input type="text" placeholder="Search" ng-model="search.$"> <i class="ace-icon fa fa-search blue"></i></span><div class="btn-group" dropdown><button type="button" class="btn btn-default dropdown-toggle" style="border-radius:7px !important" dropdown-toggle ng-disabled="disabled">Column Show / Hide <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu" role="menu" dropdown><li ng-repeat="column in server_columns" ng-click="column.visible=!column.visible"><a class="action"><span ng-class="{'opacity-zero': !column.visible}"><i class="ace-icon fa fa-check blue"></i></span> {{column.title}}</a></li></ul></div></div><div class="pull-right"><button class="btn btn-sm btn-info" ng-init="autoFillPanel.isCollapsed = true;" ng-click="autoFillPanel.isCollapsed = !autoFillPanel.isCollapsed">Set Subnet <span class="text-danger"><i class="ace-icon fa fa-plus" ng-class="{'fa-minus': !autoFillPanel.isCollapsed}"></i></span></button></div></div><alert ng-repeat="alert in networkAlerts" class="autofill-success fade-animation" type="success">{{alert.msg}}</alert><div class="row"><div class="space-6"></div><table ng-table="tableParams" class="table table-hover table-striped"><thead><tr><th ng-repeat="column in server_columns" ng-show="column.visible" class="sortable" ng-class="{'sort-asc': tableParams.isSortBy(column.field, 'asc'),
|
||||
<div ng-controller="networkCtrl"><div class="row"><div class="alert alert-info"><span>Please provide 3 subnets.</span><br><span>Check one as OS install network and use Autofill to assign ips. This is used to install OS.</span><br><span>The other 2 subnets are used in the next step to configure openstack network.</span></div></div><div class="space-10"></div><div class="row"><div collapse="autoFillPanel.isCollapsed" class="dashed-panel" style="height: auto; background-color: rgba(224, 226, 227, 0.25)"><span class="action pull-right" ng-click="autoFillPanel.isCollapsed = true;"><i class="ace-icon fa fa-times-circle bigger-120 networkDeleteButton"></i></span><div class="clearfix"></div><div class="row"><div class="col-sm-12"><h4>Autofill IP Address for All Interfaces <button class="btn btn-sm btn-success pull-right" ng-click="openAddSubnetModal()">Add Subnet</button> <button class="btn btn-sm btn-info pull-right" ng-model="autoFill" style="margin-right:15px" ng-click="autoFillManage()">{{autoFillButtonDisplay}}</button></h4><table class="table table-hover nowrap"><thead><tr><th>Action</th><th>Interface</th><th>Is OS Install Network</th><th>Promisc Mode</th><th>Subnet</th><th ng-if="autoFill">Autofill Rules</th></tr></thead><tbody><tr><td><span ng-click="addInterface(newInterface)" class="action"><i class="fa fa-plus-circle bigger-140 blue"></i></span></td><td><input class="input-small" type="text" ng-model="newInterface.name" placeholder="Interface" required></td><td></td><td></td></tr><tr ng-repeat="(interface_name, value) in interfaces track by $index"><td><span class="action" ng-click="deleteInterface(interface_name)"><i class="fa fa-minus-circle bigger-140 blue"></i></span></td><td>{{interface_name}}</td><td><label><input ng-model="value.is_mgmt" type="checkbox" class="ace" name="is-mgmt" ng-click="selectAsInstallInterface($event, interface_name)"> <span class="lbl"></span></label></td><td><label><input ng-model="value.is_promiscuous" type="checkbox" class="ace" name="promisc"> <span class="lbl"></span></label></td><td><select ng-model="value.subnet_id" class="max-width-200"><option ng-repeat="sub in subnetworks" value="{{sub.id}}" ng-selected="sub.id == value.subnet_id">{{sub.subnet}}</option></select></td><td ng-if="autoFill"><span ng-show="value.is_mgmt"><input id="{{interface_name}}-ipstart" type="text" ng-model="sub.autoInput" class="input-medium" placeholder="IP Start"><select id="{{interface_name}}-increase-num"><option value="1">Increase by 1</option><option value="2">Increase by 2</option><option value="3">Increase by 3</option><option value="4">Increase by 4</option><option value="5">Increase by 5</option></select></span></td></tr><tr style="border:none"><td></td><td></td><td></td><td></td><td></td><td ng-if="autoFill"><h4>Autofill Hostname</h4><select id="hostname-rule" class="input-large"><option value="" selected="selected">Please select a pattern</option><option value="host">Host</option><option value="switch_ip">Switch IP</option></select><button ng-click="autofill(3000)" class="btn btn-sm btn-primary">Fill Values</button></td></tr></tbody></table><div class="space-10"></div></div></div><div class="space-10"></div></div></div><div class="row"><div class="pull-left"><span class="input-icon"><input type="text" placeholder="Search" ng-model="search.$"> <i class="ace-icon fa fa-search blue"></i></span><div class="btn-group" dropdown><button type="button" class="btn btn-default dropdown-toggle" style="border-radius:7px !important" dropdown-toggle ng-disabled="disabled">Column Show / Hide <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu" role="menu" dropdown><li ng-repeat="column in server_columns" ng-click="column.visible=!column.visible"><a class="action"><span ng-class="{'opacity-zero': !column.visible}"><i class="ace-icon fa fa-check blue"></i></span> {{column.title}}</a></li></ul></div></div><div class="pull-right"><button class="btn btn-sm btn-info" ng-init="autoFillPanel.isCollapsed = true;" ng-click="autoFillPanel.isCollapsed = !autoFillPanel.isCollapsed">Set Subnet <span class="text-danger"><i class="ace-icon fa fa-plus" ng-class="{'fa-minus': !autoFillPanel.isCollapsed}"></i></span></button></div></div><alert ng-repeat="alert in networkAlerts" class="autofill-success fade-animation" type="success">{{alert.msg}}</alert><div class="row"><div class="space-6"></div><table ng-table="tableParams" class="table table-hover table-striped"><thead><tr><th ng-repeat="column in server_columns" ng-show="column.visible" class="sortable" ng-class="{'sort-asc': tableParams.isSortBy(column.field, 'asc'),
|
||||
'sort-desc': tableParams.isSortBy(column.field, 'desc')}" ng-click="tableParams.sorting(column.field, tableParams.isSortBy(column.field, 'asc') ? 'desc' : 'asc')"><div>{{column.title}}</div></th><th class="networkDeleteView" ng-repeat="(name, value) in interfaces" ng-show="value.is_mgmt" ng-mouseover="deleteView=true" ng-mouseleave="deleteView=false">{{name}} <span ng-click="deleteInterface(name)" class="action"><i ng-class="{'networkDeleteButton': deleteView}" class="ace-icon fa fa-times-circle bigger-120 light-grey"></i></span></th></tr></thead><tbody><tr ng-repeat="server in $data | filter: search" ng-init="total=$data.length;serverIndex = $index; server.networks = server.networks === undefinded? {} : server.networks"><td class="center-align" ng-repeat="column in server_columns" ng-show="column.visible" sortable="column.field"><span ng-switch on="column.field"><span ng-switch-when="hostname"><input ng-model="server[column.field]" placeholder="Hostname" class="form-control max-width-150 margin-bottom-0" type="text" ng-keypress data-position="position_{{serverIndex}}"></span> <span ng-switch-when="os_installed"><span ng-if="server['os']"><label><input ng-model="server.reinstallos" type="checkbox" class="ace"> <span class="lbl"></span></label></span> <span ng-if="!server['os']">-</span></span> <span ng-switch-when="clusters"><span ng-repeat="cluster in server.clusters">{{cluster.name}} </span></span> <span ng-switch-default>{{server[column.field]}}</span></span></td><td class="eth-width" ng-repeat="(name, value) in interfaces" ng-show="value.is_mgmt" ng-init="server.networks[name] = server.networks[name] === undefinded ? {} :
|
||||
server.networks[name];interfaceIndex=$index"><input ng-model="server.networks[name].ip" placeholder="IP Address" class="form-control max-width-150 margin-bottom-0" type="text" ng-keypress data-position="position_{{total*(interfaceIndex+1)+serverIndex}}"></td></tr></tbody></table></div></div>
|
@ -1,4 +1,4 @@
|
||||
<div ng-controller="networkMappingCtrl"><div class="row"><div class="panel" style="height: auto; background-color: rgba(224, 226, 227, 0.25)"><div class="row"><div class="col-sm-12"><h4>Allocate IP Address for Each Network Interface</h4><table class="table table-hover nowrap"><thead><tr><th>Network</th><th>NIC</th><th>CIDR</th><th>Start IP</th><th>End IP</th><th>Vlan Configuration</th></tr></thead><tbody><tr ng-repeat="(network_key, network_value) in nics"><td><span class="external-event margin-right-5 fade-animation" ng-class="{
|
||||
<div ng-controller="networkMappingCtrl"><div class="row"><div class="panel" style="height: auto; padding: 10px; margin-top: -30px"><div class="row"><div class="col-sm-12"><div class="alert alert-info"><span>Bind openstack management and storage network to a physical inteface.</span><br><span>Two virtual networks will be created on the NIC based on the configurations.</span><br><span>Just choose network interface. Use the default values for the remaining configurations.</span></div></div></div><div class="row"><div class="col-sm-12"><h4>Internal Network Interface</h4><table class="table table-hover nowrap"><thead><tr><th>Network</th><th>NIC</th><th>CIDR</th><th>Start IP</th><th>End IP</th><th>Vlan Configuration</th></tr></thead><tbody><tr ng-repeat="(network_key, network_value) in internal"><td><span class="external-event margin-right-5 fade-animation" ng-class="{
|
||||
'label-success': network_key == 'mgmt',
|
||||
'label-purple': network_key == 'external',
|
||||
'label-warning': network_key == 'storage'}"><span class="capitalize">{{network_key}}</span></span></td><td><select class="max-width-200" ng-model="nics[network_key]"><option ng-repeat="(name, interface) in $root.networkMappingInterfaces" value="{{name}}">{{name}}</option></select></td><td><input id="{{name}}-cidr" type="text" class="input-medium" ng-model="ips[network_key].cidr" placeholder="CIDR"></td><td><input id="{{name}}-ipstart" type="text" class="input-medium" ng-model="ips[network_key].start" placeholder="IP Start"></td><td><input id="{{name}}-ipend" type="text" class="input-medium" ng-model="ips[network_key].end" placeholder="IP End"></td><td><span ng-show="network_key == 'external'"><span class="label-primary" style="color: #fff">Public Virtual IP</span> <input id="external_gw" type="text" class="input-medium" ng-model="ips.external.public_vip" placeholder="Public Virtual IP"></span> <span ng-show="network_key == 'external'"><span class="label-info" style="color: #fff">Gateway IP</span> <input id="external_gw" type="text" class="input-medium" ng-model="ips.external.gw_ip" placeholder="External Gateway IP"></span> <span ng-show="network_key == 'mgmt'"><span class="label-primary" style="color: #fff">Internal Virtual IP</span> <input id="interal_vip" type="text" class="input-medium" ng-model="ips.mgmt.internal_vip" placeholder="Internal Virtual IP"></span> <span ng-show="network_key == 'storage' || network_key == 'mgmt'"><span class="label-yellow" style="color: #fff">Vlan Tag</span> <input id="{{name}}-vlan-tag" type="text" class="input-small" ng-model="vlanTags[network_key]" placeholder="Vlan tag"></span></td></tr></tbody></table><div class="space-10"></div></div><div class="col-sm-12"><h4>HA Proxy</h4><table class="table table-hover nowrap"><thead><tr><td>Network</td><td>NIC</td><td>IP Address</td></tr></thead><tbody><tr><td><span class="external-event margin-right-5 fade-animation label-info"><span class="capitalize">install</span></span></td><td>{{networkMapping.install.interface}}</td><td><input id="ha_proxy_vip" type="text" class="input-medium" ng-model="ips.ha_proxy.vip" placeholder="HA Proxy IP"></td></tr></tbody></table></div></div></div></div></div>
|
||||
'label-warning': network_key == 'storage'}"><span class="capitalize">{{network_key}}</span></span></td><td><select class="max-width-200" ng-model="internal[network_key]"><option ng-repeat="(name, interface) in $root.networkMappingInterfaces" ng-hide="interface.is_mgmt" value="{{name}}" ng-selected="internal[network_key] == name">{{name}}</option></select></td><td><input id="{{name}}-cidr" type="text" class="input-medium" ng-model="ips[network_key].cidr" placeholder="CIDR" ng-change="updateInternalNetwork(network_key)"></td><td><input id="{{name}}-ipstart" type="text" class="input-medium" ng-model="ips[network_key].start" placeholder="IP Start"></td><td><input id="{{name}}-ipend" type="text" class="input-medium" ng-model="ips[network_key].end" placeholder="IP End"></td><td><span class="label-yellow" style="color: #fff">Vlan Tag</span> <input id="{{name}}-vlan-tag" type="text" class="input-small" ng-model="vlanTags[network_key]" placeholder="Vlan tag"></td></tr></tbody></table><div class="space-10"></div><div class="row"><div class="col-sm-12"><span style="margin-right: 10px">Management Network Virtual IP</span> <input id="interal_vip" type="text" class="input-medium" ng-model="ips.mgmt.internal_vip" placeholder="Internal Virtual IP"></div></div></div></div></div><div class="panel" style="height: auto; padding: 10px"><div class="row"><div class="col-sm-12"><div class="alert alert-info"><span>The external network interface need to connect to Internet.</span><br><span>Set external virtual ip for HA mode</span></div></div></div><div class="row"><div class="col-sm-12"><h4>External Network Interface</h4><table class="table table-hover nowrap"><thead><tr><th>Network</th><th>NIC</th><th>CIDR</th><th>Start IP</th><th>End IP</th><th>Gateway IP</th></tr></thead><tbody><tr ng-repeat="(network_key, network_value) in external"><td><span class="external-event margin-right-5 fade-animation" ng-class="{
|
||||
'label-purple': network_key == 'external'}"><span class="capitalize">{{network_key}}</span></span></td><td><select class="max-width-200" ng-model="external[network_key]" ng-change="updateExternalNetwork(network_key)"><option ng-repeat="(name, interface) in $root.networkMappingInterfaces" ng-hide="interface.is_mgmt" value="{{name}}" ng-selected="external[network_key] == name">{{name}}</option></select></td><td><input id="{{name}}-cidr" type="text" class="input-medium" ng-model="ips[network_key].cidr" placeholder="CIDR"></td><td><input id="{{name}}-ipstart" type="text" class="input-medium" ng-model="ips[network_key].start" placeholder="IP Start"></td><td><input id="{{name}}-ipend" type="text" class="input-medium" ng-model="ips[network_key].end" placeholder="IP End"></td><td><input id="external_gw" type="text" class="input-medium" ng-model="ips.external.gw_ip" placeholder="External Gateway IP"></td></tr></tbody></table><div class="space-10"></div><div class="row"><div class="col-sm-12"><span style="margin-right: 10px">External Network Virtual IP</span> <input id="external_gw" type="text" class="input-medium" ng-model="ips.external.public_vip" placeholder="External Virtual IP for HA"></div></div></div></div></div></div></div>
|
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
||||
<div ng-controller="roleAssignCtrl"><div class="row"><div collapse="autoAssignRoles.isCollapsed" class="dashed-panel" style="background-color: rgba(224, 226, 227, 0.25)"><span class="action pull-right" ng-click="autoAssignRoles.isCollapsed = true;"><i class="ace-icon fa fa-times-circle bigger-120 light-grey"></i></span><div class="clearfix"></div><div class="row"><div class="col-xs-12"><form name="autoAssignForm" role="form" class="form-horizontal"><div ng-repeat="role in roles" class="form-group"><label class="col-sm-4 control-label no-padding-right capitalize">{{role.display_name}}</label><div class="col-sm-8" ng-init="role.count=1"><input type="number" min="0" class="col-xs-10 col-sm-5" ng-model="role.count" placeholder="Count"></div></div><div class="col-md-offset-4 col-md-8" style="margin-left: 33%"><span>Total Hosts: {{servers.length}} | Total Roles: {{rolesTotalCount}}</span> <button style="margin-left: 18px" type="button" class="btn btn-sm btn-info" ng-click="autoAssignRoles()" ng-disabled="autoAssignForm.$invalid">Assign</button></div></form></div></div></div></div><div class="row"><div class="pull-left table-col"><div><div class="pull-left"><span class="input-icon"><input type="text" placeholder="Search" ng-model="search.$"> <i class="ace-icon fa fa-search blue"></i></span><div class="btn-group" dropdown is-open="status.isopen"><button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle ng-disabled="disabled">Column Show / Hide <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu" role="menu"><li ng-repeat="column in server_columns" ng-click="column.visible=!column.visible"><a class="action"><span ng-class="{'opacity-zero': !column.visible}"><i class="ace-icon fa fa-check blue"></i></span> {{column.title}}</a></li></ul></div></div><div class="pull-right"><span style="display: none"><input type="text" placeholder="HA VIP" ng-model="ha_vip"></span> <button class="btn btn-sm btn-info" ng-init="autoAssignRoles.isCollapsed = true;" ng-click="autoAssignRoles.isCollapsed = !autoAssignRoles.isCollapsed">Auto Assign <i class="ace-icon fa fa-plus" ng-class="{'fa-minus': !autoAssignRoles.isCollapsed}"></i></button><div class="btn-group" dropdown><button type="button" style="border-bottom-width: 3px; border-top-width: 3px" class="btn btn-sm btn-info dropdown-toggle" dropdown-toggle ng-disabled="disabled">Manually Assign <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu dropdown-info dropdown-menu-right" role="menu"><li ng-repeat="role in roles"><a class="action" ng-click="assignRole(role)">{{role.display_name}}</a></li></ul></div></div></div><div class="clearfix"></div><div class="space-6"></div><table ng-table="tableParams" class="table table-hover table-striped"><thead><tr><th><label><input ng-model="selectall" ng-change="selectAllServers(selectall)" type="checkbox" class="ace"> <span class="lbl"></span></label></th><th ng-repeat="column in server_columns" ng-show="column.visible" class="sortable" ng-class="{'sort-asc': tableParams.isSortBy(column.field, 'asc'),
|
||||
<div ng-controller="roleAssignCtrl"><div class="row" ng-init="autoAssignRoles.isCollapsed = true;"><div collapse="autoAssignRoles.isCollapsed" class="dashed-panel" style="background-color: rgba(224, 226, 227, 0.25)"><span class="action pull-right" ng-click="autoAssignRoles.isCollapsed = true;"><i class="ace-icon fa fa-times-circle bigger-120 light-grey"></i></span><div class="clearfix"></div><div class="row"><div class="col-xs-12"><form name="autoAssignForm" role="form" class="form-horizontal"><div ng-repeat="role in roles" class="form-group"><label class="col-sm-4 control-label no-padding-right capitalize">{{role.display_name}}</label><div class="col-sm-8" ng-init="role.count=1"><input type="number" min="0" class="col-xs-10 col-sm-5" ng-model="role.count" placeholder="Count"></div></div><div class="col-md-offset-4 col-md-8" style="margin-left: 33%"><span>Total Hosts: {{servers.length}} | Total Roles: {{rolesTotalCount}}</span> <button style="margin-left: 18px" type="button" class="btn btn-sm btn-info" ng-click="autoAssignRoles()" ng-disabled="autoAssignForm.$invalid">Assign</button></div></form></div></div></div></div><div class="row"><div class="pull-left table-col"><div><div class="pull-left"><span class="input-icon"><input type="text" placeholder="Search" ng-model="search.$"> <i class="ace-icon fa fa-search blue"></i></span><div class="btn-group" dropdown is-open="status.isopen"><button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle ng-disabled="disabled">Column Show / Hide <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu" role="menu"><li ng-repeat="column in server_columns" ng-click="column.visible=!column.visible"><a class="action"><span ng-class="{'opacity-zero': !column.visible}"><i class="ace-icon fa fa-check blue"></i></span> {{column.title}}</a></li></ul></div></div><div class="pull-right"><span style="display: none"><input type="text" placeholder="HA VIP" ng-model="ha_vip"></span> <button class="btn btn-sm btn-success" ng-click="haMultipleNodeAssignRoles()" ng-show="servers.length > 4">HA 3+N Mode Assign <i class="ace-icon fa fa-plus"></i></button><div class="btn-group" dropdown><button type="button" style="border-bottom-width: 3px; border-top-width: 3px" class="btn btn-sm btn-info dropdown-toggle" dropdown-toggle ng-disabled="disabled">Manually Assign <span class="ace-icon fa fa-caret-down icon-on-right"></span></button><ul class="dropdown-menu dropdown-info dropdown-menu-right" role="menu"><li ng-repeat="role in roles"><a class="action" ng-click="assignRole(role)">{{role.display_name}}</a></li></ul></div></div></div><div class="clearfix"></div><div class="space-6"></div><table ng-table="tableParams" class="table table-hover table-striped"><thead><tr><th><label><input ng-model="selectall" ng-change="selectAllServers(selectall)" type="checkbox" class="ace"> <span class="lbl"></span></label></th><th ng-repeat="column in server_columns" ng-show="column.visible" class="sortable" ng-class="{'sort-asc': tableParams.isSortBy(column.field, 'asc'),
|
||||
'sort-desc': tableParams.isSortBy(column.field, 'desc')}" ng-click="tableParams.sorting(column.field, tableParams.isSortBy(column.field, 'asc') ? 'desc' : 'asc')"><div>{{column.title}}</div></th><th>Roles</th></tr></thead><tbody><tr ng-repeat="server in $data | filter: search" ng-init="server.roles = server.roles === undefinded? [] : server.roles" ng-class="{'hightlight': server.checked}"><td><label><input ng-model="server.checked" type="checkbox" class="ace"> <span class="lbl"></span></label></td><td ng-repeat="column in server_columns" ng-show="column.visible" sortable="column.field"><span ng-switch on="column.field"><span ng-switch-when="os_installed"><span ng-if="server['os']"><label><input ng-model="server.reinstallos" type="checkbox" class="ace"> <span class="lbl"></span></label></span> <span ng-if="!server['os']">-</span></span> <span ng-switch-when="clusters"><span ng-repeat="cluster in server.clusters">{{cluster.name}} </span></span> <span ng-switch-default>{{server[column.field]}}</span></span></td><td><div class="role-assign-drop" ui-on-drop="onDrop($event, server)" drag-hover-class="drag-enter-role" drop-channel="{{server.dropChannel}}"><span ng-repeat="role in server['roles']" class="role-tag border-radius-4" ng-style="{'background-color': role.color}" tooltip="{{role.display_name}}"><span class="pull-left">{{role.display_name | limitTo : 15}}</span> <span class="pull-right close" ng-click="removeRole(server, role)"><i class="ace-icon fa fa-times white"></i></span></span></div></td></tr></tbody></table></div><div class="pull-left role-col"><div id="sticky-anchor"></div><div class="row role-panel" rolepanelscroll><div class="blue"><h4>Drag to Assign</h4></div><div class="role-assign-drag"><div tooltip-placement="left" tooltip="{{role_value.display_name}}" tooltip-popup-delay="100" ui-draggable="true" on-drop-success="dropSuccessHandler($event,role_value,role_key)" class="role-tag drag-roles ui-draggable" ng-repeat="(role_key, role_value) in roles" ng-style="{'background-color': role_value.color}" drag-channel="{{role_value.dragChannel}}"><i class="ace-icon fa fa-arrows margin-left-neg4"></i> <span>{{role_value.display_name}}</span></div></div></div></div><div class="clearfix"></div></div></div>
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user