bug 7803: Fixed vm wizard to accomodate the new defaulted networks. The only case that doesn't work yet is when the virtual network is "unavailable". Need to fix that still.

This commit is contained in:
will 2011-01-11 19:08:08 -08:00
parent 870d0835a5
commit 5b4f410621
2 changed files with 83 additions and 81 deletions

View File

@ -354,9 +354,25 @@
</div>
<!-- VM detail panel (end) -->
<!-- VM Network Template (begin) -->
<!-- VM Primary Network Template (begin) -->
<div class="vmpopup_offeringbox" id="wizard_network_direct_template" style="display:none">
<input type="checkbox" name="network_direct_checkbox" class="radio" id="network_direct_checkbox" />
<input type="radio" name="primary_network" class="radio" id="network_direct_checkbox" />
<label class="label" id="network_direct_name">
</label>
<div class="vmpopup_offdescriptionbox">
<div class="vmpopup_offdescriptionbox_top">
</div>
<div class="vmpopup_offdescriptionbox_bot">
<p id="network_direct_desc">
A virtual private network that is fronted by a virtual router. An optional guest CIDR can be specified.
</p>
</div>
</div>
</div>
<!-- VM Network Template (end) -->
<!-- VM Secondary Network Template (begin) -->
<div class="vmpopup_offeringbox" id="wizard_network_direct_secondary_template" style="display:none">
<input type="checkbox" name="secondary_network" class="radio" id="network_direct_checkbox" />
<label class="label" id="network_direct_name">
</label>
<div class="vmpopup_offdescriptionbox">
@ -622,6 +638,7 @@
<h2>
Step 4: <strong>Network</strong></h2>
<p>
Please select the primary network that your virtual instance will be connected to.
</p>
</div>
<div class="vmpopup_contentpanel">
@ -640,7 +657,7 @@
<div class="vmpopup_offeringpanel" style="position:relative;">
<div id="for_advanced_zone" style="display: none;">
<div class="vmpopup_offeringbox" id="network_virtual_container" style="display:none">
<input type="checkbox" id="network_virtual" name="network_virtual_checkbox" class="radio" checked="checked" />
<input type="radio" id="network_virtual" name="primary_network" class="radio" checked="checked" />
<label class="label" id="network_virtual_name">Virtual Network</label>
<div class="vmpopup_offdescriptionbox">
<div class="vmpopup_offdescriptionbox_top">
@ -653,57 +670,13 @@
</div>
</div>
<div id="network_direct_container"></div>
<!--
<div class="vmpopup_offeringbox">
<input type="radio" name="radiogroup" class="radio" selected />
<label class="label">
My Virtual Network with Guest CIDR support. Specify guest CIDR:
</label>
<input type="text" name="disksize" class="text" />
<div class="vmpopup_offdescriptionbox">
<div class="vmpopup_offdescriptionbox_top">
</div>
<div class="vmpopup_offdescriptionbox_bot">
<p>
A virtual private network that is fronted by a virtual router. An optional guest CIDR can be specified.
</p>
</div>
</div>
</div>
<div class="vmpopup_offeringbox" style="margin-top: 15px;">
<input type="radio" name="radiogroup" class="radio" />
<label class="label">
My Direct Network:</label>
<div class="vmpopup_offdescriptionbox">
<div class="vmpopup_offdescriptionbox_top">
</div>
<div class="vmpopup_offdescriptionbox_bot">
<p>
A network where the virtual instance is directly assigned an IP from.
</p>
</div>
</div>
</div>
<div class="vmpopup_offeringbox" style="margin-top: 15px;">
<input type="radio" name="radiogroup" class="radio" />
<label class="label">
My Direct Shared Network: </label>
<select class="select">
<option>VLAN 100</option>
<option>VLAN 101</option>
<option>VLAN 102</option>
</select>
<div class="vmpopup_offdescriptionbox">
<div class="vmpopup_offdescriptionbox_top">
</div>
<div class="vmpopup_offdescriptionbox_bot">
<p>
A network where the virtual instance is directly assigned an IP from. A VLAN must be selected.
</p>
</div>
</div>
</div>
-->
<h3 id="secondary_network_title" style="display:none">
Additional Networks:
</h3>
<p id="secondary_network_desc" style="display:none">
Please select additional network(s) that your virtual instance will be connected to.
</p>
<div id="network_direct_secondary_container"></div>
</div>
<div id="for_basic_zone" style="display:none">
<h3>Security Groups</h3>
@ -830,16 +803,16 @@
<span id="wizard_review_disk_offering"></span>
</div>
</div>
<div class="vmpopup_reviewbox even" id="wizard_review_virtual_network_container">
<div class="vmpopup_reviewbox even" id="wizard_review_primary_network_container">
<div class="vmopopup_reviewtextbox">
<div class="vmpopup_reviewtick">
</div>
<div class="vmopopup_review_label">
Network 1:</div>
Primary Network:</div>
<span id="wizard_review_network"></span>
</div>
</div>
<div id="wizard_review_direct_network_container"></div>
<div id="wizard_review_secondary_network_container"></div>
</div>
</div>
<div class="vmpopup_navigationpanel">

