CLOUDSTACK-537: cloudstack UI - zone wizard - (1) Advanced SG-Enabled zone: enable VirtualRouter and SecurityGroup provider. (2) Advanced SG-Disabled zone: enable VirtualRouter and VpcVirtualRouter provider.

This commit is contained in:
Jessica Wang 2012-11-26 11:55:41 -08:00
parent d9ac544b06
commit 36d175126d
1 changed files with 175 additions and 116 deletions

View File

@ -1896,7 +1896,7 @@
clearInterval(enablePhysicalNetworkIntervalID);
if (result.jobstatus == 1) {
//alert("updatePhysicalNetwork succeeded.");
//alert("enable physical network succeeded.");
// ***** Virtual Router ***** (begin) *****
var virtualRouterProviderId;
@ -1972,11 +1972,19 @@
if (result.jobstatus == 1) { //Virtual Router Provider has been enabled successfully
advZoneConfiguredVirtualRouterCount++;
if(advZoneConfiguredVirtualRouterCount == (args.data.returnedPhysicalNetworks.length * 2)) { //not call addPod() until virtualRouter and vpcVirtualRouter of all physical networks get configured
stepFns.addPod({
data: args.data
});
}
if(advZoneConfiguredVirtualRouterCount == args.data.returnedPhysicalNetworks.length) { //not call next stepFns.addXXX() until virtualRouter of all physical networks get configured
if(args.data.zone.sgEnabled != true) { //Advanced SG-disabled zone
stepFns.addPod({
data: args.data
});
}
else { //args.data.zone.sgEnabled == true //Advanced SG-enabled zone
stepFns.addGuestNetwork({
data: args.data
});
}
}
}
else if (result.jobstatus == 2) {
alert("failed to enable Virtual Router Provider. Error: " + _s(result.jobresult.errortext));
@ -2007,123 +2015,174 @@
});
// ***** Virtual Router ***** (end) *****
// ***** VPC Virtual Router ***** (begin) *****
var vpcVirtualRouterProviderId;
$.ajax({
url: createURL("listNetworkServiceProviders&name=VpcVirtualRouter&physicalNetworkId=" + thisPhysicalNetwork.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
if(items != null && items.length > 0) {
vpcVirtualRouterProviderId = items[0].id;
}
}
});
if(vpcVirtualRouterProviderId == null) {
alert("error: listNetworkServiceProviders API doesn't return VpcVirtualRouter provider ID");
return;
}
if(args.data.zone.sgEnabled != true) { //Advanced SG-disabled zone
// ***** VPC Virtual Router ***** (begin) *****
var vpcVirtualRouterProviderId;
$.ajax({
url: createURL("listNetworkServiceProviders&name=VpcVirtualRouter&physicalNetworkId=" + thisPhysicalNetwork.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
if(items != null && items.length > 0) {
vpcVirtualRouterProviderId = items[0].id;
}
}
});
if(vpcVirtualRouterProviderId == null) {
alert("error: listNetworkServiceProviders API doesn't return VpcVirtualRouter provider ID");
return;
}
var vpcVirtualRouterElementId;
$.ajax({
url: createURL("listVirtualRouterElements&nspid=" + vpcVirtualRouterProviderId),
dataType: "json",
async: false,
success: function(json) {
var items = json.listvirtualrouterelementsresponse.virtualrouterelement;
if(items != null && items.length > 0) {
vpcVirtualRouterElementId = items[0].id;
}
}
});
if(vpcVirtualRouterElementId == null) {
alert("error: listVirtualRouterElements API doesn't return VPC Virtual Router Element Id");
return;
}
var vpcVirtualRouterElementId;
$.ajax({
url: createURL("listVirtualRouterElements&nspid=" + vpcVirtualRouterProviderId),
dataType: "json",
async: false,
success: function(json) {
var items = json.listvirtualrouterelementsresponse.virtualrouterelement;
if(items != null && items.length > 0) {
vpcVirtualRouterElementId = items[0].id;
}
}
});
if(vpcVirtualRouterElementId == null) {
alert("error: listVirtualRouterElements API doesn't return VPC Virtual Router Element Id");
return;
}
$.ajax({
url: createURL("configureVirtualRouterElement&enabled=true&id=" + vpcVirtualRouterElementId),
dataType: "json",
async: false,
success: function(json) {
var jobId = json.configurevirtualrouterelementresponse.jobid;
var enableVpcVirtualRouterElementIntervalID = 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(enableVpcVirtualRouterElementIntervalID);
if (result.jobstatus == 1) { //configureVirtualRouterElement succeeded
$.ajax({
url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + vpcVirtualRouterProviderId),
dataType: "json",
async: false,
success: function(json) {
var jobId = json.updatenetworkserviceproviderresponse.jobid;
var enableVpcVirtualRouterProviderIntervalID = 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(enableVpcVirtualRouterProviderIntervalID);
if (result.jobstatus == 1) { //Virtual Router Provider has been enabled successfully
advZoneConfiguredVirtualRouterCount++;
if(advZoneConfiguredVirtualRouterCount == (args.data.returnedPhysicalNetworks.length * 2)) { //not call addPod() until virtualRouter and vpcVirtualRouter of all physical networks get configured
stepFns.addPod({
data: args.data
});
}
}
else if (result.jobstatus == 2) {
alert("failed to enable VPC Virtual Router Provider. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("updateNetworkServiceProvider failed. Error: " + errorMsg);
}
});
}, 3000);
}
});
}
else if (result.jobstatus == 2) {
alert("configureVirtualRouterElement failed. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("configureVirtualRouterElement failed. Error: " + errorMsg);
}
});
}, 3000);
}
});
// ***** VPC Virtual Router ***** (end) *****
$.ajax({
url: createURL("configureVirtualRouterElement&enabled=true&id=" + vpcVirtualRouterElementId),
dataType: "json",
async: false,
success: function(json) {
var jobId = json.configurevirtualrouterelementresponse.jobid;
var enableVpcVirtualRouterElementIntervalID = 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(enableVpcVirtualRouterElementIntervalID);
if (result.jobstatus == 1) { //configureVirtualRouterElement succeeded
$.ajax({
url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + vpcVirtualRouterProviderId),
dataType: "json",
async: false,
success: function(json) {
var jobId = json.updatenetworkserviceproviderresponse.jobid;
var enableVpcVirtualRouterProviderIntervalID = 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(enableVpcVirtualRouterProviderIntervalID);
if (result.jobstatus == 1) { //VPC Virtual Router has been enabled successfully
//don't need to do anything here
}
else if (result.jobstatus == 2) {
alert("failed to enable VPC Virtual Router Provider. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("failed to enable VPC Virtual Router Provider. Error: " + errorMsg);
}
});
}, 3000);
}
});
}
else if (result.jobstatus == 2) {
alert("configureVirtualRouterElement failed. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("configureVirtualRouterElement failed. Error: " + errorMsg);
}
});
}, 3000);
}
});
// ***** VPC Virtual Router ***** (end) *****
}
else { //args.data.zone.sgEnabled == true //Advanced SG-enabled zone
message(dictionary['message.enabling.security.group.provider']);
// get network service provider ID of Security Group
var securityGroupProviderId;
$.ajax({
url: createURL("listNetworkServiceProviders&name=SecurityGroupProvider&physicalNetworkId=" + thisPhysicalNetwork.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
if(items != null && items.length > 0) {
securityGroupProviderId = items[0].id;
}
}
});
if(securityGroupProviderId == null) {
alert("error: listNetworkServiceProviders API doesn't return security group provider ID");
return;
}
$.ajax({
url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + securityGroupProviderId),
dataType: "json",
async: false,
success: function(json) {
var enableSecurityGroupProviderIntervalID = setInterval(function() {
$.ajax({
url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid),
dataType: "json",
success: function(json) {
var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
}
else {
clearInterval(enableSecurityGroupProviderIntervalID);
if (result.jobstatus == 1) { //Security group provider has been enabled successfully
//don't need to do anything here
}
else if (result.jobstatus == 2) {
alert("failed to enable security group provider. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("failed to enable security group provider. Error: " + errorMsg);
}
});
}, 3000);
}
});
}
}
else if (result.jobstatus == 2) {
alert("updatePhysicalNetwork failed. Error: " + _s(result.jobresult.errortext));
alert("failed to enable physical network. Error: " + _s(result.jobresult.errortext));
}
}
},
error: function(XMLHttpResponse) {
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
alert("updatePhysicalNetwork failed. Error: " + errorMsg);
error: function(XMLHttpResponse) {
alert("failed to enable physical network. Error: " + parseXMLHttpResponse(XMLHttpResponse));
}
});
}, 3000);