Skip to content

Commit

Permalink
Closes-Bug: #1528514, #1534484, #1534494 Partial-Bug #1530242
Browse files Browse the repository at this point in the history
Add a new tab that list all interfaces on project's details page.

Fix loading of Config->Networking->Networks Page

Statistics graph does not show all the fields that the users has asked
1. Removed force fit from QE result grids
2. Fix missing columns to QE results grids

Fix Issues on Query & Network Monitoring Pages
1. Increase size of keyword input box on system logs page
2. Fix labels for CPU/Memory line-bar charts
3. Improve loading performance of instances and networks list grids

Change-Id: Ic16158658435bb8c2b19b25c173239a8d51778d7
  • Loading branch information
Abhishek committed Jan 15, 2016
1 parent 5c5590c commit 4be42cf
Show file tree
Hide file tree
Showing 19 changed files with 136 additions and 148 deletions.
10 changes: 6 additions & 4 deletions webroot/common/ui/js/controller.constants.js
Expand Up @@ -13,16 +13,16 @@ define([

this.URL_PROJECT_CONNECTED_GRAPH = '/api/tenant/monitoring/project-connected-graph?fqName={0}';
this.URL_PROJECT_CONFIG_GRAPH = '/api/tenant/monitoring/project-config-graph?fqName={0}';
this.URL_PROJECT_INSTANCES_IN_CHUNKS = '/api/tenant/networking/virtual-machines/details?fqnUUID={0}&count={1}&type={2}&startAt={3}';
this.URL_PROJECT_NETWORKS_IN_CHUNKS = '/api/tenant/networking/virtual-networks/details?count={0}&fqn={1}&startAt={2}';
this.URL_PROJECT_INSTANCES_IN_CHUNKS = '/api/tenant/networking/virtual-machines/details?fqnUUID={0}&count={1}&nextCount={2}&type={3}&startAt={4}';
this.URL_PROJECT_NETWORKS_IN_CHUNKS = '/api/tenant/networking/virtual-networks/details?count={0}&nextCount={1}&fqn={2}&startAt={3}';
this.URL_PROJECT_ALL_NETWORKS = '/api/tenants/networks/{0}';

this.URL_NETWORK_CONNECTED_GRAPH = '/api/tenant/monitoring/network-connected-graph?fqName={0}';
this.URL_NETWORK_CONFIG_GRAPH = '/api/tenant/monitoring/network-config-graph?fqName={0}';
this.URL_NETWORK_SUMMARY = 'api/tenant/networking/virtual-network/summary?fqNameRegExp={0}';
this.URL_ALL_NETWORKS_DETAILS = '/api/tenant/networking/virtual-networks/details';

this.URL_NETWORKS_DETAILS_IN_CHUNKS = '/api/tenant/networking/virtual-networks/details?count={0}&startAt={1}';
this.URL_NETWORKS_DETAILS_IN_CHUNKS = '/api/tenant/networking/virtual-networks/details?count={0}&nextCount={1}&startAt={2}';
this.URL_NETWORK_SUMMARY = '/api/tenant/networking/virtual-network/summary?fqNameRegExp={0}';

this.URL_NETWORK_TRAFFIC_STATS = '/api/tenant/networking/flow-series/vn?minsSince={0}&fqName={1}&sampleCnt={2}&useServerTime=true';
Expand All @@ -33,7 +33,7 @@ define([
this.URL_INSTANCE_CONFIG_GRAPH = '/api/tenant/monitoring/instance-config-graph?fqName={0}';
this.URL_INSTANCE_DETAIL = '/api/tenant/networking/virtual-machine?fqNameRegExp={0}?flat';
this.URL_INSTANCES_SUMMARY = '/api/tenant/networking/virtual-machines/summary';
this.URL_INSTANCE_DETAILS_IN_CHUNKS = '/api/tenant/networking/virtual-machines/details?count={0}&startAt={1}';
this.URL_INSTANCE_DETAILS_IN_CHUNKS = '/api/tenant/networking/virtual-machines/details?count={0}&nextCount={1}&startAt={2}';
this.URL_INSTANCE_TRAFFIC_STATS = '/api/tenant/networking/flow-series/vm?minsSince={0}&fqName={1}&sampleCnt={2}&ip={3}&vmName={4}&vmVnName={5}&useServerTime=true';
this.URL_INSTANCE_PORT_DISTRIBUTION = '/api/tenant/networking/network/stats/top?minsSince=10&fqName={0}&useServerTime=true&type=port&ip={1}';

Expand Down Expand Up @@ -157,6 +157,8 @@ define([
this.UCID_INSTANCE_TRAFFIC_STATS_LIST = this.UCID_PREFIX_MN_LISTS + "{0}:{1}:{2}:traffic-stats";
this.UCID_CONNECTED_NETWORK_TRAFFIC_STATS_LIST = this.UCID_PREFIX_MN_LISTS + "{0}:{1}:traffic-stats";
this.UCID_INSTANCE_INTERFACE_LIST = this.UCID_PREFIX_MN_LISTS + "{0}:{1}:interfaces";
this.UCID_PROJECT_INTERFACE_LIST = this.UCID_PREFIX_MN_LISTS + "{0}:interfaces";
this.UCID_ALL_INTERFACE_LIST = this.UCID_PREFIX_MN_LISTS + "all-interfaces";
this.UCID_INSTANCE_CPU_MEMORY_LIST = this.UCID_PREFIX_MN_LISTS + "{0}:{1}:cpu-memory";

this.UCID_NODE_CPU_MEMORY_LIST = 'node_details' + "{0}:cpu-memory";
Expand Down
12 changes: 5 additions & 7 deletions webroot/common/ui/js/controller.grid.config.js
Expand Up @@ -43,17 +43,16 @@ define([
if(!contrail.checkIfExist(dc['vmName'])) {
return '-';
} else if(!contrail.checkIfExist(dc['vnFQN']) || ctwu.isServiceVN(dc['vnFQN'])){
return '<div class="cell-no-link">' + cellTemplateLinks({cellText: 'vmName', tooltip: true, name: 'instance', rowData: dc}) + '</div>';
return cowf.formatElementName({name: 'instance', value: dc['vmName'], cssClass: 'cell-no-link'});
} else {
return cellTemplateLinks({cellText: 'vmName', tooltip: true, name: 'instance', rowData: dc});
return cowf.formatElementName({name: 'instance', value: dc['vmName'], cssClass: 'cell-hyperlink-blue'});
}
},
minWidth: 230,
searchable: true,
events: {
onClick: ctwu.onClickNetworkMonitorGrid
},
cssClass: 'cell-hyperlink-blue',
exportConfig: {
allow: true,
stdFormatter: false
Expand All @@ -77,13 +76,12 @@ define([
field: 'vRouter',
name: 'Virtual Router',
formatter: function (r, c, v, cd, dc) {
return cellTemplateLinks({cellText: 'vRouter', tooltip: true, name: 'vRouter', rowData: dc});
return cowf.formatElementName({name: 'vRouter', value: dc['vRouter'], cssClass: 'cell-hyperlink-blue'});
},
minWidth: 100,
events: {
onClick: ctwu.onClickNetworkMonitorGrid
},
cssClass: 'cell-hyperlink-blue',
exportConfig: {
allow: true,
stdFormatter: false
Expand Down Expand Up @@ -143,13 +141,13 @@ define([
{
field: 'ip',
name: 'IP Address',
minWidth: 150,
minWidth: 100,
searchable: true
},
{
field: 'vm_name',
name: 'Instance Name',
minWidth: 200,
minWidth: 250,
searchable: true
},
{
Expand Down
5 changes: 3 additions & 2 deletions webroot/common/ui/js/controller.labels.js
Expand Up @@ -197,8 +197,7 @@ define([

this.DOMAINS_BREADCRUMB_DROPDOWN = "domains-breadcrumb-dropdown";
this.SASET_BREADCRUMB_DROPDOWN = "service-appliance-set-breadcrumb-dropdown";
this.GLOBALSYS_BREADCRUMB_DROPDOWN =
"global-system-config-breadcrumb-dropdown";
this.GLOBALSYS_BREADCRUMB_DROPDOWN = "global-system-config-breadcrumb-dropdown";

this.PROJECTS_ID = "projects";
this.PROJECT_GRAPH_ID = "project-graph";
Expand All @@ -210,6 +209,8 @@ define([
this.PROJECT_NETWORKS_ID = "project-networks";
this.PROJECT_NETWORK_GRID_ID = "project-network-grid";
this.PROJECT_INSTANCES_ID = "project-instances";
this.PROJECT_INTERFACES_ID = "project-interfaces";
this.PROJECT_INTERFACE_GRID_ID = "project-interface-grid";
this.PROJECTS_SCATTER_CHART_ID = "projects-scatter-chart";
this.PROJECT_FLOW_GRID_ID = "project-flow-grid";
this.PROJECT_FILTER_PROTOCOL_MULTISELECT_ID = "project-filter-protocol-multiselect-id";
Expand Down
2 changes: 1 addition & 1 deletion webroot/common/ui/js/controller.parsers.js
Expand Up @@ -165,7 +165,7 @@ define([
values: [],
color: cowc.D3_COLOR_CATEGORY5[3]
};
var chartData = [axis2, axis1];
var chartData = [axis1, axis2];

for (var i = 0; i < responseArray.length; i++) {
var ts = Math.floor(responseArray[i]['T'] / 1000);
Expand Down
83 changes: 42 additions & 41 deletions webroot/common/ui/js/controller.utils.js
Expand Up @@ -531,49 +531,50 @@ define([
return element + " (" + parent.join(":") + ")";
}
}
}

};

this.onClickNetworkMonitorGrid = function (e, selRowDataItem) {
var name = $(e.target).attr('name'),
fqName, uuid, vmName;

if ($.inArray(name, ['project']) > -1) {
fqName = selRowDataItem['name'];
ctwu.setProjectURLHashParams(null, fqName, true)

} else if ($.inArray(name, ['network']) > -1) {
fqName = selRowDataItem['name'];
ctwu.setNetworkURLHashParams(null, fqName, true)

} else if ($.inArray(name, ['instance']) > -1) {
fqName = selRowDataItem['vnFQN'];
uuid = selRowDataItem['name'];
vmName = selRowDataItem['vmName'];
if(contrail.checkIfExist(fqName) && !ctwu.isServiceVN(fqName)) {
ctwu.setInstanceURLHashParams(null, fqName, uuid, vmName, true);
}
} else if ($.inArray(name, ['vRouter']) > -1) {
var urlObj = layoutHandler.getURLHashObj();
if(urlObj['p'] == 'mon_infra_vrouter' &&
urlObj['q']['view'] == 'details') {
$("#"+ctwl.VROUTER_DETAILS_TABS_ID).tabs({active:0});
} else {
var hashObj = {
type: 'vrouter',
view: 'details',
focusedElement: {
node: selRowDataItem['vRouter'],
tab: 'details'
}
};
layoutHandler.setURLHashParams(hashObj,
{
p: "mon_infra_vrouter",
merge: false,
triggerHashChange: true
}
);
if (!$(e.target).hasClass('cell-no-link')) {
var name = $(e.target).attr('name'),
fqName, uuid, vmName;

if ($.inArray(name, ['project']) > -1) {
fqName = selRowDataItem['name'];
ctwu.setProjectURLHashParams(null, fqName, true)

} else if ($.inArray(name, ['network']) > -1) {
fqName = selRowDataItem['name'];
ctwu.setNetworkURLHashParams(null, fqName, true)

} else if ($.inArray(name, ['instance']) > -1) {
fqName = selRowDataItem['vnFQN'];
uuid = selRowDataItem['name'];
vmName = selRowDataItem['vmName'];
if (contrail.checkIfExist(fqName) && !ctwu.isServiceVN(fqName)) {
ctwu.setInstanceURLHashParams(null, fqName, uuid, vmName, true);
}
} else if ($.inArray(name, ['vRouter']) > -1) {
var urlObj = layoutHandler.getURLHashObj();
if (urlObj['p'] == 'mon_infra_vrouter' &&
urlObj['q']['view'] == 'details') {
$("#" + ctwl.VROUTER_DETAILS_TABS_ID).tabs({active: 0});
} else {
var hashObj = {
type: 'vrouter',
view: 'details',
focusedElement: {
node: selRowDataItem['vRouter'],
tab: 'details'
}
};
layoutHandler.setURLHashParams(hashObj,
{
p: "mon_infra_vrouter",
merge: false,
triggerHashChange: true
}
);
}
}
}
};
Expand Down
3 changes: 2 additions & 1 deletion webroot/common/ui/js/controller.view.config.js
Expand Up @@ -94,7 +94,8 @@ define([
viewConfig: {
modelKey: ctwc.get(ctwc.UMID_INSTANCE_UVE, instanceUUID),
instanceUUID: instanceUUID,
networkFQN: networkFQN
networkFQN: networkFQN,
elementId: ctwl.INSTANCE_INTERFACE_GRID_ID
}
},
{
Expand Down
37 changes: 25 additions & 12 deletions webroot/monitor/networking/api/network.mon.api.js
Expand Up @@ -816,24 +816,37 @@ function getVirtualMachinesSummary(req, res, appData) {
function getVirtualInterfacesSummary(req, res, appData) {
var reqPostData = req.body,
kfilt = reqPostData['kfilt'], cfilt = reqPostData['cfilt'],
projectFQN = reqPostData['projectFQN'],
url = '/analytics/uves/virtual-machine-interface',
opServerPostData = {};

if (kfilt != null && kfilt != '') {
opServerPostData['kfilt'] = kfilt.split(",");
}
if (projectFQN != null && typeof projectFQN !== "undefined") {
url += "/" + projectFQN + ":*";

if (cfilt != null && cfilt != '') {
opServerPostData['cfilt'] = cfilt.split(",");
}
opServer.api.get(url, function (err, data) {
if (err || (null == data)) {
commonUtils.handleJSONResponse(err, res, null);
} else {
commonUtils.handleJSONResponse(null, res, data);
}
});
} else {
if (kfilt != null && kfilt != '') {
opServerPostData['kfilt'] = kfilt.split(",");
}

opServer.api.post(url, opServerPostData, function (err, data) {
if (err || (null == data)) {
commonUtils.handleJSONResponse(err, res, null);
} else {
commonUtils.handleJSONResponse(null, res, data);
if (cfilt != null && cfilt != '') {
opServerPostData['cfilt'] = cfilt.split(",");
}
});

opServer.api.post(url, opServerPostData, function (err, data) {
if (err || (null == data)) {
commonUtils.handleJSONResponse(err, res, null);
} else {
commonUtils.handleJSONResponse(null, res, data);
}
});
}
}

function isServiceVN(vnName) {
Expand Down
Expand Up @@ -89,7 +89,7 @@ define([

responses.push(cotr.createFakeServerResponse({
method:"POST",
url: cttu.getRegExForUrl('/api/tenant/networking/virtual-machines/details?fqnUUID=ad8a9efc-9b7e-4425-9735-03bda0d2726e&count=10&type=vn'),
url: cttu.getRegExForUrl('/api/tenant/networking/virtual-machines/details?fqnUUID=ad8a9efc-9b7e-4425-9735-03bda0d2726e&count=10&nextCount=100&type=vn'),
body: JSON.stringify(TestMockdata.virtualMachineDetailsByUUIDMockData)
}));

Expand Down
59 changes: 3 additions & 56 deletions webroot/monitor/networking/ui/js/nm.grid.config.js
Expand Up @@ -11,7 +11,7 @@ define([
field: 'name',
name: 'Network',
formatter: function (r, c, v, cd, dc) {
return cellTemplateLinks({cellText: 'name', name: 'network', rowData: dc});
return cowf.formatElementName({name: 'network', value: dc['name'], cssClass: 'cell-hyperlink-blue'});
},
events: {
onClick: ctwu.onClickNetworkMonitorGrid
Expand All @@ -21,7 +21,6 @@ define([
return d['name'];
},
searchable: true,
cssClass: 'cell-hyperlink-blue',
exportConfig: {
allow: true,
stdFormatter: false
Expand Down Expand Up @@ -55,70 +54,18 @@ define([
}
];

this.instanceInterfaceColumns = [
{
field: 'ip',
name: 'IP Address',
minWidth: 150,
searchable: true
},
{
field: 'vm_name',
name: 'Instance Name',
minWidth: 200,
searchable: true
},
{
field: 'floatingIP',
name: 'Floating IPs In/Out',
formatter: function (r, c, v, cd, dc) {
return cowf.formatValueArray4Grid(dc['floatingIP']);
},
minWidth: 200
},
{
field: '',
name: 'Traffic In/Out (Last 1 Hr)',
minWidth: 150,
formatter: function (r, c, v, cd, dc) {
return contrail.format("{0} / {1}", cowu.addUnits2Bytes(dc['inBytes60'], true), cowu.addUnits2Bytes(dc['outBytes60'], true));
}
},
{
field: '',
name: 'Throughput In/Out',
minWidth: 150,
formatter: function (r, c, v, cd, dc) {
return contrail.format("{0} / {1}", formatThroughput(dc['in_bw_usage'], true), formatThroughput(dc['out_bw_usage'], true));
}
},
{
name: 'Status',
minWidth: 100,
searchable: true,
formatter: function (r, c, v, cd, dc) {
if (dc.active) {
return ('<div class="status-badge-rounded status-active"></div>&nbsp;Active');
} else {
return ('<div class="status-badge-rounded status-inactive"></div>&nbsp;Inactive');
}
}
}
];

this.projectsColumns = [
{
field: 'name',
name: 'Project',
formatter: function (r, c, v, cd, dc) {
return cellTemplateLinks({cellText: 'name', tooltip: true, name: 'project', rowData: dc});
return cowf.formatElementName({name: 'project', value: dc['name'], cssClass: 'cell-hyperlink-blue'});
},
minWidth: 300,
searchable: true,
events: {
onClick: ctwu.onClickNetworkMonitorGrid
},
cssClass: 'cell-hyperlink-blue',
exportConfig: {
allow: true,
stdFormatter: false
Expand Down Expand Up @@ -327,7 +274,7 @@ define([
return {
remote: {
ajaxConfig: {
url: ctwc.get(ctwc.URL_NETWORKS_DETAILS_IN_CHUNKS, 25, $.now()),
url: ctwc.get(ctwc.URL_NETWORKS_DETAILS_IN_CHUNKS, 25, 100, $.now()),
type: 'POST',
data: JSON.stringify({
data: [{
Expand Down
2 changes: 1 addition & 1 deletion webroot/monitor/networking/ui/js/views/InstanceGridView.js
Expand Up @@ -17,7 +17,7 @@ define([
pagerOptions = viewConfig['pagerOptions'];

var instanceRemoteConfig = {
url: parentUUID != null ? ctwc.get(ctwc.URL_PROJECT_INSTANCES_IN_CHUNKS, parentUUID, 10, parentType, $.now()) : ctwc.get(ctwc.URL_INSTANCE_DETAILS_IN_CHUNKS, 25, $.now()),
url: parentUUID != null ? ctwc.get(ctwc.URL_PROJECT_INSTANCES_IN_CHUNKS, parentUUID, 10, 100, parentType, $.now()) : ctwc.get(ctwc.URL_INSTANCE_DETAILS_IN_CHUNKS, 10, 250, $.now()),
type: 'POST',
data: JSON.stringify({
data: [{"type": ctwc.TYPE_VIRTUAL_MACHINE, "cfilt": ctwc.FILTERS_COLUMN_VM.join(',')}]
Expand Down
2 changes: 1 addition & 1 deletion webroot/monitor/networking/ui/js/views/InstanceListView.js
Expand Up @@ -45,7 +45,7 @@ define([

function getInstanceListModelConfig(parentUUID, parentType) {
var ajaxConfig = {
url: parentUUID != null ? ctwc.get(ctwc.URL_PROJECT_INSTANCES_IN_CHUNKS, parentUUID, 25, parentType, $.now()) : ctwc.get(ctwc.URL_INSTANCE_DETAILS_IN_CHUNKS, 25, $.now()),
url: parentUUID != null ? ctwc.get(ctwc.URL_PROJECT_INSTANCES_IN_CHUNKS, parentUUID, 10, 100, parentType, $.now()) : ctwc.get(ctwc.URL_INSTANCE_DETAILS_IN_CHUNKS, 10, 250, $.now()),
type: 'POST',
data: JSON.stringify({
data: [{"type": ctwc.TYPE_VIRTUAL_MACHINE, "cfilt": ctwc.FILTERS_COLUMN_VM.join(',')}]
Expand Down

0 comments on commit 4be42cf

Please sign in to comment.