@@ -510,7 +518,7 @@
@@ -539,7 +547,7 @@
Guest Traffic
-
Please specify Netscaler info
+
Please specify Netscaler info
@@ -555,7 +563,9 @@
Guest Traffic
-
Configure public traffic
+
+ Public traffic is generated when VMs in the cloud access the internet. Publicly-accessible IPs must be allocated for this purpose. End users can use the CloudStack UI to acquire these IPs to implement NAT between their guest network and their public network.
Provide at lease one range of IP addresses for internet traffic.
+
@@ -569,7 +579,9 @@
Guest Traffic
-
Please specify a pod for this zone.
+
+ Each zone must contain in one or more pods, and we will add the first pod now. A pod contains hosts and primary storage servers, which you will add in a later step. First, configure a range of reserved IP addresses for CloudStack's internal management traffic. The reserved IP range must be unique for each zone in the cloud.
+
@@ -587,7 +599,9 @@
Guest Traffic
-
Please configure guest traffic for your physical network(s).
+
+ Enter the first and last IP addresses that define a range that CloudStack can assign to guest VMs. We strongly recommend the use of multiple NICs. If multiple NICs are used, the guest IPs may be in a separate subnet. If one NIC is used, the guest IPs should be in the same CIDR as the pod's CIDR, but not within the reserved system IP range.
+
@@ -603,7 +617,9 @@
Secondary Storage
-
Please add a cluster for this zone.
+
+ Each pod must contain one or more clusters, and we will add the first cluster now. A cluster provides a way to group hosts. The hosts in a cluster all have identical hardware, run the same hypervisor, are on the same subnet, and access the same shared storage. Each cluster consists of one or more hosts and one or more primary storage servers.
+
@@ -618,7 +634,9 @@
Primary Storage
Secondary Storage
-
Please add a host for this zone.
+
+ Each cluster must contain at lease one host (computer) for guest VMs to run on, and we will add the first host now. For a host to function in CloudStack, you must install hypervisor software on the host, assign an IP address to the host, and ensure the host is connected to the CloudStack management server.
Give the host's DNS or IP address, the user name (usually root) and password, and any labels you use to categorize hosts.
+
@@ -633,7 +651,9 @@
Primary Storage
Secondary Storage
-
Please add a primary storage setup for this zone.
+
+ Each cluster must contain one or more primary storage servers, and we will add the first one now. Primary storage contains the disk volumes for all the VMs running on hosts in the cluster. Use any standards-compliant protocol that is supported by the underlying hypervisor.
+
@@ -648,7 +668,9 @@
Primary Storage
Secondary Storage
-
Please add a secondary storage setup for this zone.
+
+ Each zone must have at lease one NFS or secondary storage server, and we will add the first one now. Secondary storage stores VM templates, ISO images, and VM disk volume snapshots. This server must be available to all hosts in the zone.
Provide the IP address and exported path.
+
diff --git a/ui/scripts-test/zoneWizard.js b/ui/scripts-test/zoneWizard.js
index b6fc6358a86..9c8ea3db01f 100644
--- a/ui/scripts-test/zoneWizard.js
+++ b/ui/scripts-test/zoneWizard.js
@@ -485,182 +485,7 @@
label: 'Name',
validation: { required: true }
},
-
- protocol: {
- label: 'Protocol',
- validation: { required: true },
- select: function(args) {
- var selectedClusterObj = {
- hypervisortype: args.context.zones[0].hypervisor
- };
-
- if(selectedClusterObj == null)
- return;
-
- if(selectedClusterObj.hypervisortype == "KVM") {
- var items = [];
- items.push({id: "nfs", description: "nfs"});
- items.push({id: "SharedMountPoint", description: "SharedMountPoint"});
- args.response.success({data: items});
- }
- else if(selectedClusterObj.hypervisortype == "XenServer") {
- var items = [];
- items.push({id: "nfs", description: "nfs"});
- items.push({id: "PreSetup", description: "PreSetup"});
- items.push({id: "iscsi", description: "iscsi"});
- args.response.success({data: items});
- }
- else if(selectedClusterObj.hypervisortype == "VMware") {
- var items = [];
- items.push({id: "nfs", description: "nfs"});
- items.push({id: "vmfs", description: "vmfs"});
- args.response.success({data: items});
- }
- else if(selectedClusterObj.hypervisortype == "Ovm") {
- var items = [];
- items.push({id: "nfs", description: "nfs"});
- items.push({id: "ocfs2", description: "ocfs2"});
- args.response.success({data: items});
- }
- else {
- args.response.success({data:[]});
- }
-
- args.$select.change(function() {
- var $form = $(this).closest('form');
-
- var protocol = $(this).val();
- if(protocol == null)
- return;
-
- if(protocol == "nfs") {
- //$("#add_pool_server_container", $dialogAddPool).show();
- $form.find('[rel=server]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_nfs_server").val("");
- $form.find('[rel=server]').find(".value").find("input").val("");
-
- //$('li[input_group="nfs"]', $dialogAddPool).show();
- $form.find('[rel=path]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_path_container").find("label").text(g_dictionary["label.path"]+":");
- $form.find('[rel=path]').find(".name").find("label").text("Path:");
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- else if(protocol == "ocfs2") {//ocfs2 is the same as nfs, except no server field.
- //$dialogAddPool.find("#add_pool_server_container").hide();
- $form.find('[rel=server]').hide();
- //$dialogAddPool.find("#add_pool_nfs_server").val("");
- $form.find('[rel=server]').find(".value").find("input").val("");
-
- //$('li[input_group="nfs"]', $dialogAddPool).show();
- $form.find('[rel=path]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_path_container").find("label").text(g_dictionary["label.path"]+":");
- $form.find('[rel=path]').find(".name").find("label").text("Path:");
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- else if(protocol == "PreSetup") {
- //$dialogAddPool.find("#add_pool_server_container").hide();
- $form.find('[rel=server]').hide();
- //$dialogAddPool.find("#add_pool_nfs_server").val("localhost");
- $form.find('[rel=server]').find(".value").find("input").val("localhost");
-
- //$('li[input_group="nfs"]', $dialogAddPool).show();
- $form.find('[rel=path]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_path_container").find("label").text(g_dictionary["label.SR.name"]+":");
- $form.find('[rel=path]').find(".name").find("label").text("SR Name-Label:");
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- else if(protocol == "iscsi") {
- //$dialogAddPool.find("#add_pool_server_container").show();
- $form.find('[rel=server]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_nfs_server").val("");
- $form.find('[rel=server]').find(".value").find("input").val("");
-
- //$('li[input_group="nfs"]', $dialogAddPool).hide();
- $form.find('[rel=path]').hide();
-
- //$('li[input_group="iscsi"]', $dialogAddPool).show();
- $form.find('[rel=iqn]').css('display', 'block');
- $form.find('[rel=lun]').css('display', 'block');
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- else if(protocol == "vmfs") {
- //$dialogAddPool.find("#add_pool_server_container").show();
- $form.find('[rel=server]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_nfs_server").val("");
- $form.find('[rel=server]').find(".value").find("input").val("");
-
- //$('li[input_group="nfs"]', $dialogAddPool).hide();
- $form.find('[rel=path]').hide();
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).show();
- $form.find('[rel=vCenterDataCenter]').css('display', 'block');
- $form.find('[rel=vCenterDataStore]').css('display', 'block');
- }
- else if(protocol == "SharedMountPoint") { //"SharedMountPoint" show the same fields as "nfs" does.
- //$dialogAddPool.find("#add_pool_server_container").hide();
- $form.find('[rel=server]').hide();
- //$dialogAddPool.find("#add_pool_nfs_server").val("localhost");
- $form.find('[rel=server]').find(".value").find("input").val("localhost");
-
- //$('li[input_group="nfs"]', $dialogAddPool).show();
- $form.find('[rel=path]').css('display', 'block');
- $form.find('[rel=path]').find(".name").find("label").text("Path:");
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- else {
- //$dialogAddPool.find("#add_pool_server_container").show();
- $form.find('[rel=server]').css('display', 'block');
- //$dialogAddPool.find("#add_pool_nfs_server").val("");
- $form.find('[rel=server]').find(".value").find("input").val("");
-
- //$('li[input_group="iscsi"]', $dialogAddPool).hide();
- $form.find('[rel=iqn]').hide();
- $form.find('[rel=lun]').hide();
-
- //$('li[input_group="vmfs"]', $dialogAddPool).hide();
- $form.find('[rel=vCenterDataCenter]').hide();
- $form.find('[rel=vCenterDataStore]').hide();
- }
- });
-
- args.$select.trigger("change");
- }
- },
+
server: {
label: 'Server',
validation: { required: true },
diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js
index aeddc1b4e97..0134acab634 100644
--- a/ui/scripts/ui/dialog.js
+++ b/ui/scripts/ui/dialog.js
@@ -63,6 +63,11 @@
$name.find('label').prepend($('
').addClass('field-required').html('*'));
}
+ // Tooltip description
+ if (field.desc) {
+ $formItem.attr({ title: field.desc });
+ }
+
// Input area
var $value = $('').addClass('value')
.appendTo($formItem);
diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js
index e28868f16ce..d68bdca0757 100644
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@ -108,11 +108,26 @@
});
},
fields: {
- name: { label: 'Name', validation: { required: true } },
- dns1: { label: 'DNS 1', validation: { required: true } },
- dns2: { label: 'DNS 2' },
- internaldns1: { label: 'Internal DNS 1', validation: { required: true } },
- internaldns2: { label: 'Internal DNS 2' },
+ name: {
+ label: 'Name', validation: { required: true },
+ desc: 'A name for the zone.'
+ },
+ dns1: {
+ label: 'DNS 1', validation: { required: true },
+ desc: 'Name of a DNS server for use for use by VMs in the zone. The public IP addresses for the zone must hav a route to this server.'
+ },
+ dns2: {
+ label: 'DNS 2',
+ desc: 'A second DNS server name for use by VMs in the zone. The public IP addresses for the zone must hav a route to this server.'
+ },
+ internaldns1: {
+ label: 'Internal DNS 1', validation: { required: true },
+ desc: 'Name of a DNS server for use by CloudStack\'s internal system VMs in the zone. The private IP address for the pods must have a route to this server.'
+ },
+ internaldns2: {
+ label: 'Internal DNS 2',
+ desc: 'Name of a DNS server for use by CloudStack\'s internal system VMs in the zone. The private IP address for the pods must have a route to this server.'
+ },
networkOfferingId: {
label: 'Network Offering',
select: function(args) {
@@ -172,7 +187,10 @@
});
}
},
- networkdomain: { label: 'Network Domain' },
+ networkdomain: {
+ label: 'Network Domain',
+ desc: 'A DNS suffix that will create a custom domain name for the network that is accessed by guest VMs.'
+ },
ispublic: {
isReverse: true,
isBoolean: true,
@@ -209,15 +227,18 @@
fields: {
name: {
label: 'Pod name',
- validation: { required: true }
+ validation: { required: true },
+ desc: 'A name for this pod.'
},
reservedSystemGateway: {
label: 'Reserved system gateway',
- validation: { required: true }
+ validation: { required: true },
+ desc: 'The gateway for the hosts in the pod.'
},
reservedSystemNetmask: {
label: 'Reserved system netmask',
- validation: { required: true }
+ validation: { required: true },
+ desc: 'The network prefix that defines the pod\'s subnet. Uses CIDR notation.'
},
reservedSystemStartIp: {
label: 'Start Reserved system IP',