View File

@ -857,6 +857,7 @@ function initVMWizard() {
var $virtualNetworkElement = $("#vm_popup #network_virtual_container");
// Setup Virtual Networks
var requiredVirtual = false;
if (virtualNetwork == null) {
$.ajax({
data: createURL("command=listNetworkOfferings&traffictype=Guest"),
@ -877,9 +878,10 @@ function initVMWizard() {
if (network.networkofferingavailability != 'Unavailable') {
$virtualNetworkElement.show();
if (network.networkofferingavailability == 'Required') {
requiredVirtual = true;
$virtualNetworkElement.find("#network_virtual").attr('disabled', true);
}
$virtualNetworkElement.data("id", network.id);
$virtualNetworkElement.find("#network_virtual").data("id", network.id).data("jsonObj", network);
} else {
$virtualNetworkElement.hide();
}
@ -894,9 +896,11 @@ function initVMWizard() {
if (virtualNetwork.networkofferingavailability != 'Unavailable') {
$virtualNetworkElement.show();
if (virtualNetwork.networkofferingavailability == 'Required') {
requiredVirtual = true;
$virtualNetworkElement.find("#network_virtual").attr('disabled', true);
}
$virtualNetworkElement.data("id", virtualNetwork.id);
$virtualNetworkElement.find("#network_virtual").data("id", virtualNetwork.id).data("jsonObj", virtualNetwork);
} else {
$virtualNetworkElement.hide();
}
@ -904,17 +908,33 @@ function initVMWizard() {
// Setup Direct Networks
var $networkDirectTemplate = $("#wizard_network_direct_template");
var $networkSecondaryDirectTemplate = $("#wizard_network_direct_secondary_template");
var $networkDirectContainer = $("#network_direct_container").empty();
var $networkDirectSecondaryContainer = $("#network_direct_secondary_container").empty();
var availableSecondary = false;
if (networks != null && networks.length > 0) {
for (var i = 0; i < networks.length; i++) {
if (networks[i].type != 'Direct') {
continue;
}
var $directNetworkElement = $networkDirectTemplate.clone().attr("id", "direct"+networks[i].id);
var $directNetworkElement = null;
if (networks[i].isdefault) {
if (requiredVirtual) {
continue;
}
$directNetworkElement = $networkDirectTemplate.clone().attr("id", "direct"+networks[i].id);
} else {
$directNetworkElement = $networkSecondaryDirectTemplate.clone().attr("id", "direct"+networks[i].id);
}
$directNetworkElement.find("#network_direct_checkbox").data("jsonObj", networks[i]);
$directNetworkElement.find("#network_direct_name").text(networks[i].name);
$directNetworkElement.find("#network_direct_desc").text(networks[i].displaytext);
$networkDirectContainer.append($directNetworkElement.show());
if (networks[i].isdefault) {
$networkDirectContainer.append($directNetworkElement.show());
} else {
availableSecondary = true;
$networkDirectSecondaryContainer.append($directNetworkElement.show());
}
}
// Add any additional shared direct networks
@ -929,19 +949,33 @@ function initVMWizard() {
if (sharedNetworks[i].type != 'Direct') {
continue;
}
var $directNetworkElement = $networkDirectTemplate.clone().attr("id", "direct"+sharedNetworks[i].id);
if (sharedNetworks[i].isdefault) {
if (requiredVirtual) {
continue;
}
$directNetworkElement = $networkDirectTemplate.clone().attr("id", "direct"+sharedNetworks[i].id);
} else {
$directNetworkElement = $networkSecondaryDirectTemplate.clone().attr("id", "direct"+sharedNetworks[i].id);
}
$directNetworkElement.find("#network_direct_checkbox").data("jsonObj", sharedNetworks[i]);
$directNetworkElement.find("#network_direct_name").text(sharedNetworks[i].name);
$directNetworkElement.find("#network_direct_desc").text(sharedNetworks[i].displaytext);
$networkDirectContainer.append($directNetworkElement.show());
if (sharedNetworks[i].isdefault) {
$networkDirectContainer.append($directNetworkElement.show());
} else {
availableSecondary = true;
$networkDirectSecondaryContainer.append($directNetworkElement.show());
}
}
}
}
});
}
if (availableSecondary) {
$("#secondary_network_title, #secondary_network_desc").show();
}
}
});
$thisPopup.find("#step5").find("#wizard_review_network").text(networkName);
}
else { // Basic Network
$thisPopup.find("#step4").find("#for_basic_zone").show();
@ -962,29 +996,25 @@ function initVMWizard() {
if (currentStepInVmPopup == 4) { //network
var zoneObj = $thisPopup.find("#wizard_zone option:selected").data("zoneObj");
if (zoneObj.networktype == "Advanced") {
var $selectedDirectNetworks = $thisPopup.find("input:checkbox[name=network_direct_checkbox]:checked");
var $selectedVirtualNetworks = $thisPopup.find("input:checkbox[name=network_virtual_checkbox]:checked");
var $selectedSecondaryNetworks = $thisPopup.find("input:checkbox[name=secondary_network]:checked");
var $selectedPrimaryNetworks = $thisPopup.find("input:radio[name=primary_network]:checked");
// prevent a person from moving on if no network has been selected
if($selectedDirectNetworks.length == 0 && $selectedVirtualNetworks.length == 0) {
if($selectedPrimaryNetworks.length == 0) {
$thisPopup.find("#step4 #wiz_message").show();
return false;
}
var modResult = 0;
if ($selectedVirtualNetworks.length == 0) {
$thisPopup.find("#wizard_review_virtual_network_container").hide();
modResult = 1;
} else {
$thisPopup.find("#wizard_review_virtual_network_container").show();
modResult = 0;
}
$thisPopup.find("#step5").find("#wizard_review_network").text($selectedPrimaryNetworks.data("jsonObj").name);
$thisPopup.find("#wizard_review_primary_network_container").show();
modResult = 0;
var $reviewNetworkContainer = $("#wizard_review_direct_network_container").empty();
if ($selectedDirectNetworks.length != 0) {
var $reviewNetworkContainer = $("#wizard_review_secondary_network_container").empty();
if ($selectedSecondaryNetworks.length != 0) {
var networkIds = [];
$selectedDirectNetworks.each(function(i) {
$selectedSecondaryNetworks.each(function(i) {
var json = $(this).data("jsonObj");
if (i == 0) {
networkIds.push(json.id);
@ -1028,11 +1058,10 @@ function initVMWizard() {
var zoneObj = $thisPopup.find("#wizard_zone option:selected").data("zoneObj");
if (zoneObj.networktype == "Advanced") {
var networkIds = null;
if ($thisPopup.find("input:checkbox[name=network_virtual_checkbox]:checked").length != 0) {
networkIds = $thisPopup.find("#network_virtual_container").data("id");
}
var directNetworkIds = $thisPopup.find("#wizard_review_direct_network_container").data("directNetworkIds");
var $selectedPrimaryNetworks = $thisPopup.find("input:radio[name=primary_network]:checked");
var networkIds = $selectedPrimaryNetworks.data("jsonObj").id;
var directNetworkIds = $thisPopup.find("#wizard_review_secondary_network_container").data("directNetworkIds");
if (directNetworkIds != null) {
if (networkIds != null) {
networkIds = networkIds+","+directNetworkIds;