fix package_config ui_ metadata

Change-Id: I3c6ec0a3b3097f1fcae2d4379f9138cc27b8872e
This commit is contained in:
sharonlucong 2015-06-15 10:43:05 -07:00
parent a602ce2251
commit f2a8d782d8
6 changed files with 222 additions and 163 deletions

View File

@ -36,6 +36,7 @@
"bootstrap": "3.1.1",
"moment": "~2.9.0",
"d3": "~3.5.5",
"angular": "1.2.16"
"angular": "1.2.16",
"bootstrap-daterangepicker": "1.3.12"
}
}

View File

@ -232,10 +232,10 @@ define(['./baseController'], ()->
$scope.commit = (sendRequest) ->
wizardService.targetSystemConfigCommit($scope, sendRequest)
$scope.addValue = (key1,key2) ->
if !$scope.package_config[key1][key2]
$scope.package_config[key1][key2] = []
$scope.package_config[key1][key2].push ""
$scope.addValue = (key1,key2,key3) ->
if !$scope.package_config[key1][key2][key3]
$scope.package_config[key1][key2][key3] = []
$scope.package_config[key1][key2][key3].push ""
]
.controller 'roleAssignCtrl', ['$scope', 'wizardService', '$filter', 'ngTableParams',
($scope, wizardService, $filter, ngTableParams) ->

View File

@ -43,6 +43,73 @@
</tbody>
</table>
</div>
<div ng-if="value.data_structure=='form'">
<div class="row">
<div class="col-xs-12">
<div class="form-group" style="margin-bottom:0px" ng-repeat="val in value.data">
<div ng-if="val.content!=null" ng-repeat="vcontent in val.content">
<div ng-if="vcontent.display_type=='text'">
<label style="margin-top:10px" class="col-sm-4 control-label no-padding-right">
{{vcontent.label}}
<span ng-if="vcontent.is_required=='true'" class="text-danger">
*
</span>
</label>
<input style="margin-top:10px" ng-model="package_config[value.category][val.name][vcontent.name]" type="text" class="col-xs-10 col-sm-5" placeholder="{{vcontent.label}}" name="{{vcontent.name}}" ng-required="vcontent.is_required=='true'">
</div>
<!-- input-type is drop-down -->
<div ng-if="vcontent.input_type=='dropdown'">
<label class="col-sm-4 control-label no-padding-right" style="padding-top: 14px;">
{{vcontent.label}}
<span ng-if="vcontent.is_required=='true'" class="text-danger">*</span>
</label>
<select ng-model="package_config[value.category][val.name][vcontent.name]" name="{{vcontent.name}}" class="col-xs-10 col-sm-5 input-spacing" ng-change="change(value.category,val.name,vcontent.name,package_config[value.category][val.name][vcontent.name])">
<option ng-repeat="opt in vcontent.options">{{opt}}</option>
</select>
</div>
<!-- input-type is dropdown-text-multiple -->
<div ng-if="vcontent.input_type=='dropdown'" ng-repeat="(type,detail) in vcontent.content_data[package_config[value.category][val.name][vcontent.name]]">
<!-- input-type is dropdown_text_multiple -->
<div ng-if="detail.display_type=='dropdown_text_multiple'">
<div ng-repeat="x in package_config[value.category][val.name][detail.name] track by $index">
<label class="col-sm-4 control-label no-padding-right" style="padding-top: 14px;">
<span ng-show="$index==0">
{{detail.label}}
<span ng-if="val.is_required=='true'" class="text-danger">*</span>
</span>
</label>
<span>
<input ng-model="package_config[value.category][val.name][detail.name][$index]" type="text" name="{{detail.name}}" class="col-xs-10 col-sm-5 input-spacing" ng-required="detail.is_required=='true'">
<span class="col-xs-2 col-sm-3">
<!--Add Action-->
<span class="action input-spacing" ng-click="addValue(value.category,val.name,detail.name)">
<i class="fa fa-plus-circle bigger-140 blue input-spacing"></i>
</span>
<!--Remove Action-->
<!--span ng-show="package_config[value.category][detail.name].length > 1" class="action" ng-click="general.dns_servers.splice($index,1)">-->
<span ng-show="package_config[value.category][val.name][detail.name].length > 1" class="action input-spacing" ng-click="package_config[value.category][val.name][detail.name].splice($index,1)">
<i class="fa fa-minus-circle bigger-140 blue input-spacing"></i>
</span>
</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- data-structure:form -->
<div ng-if="value.data_structure=='form'">
<div class="row">

View File

@ -42,7 +42,7 @@
</div>
<table class="table table-striped table-border-grey">
<tbody>
<tr ng-repeat="(key, value) in global_config">
<tr ng-repeat="(key, value) in os_global_config.general">
<td class="table-review-padding"><strong>{{key}}</strong>
</td>
<td>{{value}}</td>
@ -55,12 +55,12 @@
<tr>
<td class="table-review-padding"><strong>Username</strong>
</td>
<td>{{server_credentials.username}}</td>
<td>{{os_global_config.server_credentials.username}}</td>
</tr>
<tr>
<td class="table-review-padding"><strong>Password</strong>
</td>
<td>{{server_credentials.password}}</td>
<td>{{os_global_config.server_credentials.password}}</td>
</tr>
</tbody>
</table>
@ -80,7 +80,7 @@
</tr>
</thead>
<tbody>
<tr ng-repeat="(key, value) in partition">
<tr ng-repeat="(key, value) in os_global_config.partition">
<td class="table-review-padding">{{key}}</td>
<td>{{value.percentage}}</td>
<td>{{value.max_size}}</td>
@ -117,6 +117,8 @@
'sort-desc': tableParams.isSortBy(column.field, 'desc')}" ng-click="tableParams.sorting(column.field, tableParams.isSortBy(column.field, 'asc') ? 'desc' : 'asc')" ng-if="column.title!='Roles'">
<div>{{column.title}}</div>
</th>
<th>
</th>
<th ng-repeat="(key, value) in interfaces">
{{key}}
</th>
@ -126,30 +128,30 @@
<tr ng-repeat="server in $data | filter: search">
<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 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>
<span ng-switch-when="clusters">
<span ng-repeat="cluster in server.clusters">
{{cluster.name}}&nbsp;
<span ng-switch-when="clusters">
<span ng-repeat="cluster in server.clusters">
{{cluster.name}}&nbsp;
</span>
</span>
</span>
<!-- <span ng-switch-when="roles">
<span ng-repeat="role in server['roles']" class="role-badge" ng-style="{'background-color': role.color}">
{{role.display_name}}
</span>
</span> -->
<span ng-switch-default ng-if="column.field!='roles'">
{{server[column.field]}}
</span>
<span ng-switch-default ng-if="column.field!='roles'">
{{server[column.field]}}
</span>
</span>
</td>
<td ng-repeat="(key, value) in interfaces">
@ -215,18 +217,18 @@
<table class="table table-striped table-border-grey">
<thead>
<tr>
<th>Network</th>
<th>Interface</th>
<th>Network</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>
<td>{{value}}</td>
</tr>
</tbody>
</table>
@ -269,11 +271,11 @@
<td>tunnel_id_ranges_{{key}}</td>
<td>{{value}}</td>
</tr>
<tr ng-if="neutronConfig.openvswitch.tenant_network_type=='vlan'" ng-repeat="(key, value) in neutronConfig.openvswitch.network_vlan_ranges">
<tr ng-if="neutronConfig.openvswitch.tenant_network_type=='vlan'" ng-repeat="(key, value) in neutronConfig.openvswitch.vlan_ranges">
<td>network_vlan_ranges_{{key}}</td>
<td>{{value}}</td>
</tr>
<tr ng-if="neutronConfig.openvswitch.tenant_network_type=='vlan'" ng-repeat="(key, value) in neutronConfig.openvswitch.bridge_mappings">
<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>
</tr>

