From b7da219109840773ba66adfc8a02207dfe6c08b1 Mon Sep 17 00:00:00 2001 From: Siva Bavanasi Date: Tue, 29 Mar 2016 18:24:41 +0530 Subject: [PATCH] Changes to get landing page data using details instead of small chunks for DNS and also Addressed below issues 1)use generic api to get data for landing page 2)correct messages in delete popups 3)empty response and error not shown on popup while deleting dns server with associated ipam 4)use same method for both create and edit in editView 5)separate constants and labels and use them accordingly 6)Remove all window usages 7)Use Feature specific messages instead of generic for No data, error and loading for landing pages 8)Use separate file for Formatters instead of having the code in the same gridView file for DNS server 9)DNS Record creation fails, if we switch dns server from dropdown and try to create 10) Invalid value for TTL error in DNS while editing both Servers and Records 11)For Record type MX Landing page shows - in grid row and expansion details Change-Id: I07188e3c13e2b24015b39a8615647300b4561e2c Related-bug: #1562171 Related-bug: #1560252 Closes-bug: #1563675 Closes-bug: #1563676 (cherry picked from commit 8b69d35d4dfc105f06b19378ff0921f4614df2f7) --- webroot/common/ui/js/controller.constants.js | 17 +- webroot/common/ui/js/controller.labels.js | 21 +- .../ui/views/dnsRecordsGridView.mock.data.js | 225 ++++++++++++------ .../test/ui/views/dnsRecordsGridView.test.js | 5 +- .../dns/records/ui/js/dnsRecords.main.js | 3 +- .../dns/records/ui/js/dnsRecordsFormatter.js | 7 +- .../records/ui/js/models/dnsRecordsModel.js | 30 +-- .../records/ui/js/views/dnsRecordsEditView.js | 42 +--- .../records/ui/js/views/dnsRecordsGridView.js | 181 +++++++------- .../records/ui/js/views/dnsRecordsListView.js | 123 +++++----- .../dns/records/ui/js/views/dnsRecordsView.js | 6 +- .../api/virtualdnsserversconfig.api.js | 2 +- .../ui/views/dnsServersGridView.mock.data.js | 158 +++++++++--- .../test/ui/views/dnsServersGridView.test.js | 5 +- .../dns/servers/ui/js/activeDns.main.js | 3 +- ...eDNSFormatter.js => activeDnsFormatter.js} | 0 .../{dnsServer.main.js => dnsServers.main.js} | 5 +- .../dns/servers/ui/js/dnsServersFormatter.js | 102 ++++++++ .../{dnsServerModel.js => dnsServersModel.js} | 54 ++--- .../servers/ui/js/views/activeDnsGridView.js | 17 +- .../servers/ui/js/views/dnsServerListView.js | 80 ------- ...erverEditView.js => dnsServersEditView.js} | 169 +++---------- ...erverGridView.js => dnsServersGridView.js} | 142 +++++------ .../servers/ui/js/views/dnsServersListView.js | 63 +++++ .../{dnsServerView.js => dnsServersView.js} | 13 +- webroot/menu.xml | 2 +- 26 files changed, 787 insertions(+), 688 deletions(-) rename webroot/config/dns/servers/ui/js/{activeDNSFormatter.js => activeDnsFormatter.js} (100%) rename webroot/config/dns/servers/ui/js/{dnsServer.main.js => dnsServers.main.js} (97%) create mode 100644 webroot/config/dns/servers/ui/js/dnsServersFormatter.js rename webroot/config/dns/servers/ui/js/models/{dnsServerModel.js => dnsServersModel.js} (87%) delete mode 100644 webroot/config/dns/servers/ui/js/views/dnsServerListView.js rename webroot/config/dns/servers/ui/js/views/{dnsServerEditView.js => dnsServersEditView.js} (70%) rename webroot/config/dns/servers/ui/js/views/{dnsServerGridView.js => dnsServersGridView.js} (79%) create mode 100644 webroot/config/dns/servers/ui/js/views/dnsServersListView.js rename webroot/config/dns/servers/ui/js/views/{dnsServerView.js => dnsServersView.js} (92%) diff --git a/webroot/common/ui/js/controller.constants.js b/webroot/common/ui/js/controller.constants.js index 3919e5140..a2056a4f3 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 5988a502b..49b9cba92 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