CLOUDSTACK-2770: UI - Infrastructure menu - physical netework - network service providers - add Baremetal DHCP, Baremetal PXE.

This commit is contained in:
Jessica Wang 2013-05-30 13:31:22 -07:00
parent 70ca581499
commit 0a01f25ffa
1 changed files with 645 additions and 1 deletions

View File

@ -4019,6 +4019,328 @@
}
},
//Baremetal DHCP provider detail view
BaremetalDhcpProvider: {
type: 'detailView',
id: 'BaremetalDhcpProvider',
label: 'Baremetal DHCP Provider',
viewAll: { label: 'label.devices', path: '_zone.BaremetalDhcpDevices' },
tabs: {
details: {
title: 'label.details',
fields: [
{
name: { label: 'label.name' }
},
{
state: { label: 'label.state' }
}
],
dataProvider: function(args) {
refreshNspData("BaremetalDhcpProvider");
var providerObj;
$(nspHardcodingArray).each(function(){
if(this.id == "BaremetalDhcpProvider") {
providerObj = this;
return false; //break each loop
}
});
args.response.success({
data: providerObj,
actionFilter: networkProviderActionFilter('BaremetalDhcpProvider')
});
}
}
},
actions: {
add: {
label: 'Add Baremetal DHCP Device',
createForm: {
title: 'Add Baremetal DHCP Device',
fields: {
url: {
label: 'label.url',
validation: { required: true }
},
username: {
label: 'label.username',
validation: { required: true }
},
password: {
label: 'label.password',
isPassword: true,
validation: { required: true }
}
}
},
action: function(args) {
addBaremetalDhcpDeviceFn(args);
},
messages: {
notification: function(args) {
return 'Add Baremetal DHCP Device';
}
},
notification: {
poll: pollAsyncJobResult
}
},
enable: {
label: 'label.enable.provider',
action: function(args) {
$.ajax({
url: createURL("updateNetworkServiceProvider&id=" + nspMap["BaremetalDhcpProvider"].id + "&state=Enabled"),
dataType: "json",
success: function(json) {
var jid = json.updatenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
$(window).trigger('cloudStack.fullRefresh');
}
}
}
);
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.enable.provider';
},
notification: function() {
return 'label.enable.provider';
}
},
notification: { poll: pollAsyncJobResult }
},
disable: {
label: 'label.disable.provider',
action: function(args) {
$.ajax({
url: createURL("updateNetworkServiceProvider&id=" + nspMap["BaremetalDhcpProvider"].id + "&state=Disabled"),
dataType: "json",
success: function(json) {
var jid = json.updatenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
$(window).trigger('cloudStack.fullRefresh');
}
}
}
);
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.disable.provider';
},
notification: function() {
return 'label.disable.provider';
}
},
notification: { poll: pollAsyncJobResult }
},
destroy: {
label: 'label.shutdown.provider',
action: function(args) {
$.ajax({
url: createURL("deleteNetworkServiceProvider&id=" + nspMap["BaremetalDhcpProvider"].id),
dataType: "json",
success: function(json) {
var jid = json.deletenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid
}
}
);
$(window).trigger('cloudStack.fullRefresh');
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.shutdown.provider';
},
notification: function(args) {
return 'label.shutdown.provider';
}
},
notification: { poll: pollAsyncJobResult }
}
}
},
//Baremetal PXE provider detail view
BaremetalPxeProvider: {
type: 'detailView',
id: 'BaremetalPxeProvider',
label: 'Baremetal PXE Provider',
viewAll: { label: 'label.devices', path: '_zone.BaremetalPxeDevices' },
tabs: {
details: {
title: 'label.details',
fields: [
{
name: { label: 'label.name' }
},
{
state: { label: 'label.state' }
}
],
dataProvider: function(args) {
refreshNspData("BaremetalPxeProvider");
var providerObj;
$(nspHardcodingArray).each(function(){
if(this.id == "BaremetalPxeProvider") {
providerObj = this;
return false; //break each loop
}
});
args.response.success({
data: providerObj,
actionFilter: networkProviderActionFilter('BaremetalPxeProvider')
});
}
}
},
actions: {
add: {
label: 'Add Baremetal PXE Device',
createForm: {
title: 'Add Baremetal PXE Device',
fields: {
url: {
label: 'label.url',
validation: { required: true }
},
username: {
label: 'label.username',
validation: { required: true }
},
password: {
label: 'label.password',
isPassword: true,
validation: { required: true }
}
}
},
action: function(args) {
addBaremetalPxeDeviceFn(args);
},
messages: {
notification: function(args) {
return 'Add Baremetal PXE Device';
}
},
notification: {
poll: pollAsyncJobResult
}
},
enable: {
label: 'label.enable.provider',
action: function(args) {
$.ajax({
url: createURL("updateNetworkServiceProvider&id=" + nspMap["BaremetalPxeProvider"].id + "&state=Enabled"),
dataType: "json",
success: function(json) {
var jid = json.updatenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
$(window).trigger('cloudStack.fullRefresh');
}
}
}
);
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.enable.provider';
},
notification: function() {
return 'label.enable.provider';
}
},
notification: { poll: pollAsyncJobResult }
},
disable: {
label: 'label.disable.provider',
action: function(args) {
$.ajax({
url: createURL("updateNetworkServiceProvider&id=" + nspMap["BaremetalPxeProvider"].id + "&state=Disabled"),
dataType: "json",
success: function(json) {
var jid = json.updatenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
$(window).trigger('cloudStack.fullRefresh');
}
}
}
);
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.disable.provider';
},
notification: function() {
return 'label.disable.provider';
}
},
notification: { poll: pollAsyncJobResult }
},
destroy: {
label: 'label.shutdown.provider',
action: function(args) {
$.ajax({
url: createURL("deleteNetworkServiceProvider&id=" + nspMap["BaremetalPxeProvider"].id),
dataType: "json",
success: function(json) {
var jid = json.deletenetworkserviceproviderresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid
}
}
);
$(window).trigger('cloudStack.fullRefresh');
}
});
},
messages: {
confirm: function(args) {
return 'message.confirm.shutdown.provider';
},
notification: function(args) {
return 'label.shutdown.provider';
}
},
notification: { poll: pollAsyncJobResult }
}
}
},
//f5 provider detail view
f5: {
type: 'detailView',
@ -7684,6 +8006,134 @@
}
},
// Baremetal DHCP devices listView
BaremetalDhcpDevices: {
id: 'BaremetalDhcpDevices',
title: 'Baremetal DHCP Devices',
listView: {
id: 'BaremetalDhcpDevices',
fields: {
url: { label: 'label.url' }
},
actions: {
add: {
label: 'Add Baremetal DHCP Device',
createForm: {
title: 'Add Baremetal DHCP Device',
fields: {
url: {
label: 'label.url',
validation: { required: true }
},
username: {
label: 'label.username',
validation: { required: true }
},
password: {
label: 'label.password',
isPassword: true,
validation: { required: true }
}
}
},
action: function(args) {
addBaremetalDhcpDeviceFn(args);
},
messages: {
notification: function(args) {
return 'Add Baremetal DHCP Device';
}
},
notification: {
poll: pollAsyncJobResult
}
},
},
dataProvider: function(args) {
$.ajax({
url: createURL('listBaremetalDhcp'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
page: args.page,
pageSize: pageSize
},
dataType: "json",
async: false,
success: function(json) {
var items = json.listexternaldhcpresponse.baremetaldhcp;
args.response.success({data: items});
}
});
}
}
},
// Baremetal PXE devices listView
BaremetalPxeDevices: {
id: 'BaremetalPxeDevices',
title: 'Baremetal PXE Devices',
listView: {
id: 'BaremetalPxeDevices',
fields: {
url: { label: 'label.url' }
},
actions: {
add: {
label: 'Add Baremetal PXE Device',
createForm: {
title: 'Add Baremetal PXE Device',
fields: {
url: {
label: 'label.url',
validation: { required: true }
},
username: {
label: 'label.username',
validation: { required: true }
},
password: {
label: 'label.password',
isPassword: true,
validation: { required: true }
},
tftpdir: {
label: 'Tftp root directory',
validation: { required: true }
}
}
},
action: function(args) {
addBaremetalPxeDeviceFn(args);
},
messages: {
notification: function(args) {
return 'Add Baremetal PXE Device';
}
},
notification: {
poll: pollAsyncJobResult
}
},
},
dataProvider: function(args) {
$.ajax({
url: createURL('listBaremetalPxePingServer'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
page: args.page,
pageSize: pageSize
},
dataType: "json",
async: false,
success: function(json) {
var items = json.listpingpxeserverresponse.pingpxeserver;
args.response.success({data: items});
}
});
}
}
},
// F5 devices listView
f5Devices: {
id: 'f5Devices',
@ -11725,6 +12175,184 @@
}
};
function addBaremetalDhcpDeviceFn(args) {
if(nspMap["BaremetalDhcpProvider"] == null) {
$.ajax({
url: createURL("addNetworkServiceProvider&name=BaremetalDhcpProvider&physicalnetworkid=" + selectedPhysicalNetworkObj.id),
dataType: "json",
async: true,
success: function(json) {
var jobId = json.addnetworkserviceproviderresponse.jobid;
var addBaremetalDhcpProviderIntervalID = setInterval(function() {
$.ajax({
url: createURL("queryAsyncJobResult&jobId="+jobId),
dataType: "json",
success: function(json) {
var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
}
else {
clearInterval(addBaremetalDhcpProviderIntervalID);
if (result.jobstatus == 1) {
nspMap["BaremetalDhcpProvider"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
$.ajax({
url: createURL('addBaremetalDhcp'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
dhcpservertype: 'DHCPD',
url: args.data.url,
username: args.data.username,
password: args.data.password
},
success: function(json) {
var jid = json.addexternaldhcpresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
var item = json.queryasyncjobresultresponse.jobresult.baremetaldhcp;
return item;
}
}
}
);
}
});
}
else if (result.jobstatus == 2) {
alert(_s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
alert(parseXMLHttpResponse(XMLHttpResponse));
}
});
}, g_queryAsyncJobResultInterval);
}
});
}
else {
$.ajax({
url: createURL('addBaremetalDhcp'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
dhcpservertype: 'DHCPD',
url: args.data.url,
username: args.data.username,
password: args.data.password
},
success: function(json) {
var jid = json.addexternaldhcpresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
var item = json.queryasyncjobresultresponse.jobresult.baremetaldhcp;
return item;
}
}
}
);
}
});
}
}
function addBaremetalPxeDeviceFn(args) {
if(nspMap["BaremetalPxeProvider"] == null) {
$.ajax({
url: createURL("addNetworkServiceProvider&name=BaremetalPxeProvider&physicalnetworkid=" + selectedPhysicalNetworkObj.id),
dataType: "json",
async: true,
success: function(json) {
var jobId = json.addnetworkserviceproviderresponse.jobid;
var addBaremetalPxeProviderIntervalID = setInterval(function() {
$.ajax({
url: createURL("queryAsyncJobResult&jobId="+jobId),
dataType: "json",
success: function(json) {
var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
}
else {
clearInterval(addBaremetalPxeProviderIntervalID);
if (result.jobstatus == 1) {
nspMap["BaremetalPxeProvider"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
$.ajax({
url: createURL('addBaremetalPxeKickStartServer'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
pxeservertype: 'KICK_START',
url: args.data.url,
username: args.data.username,
password: args.data.password,
tftpdir: args.data.tftpdir
},
success: function(json) {
var jid = json.addexternalpxeresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
var item = json.queryasyncjobresultresponse.jobresult.externalpxe;
return item;
}
}
}
);
}
});
}
else if (result.jobstatus == 2) {
alert(_s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
alert(parseXMLHttpResponse(XMLHttpResponse));
}
});
}, g_queryAsyncJobResultInterval);
}
});
}
else {
$.ajax({
url: createURL('addBaremetalPxeKickStartServer'),
data: {
physicalnetworkid: selectedPhysicalNetworkObj.id,
pxeservertype: 'KICK_START',
url: args.data.url,
username: args.data.username,
password: args.data.password,
tftpdir: args.data.tftpdir
},
success: function(json) {
var jid = json.addexternalpxeresponse.jobid;
args.response.success(
{_custom:
{
jobId: jid,
getUpdatedItem: function(json) {
var item = json.queryasyncjobresultresponse.jobresult.externalpxe;
return item;
}
}
}
);
}
});
}
}
function addExternalLoadBalancer(args, physicalNetworkObj, apiCmd, apiCmdRes, apiCmdObj) {
var array1 = [];
array1.push("&physicalnetworkid=" + physicalNetworkObj.id);
@ -12648,6 +13276,12 @@
case "MidoNet":
nspMap["midoNet"] = items[i];
break;
case "BaremetalDhcpProvider":
nspMap["BaremetalDhcpProvider"] = items[i];
break;
case "BaremetalPxeProvider":
nspMap["BaremetalPxeProvider"] = items[i];
break;
case "F5BigIp":
nspMap["f5"] = items[i];
break;
@ -12689,7 +13323,17 @@
id: 'bigswitchVns',
name: 'BigSwitch Vns',
state: nspMap.bigswitchVns ? nspMap.bigswitchVns.state : 'Disabled'
}
},
{
id: 'BaremetalDhcpProvider',
name: 'Baremetal DHCP',
state: nspMap.BaremetalDhcpProvider ? nspMap.BaremetalDhcpProvider.state : 'Disabled'
},
{
id: 'BaremetalPxeProvider',
name: 'Baremetal PXE',
state: nspMap.BaremetalPxeProvider ? nspMap.BaremetalPxeProvider.state : 'Disabled'
}
];
$(window).trigger('cloudStack.system.serviceProviders.makeHarcodedArray', {