diff --git a/webroot/common/ui/js/controller.constants.js b/webroot/common/ui/js/controller.constants.js index 1e7e4d1ae..d3c07c640 100644 --- a/webroot/common/ui/js/controller.constants.js +++ b/webroot/common/ui/js/controller.constants.js @@ -691,8 +691,23 @@ define([ // Virtual Network Config Constants this.URL_CFG_VN_DETAILS = '/api/tenants/config/virtual-network-details'; - //Dns constants + + /* DNS Server constants */ this.ACTIVE_DNS_DATA = "/api/tenants/config/sandesh/virtual-DNS/"; + this.DNS_SERVER_GRID_ID = "dns-server-grid"; + this.CONFIG_DNS_SERVER_PAGE_ID = 'config-dns-server-page'; + this.CONFIG_DNS_SERVER_SECTION_ID = 'config-dns-server-section'; + this.CONFIG_DNS_SERVER_LIST_VIEW_ID = 'config-dns-server-list'; + this.CONFIG_DNS_SERVER_ID = 'config-dns-server'; + this.DNS_SERVER_PREFIX_ID = 'dns_server'; + + /* DNS Record constants */ + this.CONFIG_DNS_RECORDS_PAGE_ID = 'config-dns-records-page'; + this.CONFIG_DNS_RECORDS_LIST_VIEW_ID = 'config-dns-records-list'; + this.CONFIG_DNS_RECORDS_SECTION_ID = 'config-dns-records-section'; + this.CONFIG_DNS_RECORDS_ID = 'config-dns-records'; + this.DNS_RECORDS_GRID_ID = 'dns-records-grid'; + this.DNS_RECORDS_PREFIX_ID = 'dns_record'; /* Route Aggregate Constants */ this.CONFIG_ROUTE_AGGREGATE_LIST_ID = "config-route-aggregate-list"; diff --git a/webroot/common/ui/js/controller.labels.js b/webroot/common/ui/js/controller.labels.js index c11f9afb7..ec974b555 100644 --- a/webroot/common/ui/js/controller.labels.js +++ b/webroot/common/ui/js/controller.labels.js @@ -925,32 +925,19 @@ define([ this.TXT_ROUTING_POLICY = 'routing policy'; this.TITLE_REMOVE_GRID = "Remove Routing Policy"; - this.CONFIG_DNS_SERVER_PAGE_ID = 'config-dns-server-page'; - this.CONFIG_DNS_SERVER_LIST_VIEW_ID = 'config-dns-server-list'; - this.CONFIG_DNS_SERVER_SECTION_ID = 'dnsServer'; - this.CONFIG_DNS_SERVER_ID = 'config-dns-server'; + /* DNS Server labels */ this.TITLE_DNS_SERVER = 'DNS Servers'; - this.DNS_SERVER_GRID_ID = 'dns-server-grid'; - this.DNS_SERVER_PREFIX_ID = 'DNS_server'; this.TITLE_CREATE_DNS_SERVER = 'Create DNS Server'; this.TITLE_DEL_DNS_SERVER = 'Delete DNS Server'; + this.TITLE_DNS_SERVER_MULTI_DELETE = "Delete DNS Server(s)"; this.TITLE_EDIT_DNS_SERVER = 'Edit DNS Server'; - this.DNS_SERVER_DETAILS = 'DNS Server Details'; - - this.CONFIG_DNS_RECORDS_PAGE_ID = 'config-dns-records-page'; - this.CONFIG_DNS_RECORDS_LIST_VIEW_ID = 'config-dns-records-list'; - this.CONFIG_DNS_RECORDS_SECTION_ID = 'dnsRecords'; - this.CONFIG_DNS_RECORDS_ID = 'config-dns-records'; + /* DNS Record labels */ this.TITLE_DNS_RECORDS = 'DNS Records'; - this.DNS_RECORDS_GRID_ID = 'dns-records-grid'; - this.DNS_RECORDS_PREFIX_ID = 'DNS_records'; this.TITLE_CREATE_DNS_RECORD = 'Create DNS Record'; this.TITLE_DEL_DNS_RECORD = 'Delete DNS Record'; + this.TITLE_DNS_RECORD_MULTI_DELETE = "Delete DNS Record(s)"; this.TITLE_EDIT_DNS_RECORD = 'Edit DNS Record'; - this.DNS_RECORD_DETAILS = 'DNS Record Details'; - this.DNS_BREADCRUMB_DROPDOWN = "dns-breadcrumb-dropdown"; - //Config DB Labels - Start this.CDB_FQ_TABLE_NAMES_GRID_ID = "cdb-fq-table-names-grid"; diff --git a/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.mock.data.js b/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.mock.data.js index f47ef352a..b8d5fb48b 100644 --- a/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.mock.data.js +++ b/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.mock.data.js @@ -25,88 +25,155 @@ "uuid": "e59247c6-280f-47b7-a3f3-994f3108cf93" } ], - dnsRecordsMockData : { - "data": { - "virtual-DNS": { - "fq_name": [ - "default-domain", - "s1" - ], - "uuid": "e59247c6-280f-47b7-a3f3-994f3108cf93", - "network_ipam_back_refs": [ - { - "to": [ - "default-domain", - "default-project", - "default-network-ipam" - ], - "href": "http://10.204.216.40:9100/network-ipam/f89712df-bef7-449a-97c8-504811115b17", - "attr": null, - "uuid": "f89712df-bef7-449a-97c8-504811115b17" - } - ], - "parent_uuid": "07fbaa4b-c7b8-4f3d-996e-9d8b1830b288", - "parent_href": "http://10.204.216.40:9100/domain/07fbaa4b-c7b8-4f3d-996e-9d8b1830b288", - "parent_type": "domain", - "perms2": { - "owner": "e9a7b1af07c147889169045c5f2caafb", - "owner_access": 7, - "global_access": 0, - "share": [] - }, - "virtual_DNS_records": [ - { - "to": [ - "default-domain", - "s1", - "9104933f-c179-44c7-8656-3d0529adb45f" - ], - "href": "http://10.204.216.40:9100/virtual-DNS-record/9104933f-c179-44c7-8656-3d0529adb45f", - "uuid": "9104933f-c179-44c7-8656-3d0529adb45f", - "virtual_DNS_record_data": { - "record_type": "A", - "record_ttl_seconds": 86400, - "record_name": "h1", - "record_class": "IN", - "record_data": "1.1.1.1" + dnsRecordsMockData : [ + { + "virtual-DNS-records": [ + { + "virtual-DNS-record": { + "fq_name": [ + "default-domain", + "s2", + "47815646-001f-45f7-9766-ea81d6b1614b" + ], + "name": "47815646-001f-45f7-9766-ea81d6b1614b", + "virtual_DNS_record_data": { + "record_type": "A", + "record_ttl_seconds": 86400, + "record_name": "h1", + "record_class": "IN", + "record_data": "1.1.1.1" + }, + "parent_uuid": "ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_href": "http://10.204.216.40:9100/virtual-DNS/ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_type": "virtual-DNS", + "perms2": { + "owner": null, + "owner_access": 7, + "global_access": 0, + "share": [] + }, + "href": "http://10.204.216.40:9100/virtual-DNS-record/47815646-001f-45f7-9766-ea81d6b1614b", + "id_perms": { + "enable": true, + "uuid": { + "uuid_mslong": 5152494307338307000, + "uuid_lslong": 10909664990725235000 + }, + "created": "2016-03-29T11:44:50.274978", + "description": null, + "creator": null, + "user_visible": true, + "last_modified": "2016-03-29T11:44:50.274978", + "permissions": { + "owner": "cloud-admin", + "owner_access": 7, + "other_access": 7, + "group": "cloud-admin-group", + "group_access": 7 + } + }, + "display_name": "47815646-001f-45f7-9766-ea81d6b1614b", + "uuid": "47815646-001f-45f7-9766-ea81d6b1614b" + } + }, + { + "virtual-DNS-record": { + "fq_name": [ + "default-domain", + "s2", + "d156b94f-3428-4ce2-a668-667b67459b69" + ], + "name": "d156b94f-3428-4ce2-a668-667b67459b69", + "virtual_DNS_record_data": { + "record_type": "A", + "record_ttl_seconds": 45, + "record_name": "h2", + "record_class": "IN", + "record_data": "2.2.2.2" + }, + "parent_uuid": "ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_href": "http://10.204.216.40:9100/virtual-DNS/ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_type": "virtual-DNS", + "perms2": { + "owner": null, + "owner_access": 7, + "global_access": 0, + "share": [] + }, + "href": "http://10.204.216.40:9100/virtual-DNS-record/d156b94f-3428-4ce2-a668-667b67459b69", + "id_perms": { + "enable": true, + "description": null, + "creator": null, + "created": "2016-03-29T12:18:21.199282", + "user_visible": true, + "last_modified": "2016-03-29T12:18:35.565607", + "permissions": { + "owner": "cloud-admin", + "owner_access": 7, + "other_access": 7, + "group": "cloud-admin-group", + "group_access": 7 + }, + "uuid": { + "uuid_mslong": 15084447751752667000, + "uuid_lslong": 11990946688073570000 } - } - ], - "href": "http://10.204.216.40:9100/virtual-DNS/e59247c6-280f-47b7-a3f3-994f3108cf93", - "virtual_DNS_data": { - "floating_ip_record": "dashed-ip-tenant-name", - "domain_name": "s1.com", - "external_visible": true, - "dynamic_records_from_client": true, - "reverse_resolution": true, - "default_ttl_seconds": 86400, - "record_order": "random" - }, - "id_perms": { - "enable": true, - "uuid": { - "uuid_mslong": 16542363297686440000, - "uuid_lslong": 11813954812927070000 }, - "created": "2015-11-24T08:45:13.176071", - "description": null, - "creator": null, - "user_visible": true, - "last_modified": "2015-11-24T08:45:13.176071", - "permissions": { - "owner": "admin", + "display_name": "d156b94f-3428-4ce2-a668-667b67459b69", + "uuid": "d156b94f-3428-4ce2-a668-667b67459b69" + } + }, + { + "virtual-DNS-record": { + "fq_name": [ + "default-domain", + "s2", + "d1bdc0cb-9f96-43d8-b329-c51b8922371b" + ], + "name": "d1bdc0cb-9f96-43d8-b329-c51b8922371b", + "virtual_DNS_record_data": { + "record_type": "A", + "record_ttl_seconds": 86400, + "record_name": "h3", + "record_class": "IN", + "record_data": "3.3.3.3" + }, + "parent_uuid": "ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_href": "http://10.204.216.40:9100/virtual-DNS/ffa7431e-7206-40ce-9886-76a254cd19ae", + "parent_type": "virtual-DNS", + "perms2": { + "owner": null, "owner_access": 7, - "other_access": 7, - "group": "KeystoneServiceAdmin", - "group_access": 7 - } - }, - "display_name": "s1", - "name": "s1" + "global_access": 0, + "share": [] + }, + "href": "http://10.204.216.40:9100/virtual-DNS-record/d1bdc0cb-9f96-43d8-b329-c51b8922371b", + "id_perms": { + "enable": true, + "uuid": { + "uuid_mslong": 15113447905313570000, + "uuid_lslong": 12910066528889747000 + }, + "created": "2016-03-29T12:24:21.954924", + "description": null, + "creator": null, + "user_visible": true, + "last_modified": "2016-03-29T12:24:21.954924", + "permissions": { + "owner": "cloud-admin", + "owner_access": 7, + "other_access": 7, + "group": "cloud-admin-group", + "group_access": 7 + } + }, + "display_name": "d1bdc0cb-9f96-43d8-b329-c51b8922371b", + "uuid": "d1bdc0cb-9f96-43d8-b329-c51b8922371b" + } } - }, - "lastKey": null, - "more": false - } + ] + } + ] }); }); \ No newline at end of file diff --git a/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.test.js b/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.test.js index 95a002388..3700639f1 100644 --- a/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.test.js +++ b/webroot/config/dns/records/test/ui/views/dnsRecordsGridView.test.js @@ -28,7 +28,8 @@ define([ body: JSON.stringify(TestMockdata.dnsServerListMockData) })); responses.push(cotr.createFakeServerResponse({ - url : /\/api\/admin\/config\/get-data\?type=virtual-DNS-record&count=4&fqnUUID=e59247c6-280f-47b7-a3f3-994f3108cf93.*$/, + url : /\/api\/tenants\/config\/get-config-details.*$/, + method: "POST", body: JSON.stringify(TestMockdata.dnsRecordsMockData) })); @@ -50,7 +51,7 @@ define([ rootView: configDNSRecordsLoader.dnsRecordsView, tests: [ { - viewId: 'DnsRecordsGrid', + viewId: ctwc.DNS_RECORDS_GRID_ID, suites: [ { class: GridViewTestSuite, diff --git a/webroot/config/dns/records/ui/js/dnsRecords.main.js b/webroot/config/dns/records/ui/js/dnsRecords.main.js index c5a9f6fad..8caf97cf3 100644 --- a/webroot/config/dns/records/ui/js/dnsRecords.main.js +++ b/webroot/config/dns/records/ui/js/dnsRecords.main.js @@ -26,7 +26,8 @@ function ConfigDNSRecordsLoader() { } else { self.renderView(renderFn, hashParams); } - } + }; + this.renderView = function(renderFn, hashParams) { $(contentContainer).html(""); switch (renderFn) { diff --git a/webroot/config/dns/records/ui/js/dnsRecordsFormatter.js b/webroot/config/dns/records/ui/js/dnsRecordsFormatter.js index 1222d42b7..3786003fb 100644 --- a/webroot/config/dns/records/ui/js/dnsRecordsFormatter.js +++ b/webroot/config/dns/records/ui/js/dnsRecordsFormatter.js @@ -30,6 +30,9 @@ define(['underscore'], function(_) { case ("NS"): formattedRecType = recordType + " (Delegation Record)"; break; + case ("MX"): + formattedRecType = recordType + " (Mail Exchanger Record)"; + break; default: formattedRecType = "-"; } @@ -38,10 +41,10 @@ define(['underscore'], function(_) { }; /* - * @TTLFormatter + * @ttlFormatter */ - self.TTLFormatter = function(row, col, val, d, rowData) { + self.ttlFormatter = function(row, col, val, d, rowData) { var TTL = getValueByJsonPath(rowData, 'virtual_DNS_record_data;record_ttl_seconds', "-"); diff --git a/webroot/config/dns/records/ui/js/models/dnsRecordsModel.js b/webroot/config/dns/records/ui/js/models/dnsRecordsModel.js index ee74c06dc..aab1fbcd9 100644 --- a/webroot/config/dns/records/ui/js/models/dnsRecordsModel.js +++ b/webroot/config/dns/records/ui/js/models/dnsRecordsModel.js @@ -6,7 +6,7 @@ define([ 'contrail-model' ], function(_, ContrailModel) { var self; - var DnsRecordsModel = ContrailModel.extend({ + var dnsRecordsModel = ContrailModel.extend({ defaultConfig: { "uuid": null, "virtual_DNS_record_data": { @@ -40,8 +40,6 @@ define([ var domain = contrail.getCookie(cowc.COOKIE_DOMAIN); var project = contrail.getCookie(cowc.COOKIE_PROJECT); - delete newdnsRecordsData['errors']; - delete newdnsRecordsData['locks']; if (newdnsRecordsData['uuid'] == '') { newdnsRecordsData['display_name'] = @@ -51,15 +49,13 @@ define([ newdnsRecordsData['fq_name'].length == 0) { newdnsRecordsData['fq_name'] = []; - newdnsRecordsData['fq_name'] = window.dnsSelectedValueData - .fq_name.split(':'); + newdnsRecordsData['fq_name'].push(domain); + newdnsRecordsData['fq_name'].push(self.dnsServerData.name); } var nwIpams = newdnsRecordsData[ 'network_ipam_back_refs']; - if (newdnsRecordsData[ - 'virtual_DNS_record_data'][ - 'record_ttl_seconds' - ] == null) { + if (!newdnsRecordsData['virtual_DNS_record_data'] + ['record_ttl_seconds']) { newdnsRecordsData[ 'virtual_DNS_record_data'][ 'record_ttl_seconds' @@ -88,7 +84,7 @@ define([ ['record_type'] = newdnsRecordsData[ 'user_created_record_type']; newdnsRecordsData['parent_type'] = 'domain'; - newdnsRecordsData['parent_uuid'] = window.dnsSelectedValueData + newdnsRecordsData['parent_uuid'] = self.dnsServerData .parentSelectedValueData.value; var virtDNSRecData = newdnsRecordsData[ 'virtual_DNS_record_data']; @@ -104,12 +100,10 @@ define([ newdnsRecordsData['virtual_DNS_records'][0] ['to'] = newdnsRecordsData['fq_name']; - delete newdnsRecordsData['elementConfigMap']; + ctwu.deleteCGridData(newdnsRecordsData); + delete newdnsRecordsData[ 'user_created_dns_method']; - delete newdnsRecordsData.errors; - delete newdnsRecordsData.locks; - delete newdnsRecordsData.cgrid; delete newdnsRecordsData.id_perms; delete newdnsRecordsData.user_created; delete newdnsRecordsData.tenant_dns_records; @@ -135,7 +129,7 @@ define([ postData); ajaxConfig.url = '/api/tenants/config/virtual-DNS/' + - window.dnsSelectedValueData.value + + self.dnsServerData.value + '/virtual-DNS-records'; } else if (mode === ctwl.EDIT_ACTION) { @@ -147,7 +141,7 @@ define([ postData); ajaxConfig.url = '/api/tenants/config/virtual-DNS/' + - window.dnsSelectedValueData.value + + self.dnsServerData.value + '/virtual-DNS-record/' + newdnsRecordsData['uuid']; } @@ -173,7 +167,7 @@ define([ } else { if (contrail.checkIfFunction(callbackObj.error)) { callbackObj.error(this.getFormErrorText( - 'DNS_Record')); + ctwc.DNS_RECORDS_PREFIX_ID)); } } @@ -281,5 +275,5 @@ define([ } } }); - return DnsRecordsModel; + return dnsRecordsModel; }); \ No newline at end of file diff --git a/webroot/config/dns/records/ui/js/views/dnsRecordsEditView.js b/webroot/config/dns/records/ui/js/views/dnsRecordsEditView.js index 67ffc0cd7..85549e777 100644 --- a/webroot/config/dns/records/ui/js/views/dnsRecordsEditView.js +++ b/webroot/config/dns/records/ui/js/views/dnsRecordsEditView.js @@ -6,11 +6,10 @@ define([ 'knockback', 'contrail-view' ], function(_, Knockback, ContrailView) { - var gridElId = "#DnsRecordsGrid"; - var prefixId = "DnsRecordsPrefix"; + var prefixId = ctwc.DNS_RECORDS_PREFIX_ID; var modalId = 'configure-' + prefixId; var formId = '#' + modalId + '-form'; - var DnsRecordsEditView = ContrailView.extend({ + var dnsRecordsEditView = ContrailView.extend({ renderAddEditDnsRecords: function(options) { var editTemplate = contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_EDIT); @@ -20,8 +19,6 @@ define([ }), self = this; - var gridData = options['gridData']; - var configData = options['configData']; var mode = options['mode']; var disabled = false; cowu.createModal({ @@ -101,15 +98,11 @@ define([ }, renderDeleteDnsRecords: function(options) { var delTemplate = - contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_DEL), + contrail.getTemplate4Id("core-generic-delete-form-template"), self = this; var items = ""; - var delLayout = delTemplate({ - prefixId: prefixId, - item: ctwl.TITLE_DNS_RECORDS, - itemId: items - }); + var delLayout = delTemplate({prefixId: prefixId}); cowu.createModal({ 'modalId': modalId, 'className': 'modal-680', @@ -181,7 +174,6 @@ define([ } var vdnsList = response['virtual_DNSs']; var vdnsCnt = vdnsList.length; - window.ipams = {}; for (var i = 0; i < vdnsCnt; i++) { var fqn = getValueByJsonPath(vdnsList[i], 'virtual-DNS;fq_name', []); @@ -193,27 +185,7 @@ define([ } } return dnss; - } - - function formatNetworkIpams(response) { - var ipams = []; - if (null == response) { - return ipams; - } - var ipamsList = response['network-ipams']; - var ipamsCnt = ipamsList.length; - for (var i = 0; i < ipamsCnt; i++) { - var fqn = ipamsList[i].fq_name; - var fqnString = fqn[0] + ':' + fqn[1] + ':' + fqn[2]; - ipams.push({ - 'id': fqnString + '**' + ipamsList[i].uuid + - '**', - 'text': fqn.join(':') - }); - window.ipams[fqn.join(':')] = ipamsList[i]['uuid']; - } - return ipams; - } + }; function getAddDnsRecordsViewConfig(isDisable) { var prefixId = ctwl.TEST_DNS_RECORDS_PREFIX_ID; @@ -357,7 +329,7 @@ define([ } } return dnsViewConfig; - } + }; - return DnsRecordsEditView; + return dnsRecordsEditView; }); \ No newline at end of file diff --git a/webroot/config/dns/records/ui/js/views/dnsRecordsGridView.js b/webroot/config/dns/records/ui/js/views/dnsRecordsGridView.js index 68783d332..6a0fb8a0b 100644 --- a/webroot/config/dns/records/ui/js/views/dnsRecordsGridView.js +++ b/webroot/config/dns/records/ui/js/views/dnsRecordsGridView.js @@ -9,11 +9,11 @@ define([ 'config/dns/records/ui/js/dnsRecordsFormatter' ], function(_, ContrailView, DnsRecordsModel, DnsRecordsEditView, dnsRecordFormatters) { - var DnsRecordsEditView = new DnsRecordsEditView(), - gridElId = "#DnsRecordsGrid"; + var dnsRecordsEditView = new DnsRecordsEditView(), + gridElId = "#" + ctwc.DNS_RECORDS_GRID_ID; var dnsRecordFormatters = new dnsRecordFormatters(); - var DnsRecordsGridView = ContrailView.extend({ + var dnsRecordsGridView = ContrailView.extend({ el: $(contentContainer), render: function() { var self = this, @@ -21,89 +21,93 @@ define([ pagerOptions = viewConfig['pagerOptions']; this.renderView4Config(self.$el, self.model, getDnsRecordsGridViewConfig( - pagerOptions)); + viewConfig)); } }); - var getDnsRecordsGridViewConfig = function(pagerOptions) { + var getDnsRecordsGridViewConfig = function(viewConfig) { return { - elementId: "DnsRecordsListView", + elementId: ctwc.CONFIG_DNS_RECORDS_ID, view: "SectionView", viewConfig: { rows: [{ columns: [{ - elementId: 'DnsRecordsGrid', - title: 'DNS Records', + elementId: ctwc.DNS_RECORDS_GRID_ID, + title: ctwl.TITLE_DNS_RECORDS, view: "GridView", viewConfig: { elementConfig: getConfiguration( - pagerOptions) + viewConfig) } }] }] } } }; - var rowActionConfig = [ - ctwgc.getEditConfig('Edit', function(rowIndex) { - var dataItem = - $(gridElId).data('contrailGrid')._dataView.getItem( - rowIndex); - dnsRecordsModel = new DnsRecordsModel(dataItem); - subscribeModelAttrChanges(dnsRecordsModel); - DnsRecordsEditView.model = dnsRecordsModel; - DnsRecordsEditView.renderAddEditDnsRecords({ - "title": ctwl.TITLE_EDIT_DNS_RECORD + - ' (' + dataItem[ - 'virtual_DNS_record_data'][ - 'record_name' - ] + - ')', - callback: function() { - var dataView = - $(gridElId).data( - "contrailGrid")._dataView; - dataView.refreshData(); - }, - mode : ctwl.EDIT_ACTION - }); - }), - ctwgc.getDeleteConfig('Delete', function(rowIndex) { - var dnsRecordsModel = new DnsRecordsModel(); - var dataItem = - $(gridElId).data('contrailGrid')._dataView.getItem( - rowIndex); - var checkedRows = [dataItem]; - DnsRecordsEditView.model = dnsRecordsModel; - DnsRecordsEditView.renderDeleteDnsRecords({ - "title": ctwl.TITLE_DEL_DNS_RECORD + - ' (' + dataItem[ - 'virtual_DNS_record_data'][ - 'record_name' - ] + ')', - checkedRows: checkedRows, - callback: function() { - var dataView = - $(gridElId).data( - "contrailGrid")._dataView; - dataView.refreshData(); - } - }); - }) - ]; + function rowActionConfig(viewConfig) { + var rowActConfig = [ + ctwgc.getEditConfig('Edit', function(rowIndex) { + var dataItem = + $(gridElId).data('contrailGrid')._dataView.getItem( + rowIndex); - var getConfiguration = function() { + dnsRecordsModel = new DnsRecordsModel(dataItem); + dnsRecordsModel.dnsServerData = viewConfig.dnsServerData; + subscribeModelAttrChanges(dnsRecordsModel); + dnsRecordsEditView.model = dnsRecordsModel; + dnsRecordsEditView.renderAddEditDnsRecords({ + "title": ctwl.TITLE_EDIT_DNS_RECORD + + ' (' + dataItem[ + 'virtual_DNS_record_data'][ + 'record_name' + ] + + ')', + callback: function() { + var dataView = + $(gridElId).data( + "contrailGrid")._dataView; + dataView.refreshData(); + }, + mode : ctwl.EDIT_ACTION + }); + }), + ctwgc.getDeleteConfig('Delete', function(rowIndex) { + var dnsRecordsModel = new DnsRecordsModel(); + var dataItem = + $(gridElId).data('contrailGrid')._dataView.getItem( + rowIndex); + var checkedRows = [dataItem]; + dnsRecordsEditView.model = dnsRecordsModel; + dnsRecordsEditView.renderDeleteDnsRecords({ + "title": ctwl.TITLE_DEL_DNS_RECORD + + ' (' + dataItem[ + 'virtual_DNS_record_data'][ + 'record_name' + ] + ')', + checkedRows: checkedRows, + callback: function() { + var dataView = + $(gridElId).data( + "contrailGrid")._dataView; + dataView.refreshData(); + } + }); + }) + ]; + return rowActConfig; + }; + var getConfiguration = function(viewConfig) { var gridElementConfig = { header: { title: { - text: "DNS Records" + text: ctwl.TITLE_DNS_RECORDS }, - advanceControls: getHeaderActionConfig(gridElId) + advanceControls: getHeaderActionConfig(viewConfig) }, body: { options: { - actionCell: rowActionConfig, + actionCell: rowActionConfig(viewConfig), detail: { template: cowu.generateDetailTemplateHTML( getDNSRecordsDetailsTemplateConfig(), @@ -120,7 +124,20 @@ define([ } }, }, - dataSource: {} + dataSource: {}, + statusMessages: { + loading: { + text: 'Loading DNS Records..' + }, + empty: { + text: 'No DNS Records Found.' + }, + errorGettingData: { + type: 'error', + iconClasses: 'icon-warning', + text: 'Error in getting DNS Records.' + } + } }, columnHeader: { columns: DnsRecordsColumns @@ -129,7 +146,7 @@ define([ return gridElementConfig; }; - DnsRecordsColumns = [ + var DnsRecordsColumns = [ { name: 'DNS Record Name', @@ -252,12 +269,12 @@ define([ }; } ); - } + }; - function getHeaderActionConfig(gridElId) { + function getHeaderActionConfig(viewConfig) { var headerActionConfig = [{ "type": "link", - "title": ctwl.TITLE_DEL_DNS_RECORD, + "title": ctwl.TITLE_DNS_RECORD_MULTI_DELETE, "iconClass": 'icon-trash', "linkElementId": 'btnActionDelDNS', "onClick": function() { @@ -266,9 +283,9 @@ define([ 'contrailGrid').getCheckedRows(); if(checkedRows && checkedRows.length > 0) { dnsRecordsModel = new DnsRecordsModel(); - DnsRecordsEditView.model = dnsRecordsModel; - DnsRecordsEditView.renderDeleteDnsRecords({ - "title": ctwl.TITLE_DEL_DNS_RECORD, + dnsRecordsEditView.model = dnsRecordsModel; + dnsRecordsEditView.renderDeleteDnsRecords({ + "title": ctwl.TITLE_DNS_RECORD_MULTI_DELETE, checkedRows: checkedRows, callback: function() { var dataView = @@ -282,22 +299,15 @@ define([ } }, { "type": "link", - "title": ctwl.TITLE_CREATE_DNS_SERVER, + "title": ctwl.TITLE_CREATE_DNS_RECORD, "iconClass": "icon-plus", "onClick": function() { - var gridData = - $(gridElId).data('contrailGrid')._dataView - .getItems(); - var configData = $(gridElId).data( - 'configObj'); - var dnsRecordsModel = new DnsRecordsModel(); + dnsRecordsModel.dnsServerData = viewConfig.dnsServerData; subscribeModelAttrChanges(dnsRecordsModel); - DnsRecordsEditView.model = dnsRecordsModel; - DnsRecordsEditView.renderAddEditDnsRecords({ + dnsRecordsEditView.model = dnsRecordsModel; + dnsRecordsEditView.renderAddEditDnsRecords({ "title": ctwl.TITLE_CREATE_DNS_RECORD, - gridData: gridData, - configData: configData, callback: function() { var dataView = $( gridElId).data( @@ -310,13 +320,16 @@ define([ } }, ]; return headerActionConfig; - } + }; + this.RecordTypeFormatter = function(v, dc) { return dnsRecordFormatters.recordTypeFormatter("", "", v, "", dc); - } + }; + this.TTLFormatter = function(v, dc) { - return dnsRecordFormatters.TTLFormatter("", "", v, "", dc); - } - return DnsRecordsGridView; + return dnsRecordFormatters.ttlFormatter("", "", v, "", dc); + }; + + return dnsRecordsGridView; }); \ No newline at end of file diff --git a/webroot/config/dns/records/ui/js/views/dnsRecordsListView.js b/webroot/config/dns/records/ui/js/views/dnsRecordsListView.js index 29021d881..6c78d878b 100644 --- a/webroot/config/dns/records/ui/js/views/dnsRecordsListView.js +++ b/webroot/config/dns/records/ui/js/views/dnsRecordsListView.js @@ -4,77 +4,60 @@ define( ['underscore', 'contrail-view', 'contrail-list-model'], function(_, ContrailView, ContrailListModel) { - var DnsRecordsListView = ContrailView - .extend({ - el: $(contentContainer), - render: function() { - var self = this, - viewConfig = this.attributes.viewConfig; - window.dnsSelectedValueData = viewConfig.dnsSelectedValueData; - var dnsUUID = viewConfig.dnsSelectedValueData.value; - var listModelConfig = { - remote: { - ajaxConfig: { - // url: - // ctwc.get(ctwc.URL_GET_GLOBAL_VROUTER_CONFIG), - url: '/api/admin/config/get-data?type=virtual-DNS-record&count=4&fqnUUID=' + - dnsUUID, - //url : '/api/admin/config/get-data?type=virtual-DNS-record&count=4&fqnUUID=f76bcfaa-4019-43d7-b325-3a5be1b8bc4d&_=1444198345418', - type: "GET" - }, - dataParser: function(response) { - - var gridElId = - "#DnsRecordsGrid"; - $(gridElId).data( - 'configObj', - response); - return dnsRecordsDataParser( - response) - } - - } - }; - - var contrailListModel = new ContrailListModel( - listModelConfig); - this.renderView4Config(this.$el, - contrailListModel, - getDnsRecordsViewConfig()); - } - }); - - var dnsRecordsDataParser = function(result) { - // var newdnsRecordsData = []; - // var DNSServerData = []; - var idCount = 0; - - var vdnsData = getValueByJsonPath(result, - "data;virtual-DNS", null); - var vdnsRecoedsData = getValueByJsonPath(vdnsData, - "virtual_DNS_records", []); - - return vdnsRecoedsData; - } - - var getDnsRecordsViewConfig = function() { - return { - elementId: 'DnsRecordsPageListSection', - view: "SectionView", - viewConfig: { - rows: [{ - columns: [{ - elementId: 'DnsRecordsPageList', - title: 'DnsRecordsPageList', - view: "dnsRecordsGridView", - viewPathPrefix: "config/dns/records/ui/js/views/", - app: cowc.APP_CONTRAIL_CONTROLLER, - viewConfig: {} + var dnsRecordsListView = ContrailView.extend({ + el: $(contentContainer), + + render: function() { + var self = this, + viewConfig = this.attributes.viewConfig; + var dnsUUID = viewConfig.dnsSelectedValueData.value; + var listModelConfig = { + remote: { + ajaxConfig: { + url: ctwc.URL_GET_CONFIG_DETAILS, + type: "POST", + data: JSON.stringify({data: [{type: "virtual-DNS-records", + parent_id: dnsUUID}]}) + }, + dataParser: self.dnsRecordsDataParser + } + }; + + var contrailListModel = new ContrailListModel( + listModelConfig); + this.renderView4Config(this.$el, + contrailListModel, + self.getDnsRecordsViewConfig(viewConfig.dnsSelectedValueData)); + }, + + dnsRecordsDataParser: function(result) { + var dnsRecordsData = [], + vdnsData = getValueByJsonPath(result, + "0;virtual-DNS-records", []); + _.each(vdnsData, function(vdns){ + dnsRecordsData.push(getValueByJsonPath(vdns, + "virtual-DNS-record", {})); + }); + return dnsRecordsData; + }, + + getDnsRecordsViewConfig: function(dnsServerData) { + return { + elementId: ctwc.CONFIG_DNS_RECORDS_SECTION_ID, + view: "SectionView", + viewConfig: { + rows: [{ + columns: [{ + elementId: ctwc.CONFIG_DNS_RECORDS_LIST_VIEW_ID, + view: "dnsRecordsGridView", + viewPathPrefix: "config/dns/records/ui/js/views/", + app: cowc.APP_CONTRAIL_CONTROLLER, + viewConfig: { dnsServerData : dnsServerData} + }] }] - }] + } } } - }; - - return DnsRecordsListView; + }); + return dnsRecordsListView; }); \ No newline at end of file diff --git a/webroot/config/dns/records/ui/js/views/dnsRecordsView.js b/webroot/config/dns/records/ui/js/views/dnsRecordsView.js index e54ab0124..89b92795c 100644 --- a/webroot/config/dns/records/ui/js/views/dnsRecordsView.js +++ b/webroot/config/dns/records/ui/js/views/dnsRecordsView.js @@ -5,7 +5,7 @@ define([ 'underscore', 'contrail-view' ], function(_, ContrailView) { - var DnsRecordsView = ContrailView.extend({ + var dnsRecordsView = ContrailView.extend({ el: $(contentContainer), renderDnsRecords: function(viewConfig) { this.renderView4Config(this.$el, null, @@ -35,7 +35,7 @@ define([ function getDnsRecords(viewConfig) { return function(dnsSelectedValueData) { return { - elementId: 'DnsRecordsPageId', + elementId: ctwc.CONFIG_DNS_RECORDS_PAGE_ID, view: "dnsRecordsListView", viewPathPrefix: "config/dns/records/ui/js/views/", app: cowc.APP_CONTRAIL_CONTROLLER, @@ -46,5 +46,5 @@ define([ } }; - return DnsRecordsView; + return dnsRecordsView; }); \ No newline at end of file diff --git a/webroot/config/dns/servers/api/virtualdnsserversconfig.api.js b/webroot/config/dns/servers/api/virtualdnsserversconfig.api.js index 93d2c7031..881c6ad57 100644 --- a/webroot/config/dns/servers/api/virtualdnsserversconfig.api.js +++ b/webroot/config/dns/servers/api/virtualdnsserversconfig.api.js @@ -283,7 +283,7 @@ function deleteVirtualDNSCallback(vdnsObj, callback) { appData, function(err, data) { if (err) { - callback(err, null); + callback(null, {error: err, data: data}); return; } diff --git a/webroot/config/dns/servers/test/ui/views/dnsServersGridView.mock.data.js b/webroot/config/dns/servers/test/ui/views/dnsServersGridView.mock.data.js index 5b6f28d60..9d0c39c8c 100644 --- a/webroot/config/dns/servers/test/ui/views/dnsServersGridView.mock.data.js +++ b/webroot/config/dns/servers/test/ui/views/dnsServersGridView.mock.data.js @@ -14,16 +14,74 @@ } ] }; - this.dnsServersMockData = { - "data": { - "virtual_DNSs": [ + this.dnsServersMockData = [ + { + "virtual-DNSs": [ { "virtual-DNS": { "fq_name": [ "default-domain", "s1" ], - "uuid": "e59247c6-280f-47b7-a3f3-994f3108cf93", + "name": "s1", + "parent_uuid": "5ffc415b-fa86-4c9d-85d0-792e57b4064a", + "parent_href": "http://10.204.216.40:9100/domain/5ffc415b-fa86-4c9d-85d0-792e57b4064a", + "parent_type": "domain", + "perms2": { + "owner": null, + "owner_access": 7, + "global_access": 0, + "share": [] + }, + "href": "http://10.204.216.40:9100/virtual-DNS/bca3b8d6-f93e-4e3b-9d36-3dde9616b22a", + "virtual_DNS_data": { + "floating_ip_record": "dashed-ip-tenant-name", + "domain_name": "s1.com", + "external_visible": true, + "dynamic_records_from_client": true, + "reverse_resolution": false, + "default_ttl_seconds": 86400, + "record_order": "random" + }, + "id_perms": { + "enable": true, + "description": null, + "creator": null, + "created": "2016-03-29T04:56:29.915439", + "user_visible": true, + "last_modified": "2016-03-29T11:19:59.808696", + "permissions": { + "owner": "cloud-admin", + "owner_access": 7, + "other_access": 7, + "group": "cloud-admin-group", + "group_access": 7 + }, + "uuid": { + "uuid_mslong": 13592911333778412000, + "uuid_lslong": 11328309938907165000 + } + }, + "display_name": "s1", + "uuid": "bca3b8d6-f93e-4e3b-9d36-3dde9616b22a" + } + }, + { + "virtual-DNS": { + "fq_name": [ + "default-domain", + "s2" + ], + "name": "s2", + "parent_uuid": "5ffc415b-fa86-4c9d-85d0-792e57b4064a", + "parent_href": "http://10.204.216.40:9100/domain/5ffc415b-fa86-4c9d-85d0-792e57b4064a", + "parent_type": "domain", + "perms2": { + "owner": null, + "owner_access": 7, + "global_access": 0, + "share": [] + }, "network_ipam_back_refs": [ { "to": [ @@ -31,69 +89,97 @@ "default-project", "default-network-ipam" ], - "href": "http://10.204.216.40:9100/network-ipam/f89712df-bef7-449a-97c8-504811115b17", + "href": "http://10.204.216.40:9100/network-ipam/5e506bcb-08e4-4f99-85d1-4ba37e071c08", "attr": null, - "uuid": "f89712df-bef7-449a-97c8-504811115b17" + "uuid": "5e506bcb-08e4-4f99-85d1-4ba37e071c08" } ], - "parent_uuid": "07fbaa4b-c7b8-4f3d-996e-9d8b1830b288", - "parent_href": "http://10.204.216.40:9100/domain/07fbaa4b-c7b8-4f3d-996e-9d8b1830b288", + "href": "http://10.204.216.40:9100/virtual-DNS/ffa7431e-7206-40ce-9886-76a254cd19ae", + "virtual_DNS_data": { + "floating_ip_record": "vm-name", + "domain_name": "s2.com", + "external_visible": true, + "next_virtual_DNS": "default-domain:s1", + "dynamic_records_from_client": true, + "reverse_resolution": false, + "default_ttl_seconds": 340, + "record_order": "fixed" + }, + "id_perms": { + "enable": true, + "uuid": { + "uuid_mslong": 18421766598823395000, + "uuid_lslong": 10990602380223780000 + }, + "creator": null, + "created": "2016-03-29T11:32:42.645987", + "user_visible": true, + "last_modified": "2016-03-29T11:36:28.976707", + "permissions": { + "owner": "cloud-admin", + "owner_access": 7, + "other_access": 7, + "group": "cloud-admin-group", + "group_access": 7 + }, + "description": null + }, + "display_name": "s2", + "uuid": "ffa7431e-7206-40ce-9886-76a254cd19ae" + } + }, + { + "virtual-DNS": { + "fq_name": [ + "default-domain", + "s3" + ], + "name": "s3", + "parent_uuid": "5ffc415b-fa86-4c9d-85d0-792e57b4064a", + "parent_href": "http://10.204.216.40:9100/domain/5ffc415b-fa86-4c9d-85d0-792e57b4064a", "parent_type": "domain", "perms2": { - "owner": "e9a7b1af07c147889169045c5f2caafb", + "owner": null, "owner_access": 7, "global_access": 0, "share": [] }, - "virtual_DNS_records": [ - { - "to": [ - "default-domain", - "s1", - "9104933f-c179-44c7-8656-3d0529adb45f" - ], - "href": "http://10.204.216.40:9100/virtual-DNS-record/9104933f-c179-44c7-8656-3d0529adb45f", - "uuid": "9104933f-c179-44c7-8656-3d0529adb45f" - } - ], - "href": "http://10.204.216.40:9100/virtual-DNS/e59247c6-280f-47b7-a3f3-994f3108cf93", + "href": "http://10.204.216.40:9100/virtual-DNS/a951f7d2-63a2-46a0-88c4-157ba8588e3d", "virtual_DNS_data": { "floating_ip_record": "dashed-ip-tenant-name", - "domain_name": "s1.com", - "external_visible": true, + "domain_name": "s3.com", + "external_visible": false, "dynamic_records_from_client": true, - "reverse_resolution": true, + "reverse_resolution": false, "default_ttl_seconds": 86400, "record_order": "random" }, "id_perms": { "enable": true, "uuid": { - "uuid_mslong": 16542363297686440000, - "uuid_lslong": 11813954812927070000 + "uuid_mslong": 12200805348510157000, + "uuid_lslong": 9855025505443025000 }, - "created": "2015-11-24T08:45:13.176071", + "created": "2016-03-29T12:18:02.778271", "description": null, "creator": null, "user_visible": true, - "last_modified": "2015-11-24T08:45:13.176071", + "last_modified": "2016-03-29T12:18:02.778271", "permissions": { - "owner": "admin", + "owner": "cloud-admin", "owner_access": 7, "other_access": 7, - "group": "KeystoneServiceAdmin", + "group": "cloud-admin-group", "group_access": 7 } }, - "display_name": "s1", - "name": "s1" + "display_name": "s3", + "uuid": "a951f7d2-63a2-46a0-88c4-157ba8588e3d" } } ] - }, - "lastKey": null, - "more": false - }; + } + ]; return { dnsServerDomainsMockData : dnsServerDomainsMockData, dnsServersMockData :dnsServersMockData diff --git a/webroot/config/dns/servers/test/ui/views/dnsServersGridView.test.js b/webroot/config/dns/servers/test/ui/views/dnsServersGridView.test.js index ec8b1e3dc..20f83c2ac 100644 --- a/webroot/config/dns/servers/test/ui/views/dnsServersGridView.test.js +++ b/webroot/config/dns/servers/test/ui/views/dnsServersGridView.test.js @@ -25,7 +25,8 @@ define([ body: JSON.stringify(TestMockdata.dnsServerDomainsMockData) })); responses.push(cotr.createFakeServerResponse({ - url : /\/api\/admin\/config\/get-data\?type=virtual-DNS&count=4&fqnUUID=07fbaa4b-c7b8-4f3d-996e-9d8b1830b288.*$/, + url : /\/api\/tenants\/config\/get-config-details.*$/, + method: "POST", body: JSON.stringify(TestMockdata.dnsServersMockData) })); @@ -44,7 +45,7 @@ define([ rootView: configDNSServerLoader.dnsServersView, tests: [ { - viewId: 'DnsServerGrid', + viewId: ctwc.DNS_SERVER_GRID_ID, suites: [ { class: GridViewTestSuite, diff --git a/webroot/config/dns/servers/ui/js/activeDns.main.js b/webroot/config/dns/servers/ui/js/activeDns.main.js index 8b426ff51..772e4af03 100644 --- a/webroot/config/dns/servers/ui/js/activeDns.main.js +++ b/webroot/config/dns/servers/ui/js/activeDns.main.js @@ -24,7 +24,8 @@ function ActiveDnsLoader() { } else { self.renderView(renderFn, hashParams); } - } + }; + this.renderView = function(renderFn, hashParams) { $(contentContainer).html(""); if (hashParams.view == "config_dns_activeDatabase") { diff --git a/webroot/config/dns/servers/ui/js/activeDNSFormatter.js b/webroot/config/dns/servers/ui/js/activeDnsFormatter.js similarity index 100% rename from webroot/config/dns/servers/ui/js/activeDNSFormatter.js rename to webroot/config/dns/servers/ui/js/activeDnsFormatter.js diff --git a/webroot/config/dns/servers/ui/js/dnsServer.main.js b/webroot/config/dns/servers/ui/js/dnsServers.main.js similarity index 97% rename from webroot/config/dns/servers/ui/js/dnsServer.main.js rename to webroot/config/dns/servers/ui/js/dnsServers.main.js index f58fbc59b..e3a928a46 100644 --- a/webroot/config/dns/servers/ui/js/dnsServer.main.js +++ b/webroot/config/dns/servers/ui/js/dnsServers.main.js @@ -9,7 +9,7 @@ function ConfigDNSServerLoader() { currMenuObj = globalObj.currMenuObj, hashParams = paramObject['hashParams'], rootDir = currMenuObj['resources']['resource'][1]['rootDir'], - pathDNSServersView = ctBaseDir + '/config/dns/servers/ui/js/views/dnsServerView.js', + pathDNSServersView = ctBaseDir + '/config/dns/servers/ui/js/views/dnsServersView.js', renderFn = paramObject['function'], loadingStartedDefObj = paramObject['loadingStartedDefObj']; @@ -24,7 +24,8 @@ function ConfigDNSServerLoader() { } else { self.renderView(renderFn, hashParams); } - } + }; + this.renderView = function(renderFn, hashParams) { $(contentContainer).html(""); if (hashParams.view == "config_dns_activeDatabase") { diff --git a/webroot/config/dns/servers/ui/js/dnsServersFormatter.js b/webroot/config/dns/servers/ui/js/dnsServersFormatter.js new file mode 100644 index 000000000..19cd5b462 --- /dev/null +++ b/webroot/config/dns/servers/ui/js/dnsServersFormatter.js @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved + */ + + define(['underscore'], function(_){ + var dnsServersFormatter = function() { + + /* + * @domainNameFormatter + */ + this.domainNameFormatter = function(r, c, v, cd, dc) { + var domain = getValueByJsonPath(dc, + 'virtual_DNS_data;domain_name', "-"); + return domain; + }; + + /* + * @forwardersFormatter + */ + this.forwardersFormatter = function(r, c, v, cd, dc) { + var forwarders = getValueByJsonPath(dc, + 'virtual_DNS_data;next_virtual_DNS', + "-"); + return forwarders; + }; + + /* + * @dnsDomainIpamsFormatter + */ + this.dnsDomainIpamsFormatter = function(r, c, v, cd, dc) { + var nwIpams = getValueByJsonPath(dc, + 'network_ipam_back_refs', null); + if (null == nwIpams) { + return "-"; + } + var dispStr = ""; + var cnt = nwIpams.length; + var domain = getCookie('domain'); + for (var i = 0; i < cnt; i++) { + if (domain == nwIpams[i]['to'][0]) { + dispStr += nwIpams[i]['to'][1] + ":" + nwIpams[i][ + 'to' + ][2]; + if (i < cnt - 1) { + dispStr += ", "; + } + } + } + return dispStr; + }; + + /* + * @ttlFormatter + */ + this.ttlFormatter = function(r, c, v, cd, dc) { + var ttlSeconds = getValueByJsonPath(dc, + 'virtual_DNS_data;default_ttl_seconds', '-'); + if(ttlSeconds !== '-') { + ttlSeconds = ttlSeconds + ' (seconds)'; + } + return ttlSeconds; + }; + + /* + * @recordResolutionFormatter + */ + this.recordResolutionFormatter = function(r, c, v, cd, dc) { + var retValue = '-'; + switch(v) { + case 'random' : + retValue = 'Random'; + break; + case 'fixed' : + retValue = 'Fixed'; + break; + case 'round-robin' : + retValue = 'Round-Robin'; + break; + } + return retValue; + }; + + /* + * @externalVisibleFormatter + */ + this.externalVisibleFormatter = function(r, c, v, cd, dc) { + + return v != null ?(v.toString().toLowerCase() === 'true' + ? 'Enabled' : 'Disabled') : "-"; + }; + + /* + * @reverseResolutionFormatter + */ + this.reverseResolutionFormatter = function(r, c, v, cd, dc) { + + return v != null ?(v.toString().toLowerCase() === 'true' + ? 'Enabled' : 'Disabled') : "-"; + }; + }; + return dnsServersFormatter; + }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/models/dnsServerModel.js b/webroot/config/dns/servers/ui/js/models/dnsServersModel.js similarity index 87% rename from webroot/config/dns/servers/ui/js/models/dnsServerModel.js rename to webroot/config/dns/servers/ui/js/models/dnsServersModel.js index 5dc541af8..9db1db7ff 100644 --- a/webroot/config/dns/servers/ui/js/models/dnsServerModel.js +++ b/webroot/config/dns/servers/ui/js/models/dnsServersModel.js @@ -5,7 +5,7 @@ define([ 'underscore', 'contrail-model' ], function(_, ContrailModel) { - var DnsServerModel = ContrailModel.extend({ + var dnsServersModel = ContrailModel.extend({ defaultConfig: { "name": null, "display_name": null, @@ -24,6 +24,9 @@ define([ "user_created_network_ipams" : null }, formatModelConfig: function(modelConfig) { + modelConfig['display_name'] = + ctwu.getDisplayNameOrName(modelConfig); + //populate user_created_network_ipams for edit case var ipamBackRefs = modelConfig['network_ipam_back_refs']; if(ipamBackRefs instanceof Array) { @@ -58,13 +61,9 @@ define([ var domain = contrail.getCookie(cowc.COOKIE_DOMAIN); var project = contrail.getCookie(cowc.COOKIE_PROJECT); - delete newdnsServerData['errors']; - delete newdnsServerData['locks']; - if (newdnsServerData['name'] == '') { - newdnsServerData['display_name'] = - newdnsServerData['name']; - } + ctwu.setNameFromDisplayName(newdnsServerData); + if (newdnsServerData['fq_name'] == null || newdnsServerData['fq_name'].length == 0 ) { @@ -73,9 +72,8 @@ define([ newdnsServerData['fq_name'][1] = newdnsServerData['name']; } - if (newdnsServerData['virtual_DNS_data'][ - 'default_ttl_seconds' - ] == null) { + if (!newdnsServerData['virtual_DNS_data'] + ['default_ttl_seconds']) { newdnsServerData['virtual_DNS_data'][ 'default_ttl_seconds' ] = 86400; @@ -107,13 +105,14 @@ define([ var nwIpamBackRefsCnt = nwIpams.length; for (var i = 0; i < nwIpamBackRefsCnt; i++) { var nwIpam = nwIpams[i]; - var parts = nwIpam.split('**'); - var nwIpamBackRef = {}; - var fqn = parts[0].split(':'); - nwIpamBackRef['to'] = fqn; - nwIpamBackRef['uuid'] = window.ipams[ - fqn.join(':')]; - nwIpamBackRefs.push(nwIpamBackRef); + var parts = nwIpam ? nwIpam.split('**') : []; + if(parts.length === 2) { + var nwIpamBackRef = {}; + var fqn = parts[0].split(':'); + nwIpamBackRef['to'] = fqn; + nwIpamBackRef['uuid'] = parts[1]; + nwIpamBackRefs.push(nwIpamBackRef); + } } newdnsServerData[ @@ -122,18 +121,16 @@ define([ } else { delete newdnsServerData['network_ipam_back_refs']; } - delete newdnsServerData['elementConfigMap']; var dnsMethod = getValueByJsonPath( newdnsServerData, 'user_created_dns_method', 'default'); + ctwu.deleteCGridData(newdnsServerData); + delete newdnsServerData[ 'user_created_dns_method']; - delete newdnsServerData.errors; - delete newdnsServerData.locks; - delete newdnsServerData.cgrid; delete newdnsServerData.id_perms; delete newdnsServerData.user_created; delete newdnsServerData.tenant_dns_server; @@ -141,25 +138,24 @@ define([ delete newdnsServerData.href; delete newdnsServerData.parent_href; delete newdnsServerData.parent_uuid; + delete newdnsServerData.user_created_network_ipams; var url, type; - if (mode === "create") { + if (mode === ctwl.CREATE_ACTION) { postData['virtual-DNS'] = newdnsServerData; var ajaxType = contrail.checkIfExist( ajaxMethod) ? ajaxMethod : "POST"; - ajaxConfig.async = false; ajaxConfig.type = ajaxType; ajaxConfig.data = JSON.stringify( postData); ajaxConfig.url = '/api/tenants/config/virtual-DNSs'; - } else if (mode === "edit") { + } else if (mode === ctwl.EDIT_ACTION) { postData['virtual-DNS'] = newdnsServerData; - ajaxConfig.async = false; ajaxConfig.type = 'PUT'; ajaxConfig.data = JSON.stringify( postData); @@ -189,7 +185,7 @@ define([ } else { if (contrail.checkIfFunction(callbackObj.error)) { callbackObj.error(this.getFormErrorText( - 'DNS_Server')); + ctwc.DNS_SERVER_PREFIX_ID)); } } @@ -235,7 +231,7 @@ define([ }, validations: { dnsConfigValidations: { - 'name': { + 'display_name': { required: true, msg: 'DNS Server Name is required' }, @@ -254,7 +250,7 @@ define([ }, 'virtual_DNS_data.next_virtual_DNS' : function(value, attr, finalObj){ if(value != null && value != '') { - var virtualDNSs = $('#DnsServerGrid'). + var virtualDNSs = $('#' + ctwc.DNS_SERVER_GRID_ID). data('contrailGrid')._dataView.getItems(); var isSel_fwd = false; for(var i = 0;i < virtualDNSs.length;i++){ @@ -274,5 +270,5 @@ define([ } } }); - return DnsServerModel; + return dnsServersModel; }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/views/activeDnsGridView.js b/webroot/config/dns/servers/ui/js/views/activeDnsGridView.js index d559293f8..b2565833f 100644 --- a/webroot/config/dns/servers/ui/js/views/activeDnsGridView.js +++ b/webroot/config/dns/servers/ui/js/views/activeDnsGridView.js @@ -4,7 +4,7 @@ define([ 'underscore', 'contrail-view', - 'config/dns/servers/ui/js/activeDNSFormatter'],function(_, ContrailView, activeDNSFormatter) { + 'config/dns/servers/ui/js/activeDnsFormatter'],function(_, ContrailView, activeDNSFormatter) { var gridElId = "#ActiveDnsGrid"; var ActiveDnsGridView = ContrailView.extend({ el: $(contentContainer), @@ -110,7 +110,20 @@ define([ }, checkboxSelectable: false, }, - dataSource: {} + dataSource: {}, + statusMessages: { + loading: { + text: 'Loading Active DNS Records..' + }, + empty: { + text: 'No Active DNS Records Found.' + }, + errorGettingData: { + type: 'error', + iconClasses: 'icon-warning', + text: 'Error in getting Active DNS Records.' + } + } }, columnHeader: { columns: ActiveDnsColumns diff --git a/webroot/config/dns/servers/ui/js/views/dnsServerListView.js b/webroot/config/dns/servers/ui/js/views/dnsServerListView.js deleted file mode 100644 index bfb735cff..000000000 --- a/webroot/config/dns/servers/ui/js/views/dnsServerListView.js +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved. - */ -define( - ['underscore', 'contrail-view', 'contrail-list-model'], - function(_, ContrailView, ContrailListModel) { - var DnsServerListView = ContrailView - .extend({ - el: $(contentContainer), - render: function() { - var self = this, - viewConfig = this.attributes.viewConfig; - var domainUUID = viewConfig.domainSelectedValueData - .value; - var listModelConfig = { - remote: { - ajaxConfig: { - - url: '/api/admin/config/get-data?type=virtual-DNS&count=4&fqnUUID=' + - domainUUID, - type: "GET" - }, - dataParser: function(response) { - - - return dnsServerDataParser( - response) - } - - } - }; - - var contrailListModel = new ContrailListModel( - listModelConfig); - this.renderView4Config(this.$el, - contrailListModel, - getDnsServerViewConfig()); - } - }); - - var dnsServerDataParser = function(result) { - - var DNSServerData = []; - var idCount = 0; - - var vdnsData = getValueByJsonPath(result, - "data;virtual_DNSs", []); - var vdnsCnt = vdnsData.length; - for (var i = 0; i < vdnsCnt; i++) { - if ((null == vdnsData[i]) || (null == vdnsData[i][ - 'virtual-DNS' - ])) { - continue; - } - DNSServerData.push(vdnsData[i]['virtual-DNS']); - } - return DNSServerData; - } - - var getDnsServerViewConfig = function() { - return { - elementId: 'DnsServerPageListSection', - view: "SectionView", - viewConfig: { - rows: [{ - columns: [{ - elementId: 'DnsServerPageList', - title: 'DnsServerPageList', - view: "dnsServerGridView", - viewPathPrefix: "config/dns/servers/ui/js/views/", - app: cowc.APP_CONTRAIL_CONTROLLER, - viewConfig: {} - }] - }] - } - } - }; - - return DnsServerListView; - }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/views/dnsServerEditView.js b/webroot/config/dns/servers/ui/js/views/dnsServersEditView.js similarity index 70% rename from webroot/config/dns/servers/ui/js/views/dnsServerEditView.js rename to webroot/config/dns/servers/ui/js/views/dnsServersEditView.js index 9f1995c01..0566fbf0a 100644 --- a/webroot/config/dns/servers/ui/js/views/dnsServerEditView.js +++ b/webroot/config/dns/servers/ui/js/views/dnsServersEditView.js @@ -6,23 +6,22 @@ define([ 'contrail-view', 'knockback' ], function(_, ContrailView, Knockback) { - var gridElId = "#DnsServerGrid"; - var prefixId = "DnsServerPrefix"; + var gridElId = "#" + ctwc.DNS_SERVER_GRID_ID; + var prefixId = ctwc.DNS_SERVER_PREFIX_ID; var modalId = 'configure-' + prefixId; var formId = '#' + modalId + '-form'; var self; - var DnsServerEditView = ContrailView.extend({ - renderAddDnsServer: function(options) { + var dnsServersEditView = ContrailView.extend({ + renderAddEditDNSServer: function(options) { var editTemplate = - contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_EDIT); - var editLayout = editTemplate({ - prefixId: prefixId, - modalId: modalId - }); + contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_EDIT), + editLayout = editTemplate({ + prefixId: prefixId, + modalId: modalId + }), + disableInput; self = this; self.mode = options.mode; - var gridData = options['gridData']; - var configData = options['configData']; cowu.createModal({ 'modalId': modalId, 'className': 'modal-680', @@ -30,36 +29,26 @@ define([ 'body': editLayout, 'onSave': function() { self.model.addEditDnsServer( - 'create', { + self.mode, { init: function() { cowu.enableModalLoading( modalId ); }, success: function() { - options - [ - 'callback' - ](); - $("#" + - modalId - ).modal( - 'hide' - ); + options['callback'](); + $("#" + modalId).modal('hide'); }, error: function( error) { cowu.disableModalLoading( modalId, function() { - self - .model + self.model .showErrorAttr( prefixId + - cowc - .FORM_SUFFIX_ID, - error - .responseText + cowc.FORM_SUFFIX_ID, + error.responseText ); } ); @@ -75,9 +64,14 @@ define([ 'hide'); } }); + if(self.mode === ctwl.CREATE_ACTION) { + disableInput = false; + } else { + disableInput = true; + } self.renderView4Config($("#" + modalId).find( formId), this.model, - getAddDnsServerViewConfig(false), + getAddDnsServerViewConfig(disableInput), "dnsConfigValidations", null, null, function() { self.model.showErrorAttr(prefixId + @@ -88,93 +82,14 @@ define([ kbValidation.bind(self); }); }, - renderEditDnsServer: function(options) { - var editTemplate = - contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_EDIT); - var editLayout = editTemplate({ - prefixId: prefixId, - modalId: modalId - }); - self = this; - self.mode = options.mode; - cowu.createModal({ - 'modalId': modalId, - 'className': 'modal-680', - 'title': options['title'], - 'body': editLayout, - 'onSave': function() { - self.model.addEditDnsServer( - 'edit', { - init: function() { - cowu.enableModalLoading( - modalId - ); - }, - success: function() { - options - [ - 'callback' - ](); - $("#" + - modalId - ).modal( - 'hide' - ); - }, - error: function( - error) { - cowu.disableModalLoading( - modalId, - function() { - self - .model - .showErrorAttr( - prefixId + - cowc - .FORM_SUFFIX_ID, - error - .responseText - ); - } - ); - } - }); - // TODO: Release binding on successful configure - }, - 'onCancel': function() { - Knockback.release(self.model, - document.getElementById( - modalId)); - kbValidation.unbind(self); - $("#" + modalId).modal( - 'hide'); - } - }); - self.renderView4Config($("#" + modalId).find( - formId), this.model, - getAddDnsServerViewConfig(true), - "dnsConfigValidations", null, null, - function() { - self.model.showErrorAttr(prefixId + - cowc.FORM_SUFFIX_ID, false); - Knockback.applyBindings(self.model, - document.getElementById( - modalId)); - kbValidation.bind(self); - }); - }, renderDeleteDnsServer: function(options) { var delTemplate = - contrail.getTemplate4Id(ctwl.TMPL_CORE_GENERIC_DEL); + contrail.getTemplate4Id("core-generic-delete-form-template"); self = this; var items = ""; - var delLayout = delTemplate({ - prefixId: prefixId, - item: ctwl.TITLE_DNS_SERVER, - itemId: items - }); + var delLayout = delTemplate({prefixId: prefixId}); cowu.createModal({ 'modalId': modalId, 'className': 'modal-680', @@ -231,11 +146,11 @@ define([ } }); - this.model.showErrorAttr(prefixId + cowc.FORM_SUFFIX_ID, + self.model.showErrorAttr(prefixId + cowc.FORM_SUFFIX_ID, false); - Knockback.applyBindings(this.model, document.getElementById( + Knockback.applyBindings(self.model, document.getElementById( modalId)); - kbValidation.bind(this); + kbValidation.bind(self); } }); @@ -246,23 +161,18 @@ define([ } var vdnsList = response['virtual_DNSs']; var vdnsCnt = vdnsList.length; - window.ipams = {}; for (var i = 0; i < vdnsCnt; i++) { var fqn = getValueByJsonPath(vdnsList[i], 'virtual-DNS;fq_name', []); if (fqn.length > 0) { - if (self.mode == 'Create') { - dnss.push({ - 'id': fqn.join(':'), - 'text': fqn.join(':') - }); - } else if (self.mode == 'Edit' && self.model.name() != + if(self.mode == ctwl.EDIT_ACTION && self.model.name() === fqn[1]) { - dnss.push({ - 'id': fqn.join(':'), - 'text': fqn.join(':') - }); + continue; } + dnss.push({ + 'id': fqn.join(':'), + 'text': fqn.join(':') + }); } } return dnss; @@ -278,14 +188,10 @@ define([ for (var i = 0; i < ipamsCnt; i++) { var fqn = ipamsList[i].fq_name; var fqnString = fqn[0] + ':' + fqn[1] + ':' + fqn[2]; - // ipams.push({'id':ipamsList[i].uuid,'data': JSON.stringify(ipamsList[i]), 'text': fqn.join(':')}); ipams.push({ id: getIpamId(fqnString, ipamsList[i].uuid), text: fqn[1] + ':' + fqn[2] }); - - - window.ipams[fqn.join(':')] = ipamsList[i]['uuid']; } return ipams; @@ -296,7 +202,6 @@ define([ } function getAddDnsServerViewConfig(isDisable) { - var prefixId = ctwl.TEST_DNS_SERVER_PREFIX_ID; var dnsViewConfig = { elementId: cowu.formatElementId([prefixId, ctwl.TITLE_CREATE_DNS_SERVER]), title: ctwl.TITLE_CREATE_DNS_SERVER, @@ -304,14 +209,14 @@ define([ viewConfig: { rows: [{ columns: [{ - elementId: 'name', + elementId: 'display_name', view: 'FormInputView', viewConfig: { label: 'Name', disabled: isDisable, - path: 'name', + path: 'display_name', class: 'span6', - dataBindValue: 'name' + dataBindValue: 'display_name' } },{ elementId: 'domain_name', @@ -452,5 +357,5 @@ define([ return dnsViewConfig; } - return DnsServerEditView; + return dnsServersEditView; }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/views/dnsServerGridView.js b/webroot/config/dns/servers/ui/js/views/dnsServersGridView.js similarity index 79% rename from webroot/config/dns/servers/ui/js/views/dnsServerGridView.js rename to webroot/config/dns/servers/ui/js/views/dnsServersGridView.js index c8fb551ce..c2bfe4347 100644 --- a/webroot/config/dns/servers/ui/js/views/dnsServerGridView.js +++ b/webroot/config/dns/servers/ui/js/views/dnsServersGridView.js @@ -4,13 +4,15 @@ define([ 'underscore', 'contrail-view', - 'config/dns/servers/ui/js/models/dnsServerModel', - 'config/dns/servers/ui/js/views/dnsServerEditView' -], function(_, ContrailView, DnsServerModel, DnsServerEditView) { - var DnsServerEditView = new DnsServerEditView(), - gridElId = "#DnsServerGrid"; + 'config/dns/servers/ui/js/models/dnsServersModel', + 'config/dns/servers/ui/js/views/dnsServersEditView', + 'config/dns/servers/ui/js/dnsServersFormatter' +], function(_, ContrailView, DnsServersModel, DnsServersEditView, DnsServersFormatter) { + var dnsServersEditView = new DnsServersEditView(), + dnsServersFormatters = new DnsServersFormatter(), + gridElId = '#' + ctwc.DNS_SERVER_GRID_ID; - var DnsServerGridView = ContrailView.extend({ + var dnsServersGridView = ContrailView.extend({ el: $(contentContainer), render: function() { var self = this, @@ -24,13 +26,13 @@ define([ var getDnsServerGridViewConfig = function(pagerOptions) { return { - elementId: "DnsServerListView", + elementId: ctwc.CONFIG_DNS_SERVER_ID, view: "SectionView", viewConfig: { rows: [{ columns: [{ - elementId: 'DnsServerGrid', - title: 'DNS Servers', + elementId: ctwc.DNS_SERVER_GRID_ID, + title: ctwl.TITLE_DNS_SERVER, view: "GridView", viewConfig: { elementConfig: getConfiguration( @@ -41,14 +43,15 @@ define([ } } }; + var rowActionConfig = [ ctwgc.getEditConfig('Edit', function(rowIndex) { var dataItem = $(gridElId).data('contrailGrid')._dataView.getItem( rowIndex); - dnsServerModel = new DnsServerModel(dataItem); - DnsServerEditView.model = dnsServerModel; - DnsServerEditView.renderEditDnsServer({ + dnsServersModel = new DnsServersModel(dataItem); + dnsServersEditView.model = dnsServersModel; + dnsServersEditView.renderAddEditDNSServer({ "title": ctwl.TITLE_EDIT_DNS_SERVER + ' (' + dataItem['display_name'] + ')', @@ -58,17 +61,17 @@ define([ "contrailGrid")._dataView; dataView.refreshData(); }, - 'mode': 'Edit' + 'mode': ctwl.EDIT_ACTION }); }), ctwgc.getDeleteConfig('Delete', function(rowIndex) { - var dnsServerModel = new DnsServerModel(); + var dnsServersModel = new DnsServersModel(); var dataItem = $(gridElId).data('contrailGrid')._dataView.getItem( rowIndex); var checkedRows = [dataItem]; - DnsServerEditView.model = dnsServerModel; - DnsServerEditView.renderDeleteDnsServer({ + dnsServersEditView.model = dnsServersModel; + dnsServersEditView.renderDeleteDnsServer({ "title": ctwl.TITLE_DEL_DNS_SERVER + '(' + dataItem['display_name'] + ')', @@ -143,7 +146,20 @@ define([ } }, }, - dataSource: {} + dataSource: {}, + statusMessages: { + loading: { + text: 'Loading DNS Servers..' + }, + empty: { + text: 'No DNS Servers Found.' + }, + errorGettingData: { + type: 'error', + iconClasses: 'icon-warning', + text: 'Error in getting DNS Servers.' + } + } }, columnHeader: { columns: DnsServerColumns @@ -152,7 +168,7 @@ define([ return gridElementConfig; }; - DnsServerColumns = [{ + var DnsServerColumns = [{ id: 'display_name', field: 'display_name', name: 'DNS Server', @@ -173,21 +189,11 @@ define([ }, { name: 'Domain Name', - formatter: function(row, col, val, d, rowData) { - var domain = getValueByJsonPath(rowData, - 'virtual_DNS_data;domain_name', "-"); - return domain; - } + formatter: dnsServersFormatters.domainNameFormatter }, { name: 'Forwarders', - formatter: function(row, col, val, d, rowData) { - var fwer = getValueByJsonPath(rowData, - 'virtual_DNS_data;next_virtual_DNS', - "-"); - return fwer; - } + formatter: dnsServersFormatters.forwardersFormatter } - ]; function getNetworkIpamStrings(nwIpamBackRefs) { @@ -200,7 +206,7 @@ define([ } } return ipams; - } + }; function getDNSDetailsTemplateConfig() { return { @@ -212,7 +218,7 @@ define([ columns: [{ class: 'span6', rows: [{ - title: "DNS Servers", + title: ctwl.TITLE_DNS_SERVER, templateGenerator: 'BlockListTemplateGenerator', templateGeneratorConfig: [{ key: 'fq_name[1]', @@ -292,54 +298,29 @@ define([ }; this.DnsDomIpamsFormatter = function(val, obj) { - var nwIpams = getValueByJsonPath(obj, - 'network_ipam_back_refs', null); - if (null == nwIpams) { - return "-"; - } - var dispStr = ""; - var cnt = nwIpams.length; - var domain = getCookie('domain'); - for (var i = 0; i < cnt; i++) { - if (domain == nwIpams[i]['to'][0]) { - dispStr += nwIpams[i]['to'][1] + ":" + nwIpams[i][ - 'to' - ][2]; - if (i < cnt - 1) { - dispStr += ", "; - } - } - } - return dispStr; + return dnsServersFormatters.dnsDomainIpamsFormatter("", "", val, "", obj); }; + this.DnsTtlFormatter = function(val, obj) { - return val + " (seconds)"; + return dnsServersFormatters.ttlFormatter("", "", val, "", obj); }; + this.RecordResolutionFormatter = function(val, obj) { - var retValue = '-'; - switch(val) { - case 'random' : - retValue = 'Random'; - break; - case 'fixed' : - retValue = 'Fixed'; - break; - case 'round-robin' : - retValue = 'Round-Robin'; - break; - } - return retValue; + return dnsServersFormatters.recordResolutionFormatter("", "", val, "", obj); }; + this.ExternalVisibleFormatter = function(val, obj) { - return val === 'true' ? 'Enabled' : 'Disabled'; + return dnsServersFormatters.externalVisibleFormatter("", "", val, "", obj); }; + this.ReverseResolutionFormatter = function(val, obj) { - return val === 'true' ? 'Enabled' : 'Disabled'; + return dnsServersFormatters.reverseResolutionFormatter("", "", val, "", obj); }; + function getHeaderActionConfig(gridElId) { var headerActionConfig = [{ "type": "link", - "title": ctwl.TITLE_DEL_DNS_SERVER, + "title": ctwl.TITLE_DNS_SERVER_MULTI_DELETE, "iconClass": 'icon-trash', "linkElementId": 'btnActionDelDNS', "onClick": function() { @@ -347,10 +328,10 @@ define([ var checkedRows = $(gridElId).data( 'contrailGrid').getCheckedRows(); if(checkedRows && checkedRows.length > 0) { - dnsServerModel = new DnsServerModel(); - DnsServerEditView.model = dnsServerModel; - DnsServerEditView.renderDeleteDnsServer({ - "title": ctwl.TITLE_DEL_DNS_SERVER, + dnsServersModel = new DnsServersModel(); + dnsServersEditView.model = dnsServersModel; + dnsServersEditView.renderDeleteDnsServer({ + "title": ctwl.TITLE_DNS_SERVER_MULTI_DELETE, checkedRows: checkedRows, callback: function() { var dataView = @@ -373,25 +354,22 @@ define([ var configData = $(gridElId).data( 'configObj'); - var dnsServerModel = new DnsServerModel(); - DnsServerEditView.model = dnsServerModel; - DnsServerEditView.renderAddDnsServer({ + var dnsServersModel = new DnsServersModel(); + dnsServersEditView.model = dnsServersModel; + dnsServersEditView.renderAddEditDNSServer({ "title": ctwl.TITLE_CREATE_DNS_SERVER, gridData: gridData, configData: configData, callback: function() { - var dataView = $( - gridElId).data( - "contrailGrid") + var dataView = $(gridElId).data("contrailGrid") ._dataView; dataView.refreshData(); }, - 'mode': 'Create' + 'mode': ctwl.CREATE_ACTION }); } - }, ]; + }]; return headerActionConfig; } - - return DnsServerGridView; + return dnsServersGridView; }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/views/dnsServersListView.js b/webroot/config/dns/servers/ui/js/views/dnsServersListView.js new file mode 100644 index 000000000..90840f50f --- /dev/null +++ b/webroot/config/dns/servers/ui/js/views/dnsServersListView.js @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved. + */ +define( + ['underscore', 'contrail-view', 'contrail-list-model'], + function(_, ContrailView, ContrailListModel) { + var dnsServersListView = ContrailView.extend({ + el: $(contentContainer), + + render: function() { + var self = this, + viewConfig = this.attributes.viewConfig; + var domainUUID = viewConfig.domainSelectedValueData.value; + var listModelConfig = { + remote: { + ajaxConfig: { + url: ctwc.URL_GET_CONFIG_DETAILS, + type: "POST", + data: JSON.stringify({data: [{type: "virtual-DNSs", + parent_id: domainUUID, fields: ["network_ipam_back_refs"]}]}) + }, + dataParser: self.dnsServerDataParser + } + }; + + var contrailListModel = new ContrailListModel( + listModelConfig); + self.renderView4Config(self.$el, + contrailListModel, + self.getDnsServerViewConfig()); + }, + + dnsServerDataParser: function(result) { + var dnsServerData = [], + vdnsData = getValueByJsonPath(result, + "0;virtual-DNSs", []); + _.each(vdnsData, function(vdns){ + dnsServerData.push(getValueByJsonPath(vdns, + "virtual-DNS", {})); + }); + return dnsServerData; + }, + + getDnsServerViewConfig: function() { + return { + elementId: ctwc.CONFIG_DNS_SERVER_SECTION_ID, + view: "SectionView", + viewConfig: { + rows: [{ + columns: [{ + elementId: ctwc.CONFIG_DNS_SERVER_LIST_VIEW_ID, + view: "dnsServersGridView", + viewPathPrefix: "config/dns/servers/ui/js/views/", + app: cowc.APP_CONTRAIL_CONTROLLER, + viewConfig: {} + }] + }] + } + }; + } + }); + return dnsServersListView; + }); \ No newline at end of file diff --git a/webroot/config/dns/servers/ui/js/views/dnsServerView.js b/webroot/config/dns/servers/ui/js/views/dnsServersView.js similarity index 92% rename from webroot/config/dns/servers/ui/js/views/dnsServerView.js rename to webroot/config/dns/servers/ui/js/views/dnsServersView.js index a539f5f1b..5e8e9f3bb 100644 --- a/webroot/config/dns/servers/ui/js/views/dnsServerView.js +++ b/webroot/config/dns/servers/ui/js/views/dnsServersView.js @@ -5,7 +5,7 @@ define([ 'underscore', 'contrail-view' ], function(_, ContrailView) { - var DnsServerView = ContrailView.extend({ + var dnsServersView = ContrailView.extend({ el: $(contentContainer), renderDnsServer: function(viewConfig) { this.renderView4Config(this.$el, null, @@ -30,12 +30,11 @@ define([ customDomainDropdownOptions) }; - function getDnsServer(viewConfig) { return function(domainSelectedValueData) { return { - elementId: 'DnsServerPageId', - view: "dnsServerListView", + elementId: ctwc.CONFIG_DNS_SERVER_PAGE_ID, + view: "dnsServersListView", viewPathPrefix: "config/dns/servers/ui/js/views/", app: cowc.APP_CONTRAIL_CONTROLLER, viewConfig: $.extend(true, {}, viewConfig, { @@ -76,8 +75,6 @@ define([ dropdownOptions: dropdownOptions } } - } - - - return DnsServerView; + }; + return dnsServersView; }); \ No newline at end of file diff --git a/webroot/menu.xml b/webroot/menu.xml index 0c862b039..f88dfd122 100644 --- a/webroot/menu.xml +++ b/webroot/menu.xml @@ -785,7 +785,7 @@ and need to add the iconClass tag wherever we need to show some icons /config/dns/servers/ui - dnsServer.main.js + dnsServers.main.js configDNSServerLoader renderDnsServer