View File

@ -1180,63 +1180,75 @@ define(['angular', 'angularMocks'], function() {
"form_name": "cephForm",
"data_structure": "form",
"data":[{
"label": "OP Threads",
"is_required": 'false',
"name": "op_threads",
"default_value": "1",
"display_type": "text"
},{
"label": "Journal Size",
"is_required": 'false',
"default_value": "1",
"name": "journal_size",
"display_type": "text"
},{
"label": "OSD Pool Size",
"is_required": 'true',
"default_value": "1",
"name": "osd_pool_size",
"display_type": "text"
},{
"label": "OSD Pool PG Number",
"is_required": 'true',
"default_value": "1",
"name": "osd_pool_pgp_num",
"display_type": "text"
}]
"name":"global_config",
"content":[
{
"label": "OP Threads",
"is_required": 'false',
"name": "op_threads",
"default_value": "1",
"display_type": "text"
},{
"label": "Journal Size",
"is_required": 'false',
"default_value": "1",
"name": "journal_size",
"display_type": "text"
}]
},{
"name":"osd_config",
"content":[
{
"label": "OSD Pool Size",
"is_required": 'true',
"default_value": "1",
"name": "osd_pool_size",
"display_type": "text"
},{
"label": "OSD Pool PG Number",
"is_required": 'true',
"default_value": "1",
"name": "osd_pool_pgp_num",
"display_type": "text"
}]
}]
},{
"accordion_heading": "Neutron Configurations",
"category": "neutron_config",
"form_name": "neutronForm",
"data_structure": "form",
"data":[{
"name": "tenant_network_type",
"input_type": "dropdown",
"label": "Tenant Network Type",
"content_data":{
"gre":[{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "tunnel_id_ranges",
"label": "Tunnel ID Ranges",
"hint": "1:1000"
}],
"vlan":[{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "vlan_ranges",
"label": "Network Vlan Ranges",
"hint": "physnet1:2700:2999"
},{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "bridge",
"label": "Bridge Mapping",
"hint": "physnet1:br-eth1"
}]
},
"is_required": 'true',
"options":['gre', 'vlan']
"name":"openvswitch",
"content":[{
"name": "tenant_network_type",
"input_type": "dropdown",
"label": "Tenant Network Type",
"default_value": "gre",
"content_data":{
"gre":[{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "tunnel_id_ranges",
"label": "Tunnel ID Ranges",
"hint": "1:1000"
}],
"vlan":[{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "vlan_ranges",
"label": "Network Vlan Ranges",
"hint": "physnet1:2700:2999"
},{
"is_required": 'true',
"display_type": "dropdown_text_multiple",
"name": "bridge",
"label": "Bridge Mapping",
"hint": "physnet1:br-eth1"
}]
},
"is_required": 'true',
"options":['gre', 'vlan']
}]
}]
},{
"accordion_heading": "High Availability Configurations",
@ -1644,7 +1656,7 @@ define(['angular', 'angularMocks'], function() {
}
],
"order": 2,
"name": "sever_credentials"
"name": "server_credentials"
},
{
"title": "",

View File

@ -267,7 +267,14 @@ define(['./baseService'], ()->
$scope.service_credentials = @wizardFactory.getServiceCredentials()
$scope.console_credentials = @wizardFactory.getConsoleCredentials()
$scope.package_config = @wizardFactory.getPackageConfig();
$scope.package_config = @wizardFactory.getPackageConfig()
if $scope.package_config["neutron_config"]
if $scope.package_config["neutron_config"]["openvswitch"]
for key,value of $scope.package_config["neutron_config"]["openvswitch"]
$scope.package_config["neutron_config"][key] = value
typeIsArray = Array.isArray || ( value ) -> return {}.toString.call( value ) is '[object Array]'
@dataService.getPackageConfigUiElements($scope.cluster.flavor.id).success (data) ->
$scope.metaData = data.flavor_config
@ -279,18 +286,31 @@ define(['./baseService'], ()->
if value.data_structure is "form"
for serialNum, content of value.data
if !$scope.package_config[value.category][content.name]
if !content.default_value
$scope.package_config[value.category][content.name] = ""
if !content.content
if !content.default_value
$scope.package_config[value.category][content.name] = ""
else
$scope.package_config[value.category][content.name] = content.default_value
else
$scope.package_config[value.category][content.name] = content.default_value
for content_data_key, content_data_value of content.content_data
for details_content_data_key, details_content_data_value of content_data_value
if !$scope.package_config[value.category][details_content_data_value.name]
if !details_content_data_value.hint
$scope.package_config[value.category][details_content_data_value.name] = [""]
$scope.package_config[value.category][content.name] = {}
if content.content
for content_data_serialNum, content_data_value of content.content
if !$scope.package_config[value.category][content.name][content_data_value.name]
if !content_data_value.default_value
if !content_data_value.content_data
$scope.package_config[value.category][content.name][content_data_value.name] = ""
else
$scope.package_config[value.category][content.name][content_data_value.name] = {}
else
$scope.package_config[value.category][details_content_data_value.name] = [details_content_data_value.hint]
$scope.package_config[value.category][content.name][content_data_value.name] = content_data_value.default_value
for details_content_data_key, details_content_data_value of content_data_value.content_data
if details_content_data_key is content_data_value.default_value
for details_key, details_value of details_content_data_value
if !$scope.package_config[value.category][content.name][details_value.name]
if !details_value.hint
$scope.package_config[value.category][content.name][details_value.name] = [""]
else
$scope.package_config[value.category][content.name][details_value.name] = [details_value.hint]
if value.category is "service_credentials" or value.category is "console_credentials"
if !$scope.package_config["security"]
$scope.package_config["security"] = {}
@ -299,21 +319,23 @@ define(['./baseService'], ()->
else
$scope.metaData[key].dataSource = $scope.package_config[value.category]
$scope.change = (category,name,value) ->
for i of $scope.package_config[category]
if i!=name
delete $scope.package_config[category][i]
for metaKey, metaValue of $scope.metaData
if metaValue.category is category
for serialNum, content of metaValue.data
for content_data_key, content_data_value of content.content_data
if content_data_key is value
for i in content_data_value
if !$scope.package_config[category][i.name]
if !i.hint
$scope.package_config[category][i.name] = [""]
else
$scope.package_config[category][i.name] = [i.hint]
$scope.change = (category,subname,name,value) ->
for i of $scope.package_config[category][subname]
if i isnt name
delete $scope.package_config[category][subname][i]
for metaKey, metaValue of $scope.metaData
if metaValue.category is category
for serialNum, content of metaValue.data
for content_data_key, content_data_value of content.content
for detail_data_key, detail_data_value of content_data_value.content_data
if detail_data_key is value
for i in detail_data_value
if !$scope.package_config[category][subname][i.name]
if !i.hint
$scope.package_config[category][subname][i.name] = [""]
else
$scope.package_config[category][subname][i.name] = [i.hint]
keyLength_service_credentials = Object.keys($scope.service_credentials).length;
$scope.editServiceMode = []
$scope.editServiceMode.length = keyLength_service_credentials
@ -384,10 +406,18 @@ define(['./baseService'], ()->
$scope.service_credentials = @wizardFactory.getServiceCredentials()
$scope.console_credentials = @wizardFactory.getConsoleCredentials()
$scope.global_config = @wizardFactory.getGeneralConfig()
$scope.cephConfig = @wizardFactory.getCephConfig()
$scope.os_global_config = @wizardFactory.getOsGlobalConfig()
$scope.packageConfig = @wizardFactory.getPackageConfig()
if $scope.packageConfig.ceph_config
$scope.cephConfig = $scope.packageConfig.ceph_config
if $scope.packageConfig.neutron_config
$scope.neutronConfig = $scope.packageConfig.neutron_config
@getServerColumns().success (data) ->
$scope.server_columns = data.review
console.log(data.review)
for value, index in data.review
if value.title == "Hostname"
temp = $scope.server_columns[0];
@ -562,7 +592,7 @@ define(['./baseService'], ()->
# get rid of redundant field (ex: comfirm password should not be sent back to server)
for category in $scope.metaData
console.log("category", category)
# console.log("category", category)
for content in category.data
if content.datamatch
delete submitData.os_config[category.name][content.name]
@ -748,46 +778,6 @@ define(['./baseService'], ()->
return;
$scope.$emit "loading", true
# targetSysConfigData =
# "package_config":
# "security":
# "service_credentials": $scope.service_credentials
# "console_credentials": $scope.console_credentials
# targetSysConfigData["package_config"]["ceph_config"] = $scope.cephConfig if $scope.currentAdapterName == "ceph_openstack_icehouse"
if $scope.currentAdapterName == "ceph_firefly"
targetSysConfigData["package_config"]={}
targetSysConfigData["package_config"]["ceph_config"] = $scope.cephConfig
if $scope.package_config["neutron_config"]
if !$scope.package_config["neutron_config"]["openvswitch"]
$scope.package_config["neutron_config"]["openvswitch"] = {}
for key,value of $scope.package_config["neutron_config"]
if key isnt "openvswitch"
if typeof value is "string"
$scope.package_config["neutron_config"]["openvswitch"][key] = value
else
$scope.package_config["neutron_config"]["openvswitch"][key] = []
for num,item of value
$scope.package_config["neutron_config"]["openvswitch"][key].push(item)
delete $scope.package_config["neutron_config"][key]
if $scope.package_config["ceph_config"]
if !$scope.package_config["ceph_config"]["osd_config"]
$scope.package_config["ceph_config"]["osd_config"] = {}
if !$scope.package_config["ceph_config"]["global_config"]
$scope.package_config["ceph_config"]["global_config"] = {}
for key, value of $scope.package_config["ceph_config"]
if key is "op_threads" or key is "journal_size"
if key is "op_threads"
$scope.package_config["ceph_config"]["osd_config"][key] = parseInt(value)
else
$scope.package_config["ceph_config"]["osd_config"][key] = value
delete $scope.package_config["ceph_config"][key]
if key is "osd_pool_size" or key is "osd_pool_pgp_num" or key is "osd_pool_pg_num"
$scope.package_config["ceph_config"]["global_config"][key] = value
delete $scope.package_config["ceph_config"][key]
targetSysConfigData =
"package_config": $scope.package_config
@ -818,19 +808,6 @@ define(['./baseService'], ()->
"state": "invalid",
"message": message
)
# @dataService.updateClusterConfig($scope.cluster.id, targetSysConfigData).success (data) ->
# wizardFactory.setCommitState(
# "name": "package_config"
# "state": "success"
# "message": ""
# )
# .error (response) ->
# wizardFactory.setCommitState(
# "name": "package_config"
# "state": "error"
# "message": response
# )
# manually assign roles
assignRole: ($scope, role) ->
serverChecked = false