diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 63c38456f7a..3432028c2fa 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -5176,7 +5176,7 @@ label.error { } .multi-wizard.zone-wizard .select-container { - height: 413px; + height: 333px; overflow: auto; /*[empty]display:;*/ } @@ -5191,6 +5191,33 @@ label.error { margin: 23px 0 0px 6px; } +.multi-wizard.zone-wizard .info-desc { + font-size: 11px; + float: left; + text-align: left; + overflow: auto; + padding: 11px; + width: 698px; + margin: 29px 0 68px 5px; + background: #FFFFFF; + border: 1px solid #C7C7C7; + /*+border-radius:4px;*/ + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px 4px 4px 4px; +} + +.multi-wizard.zone-wizard .setup-public-traffic .info-desc, +.multi-wizard.zone-wizard .setup-guest-traffic .info-desc, +.multi-wizard.zone-wizard .setup-physical-network .info-desc { + margin-bottom: 12px; +} + +.multi-wizard.zone-wizard .info-desc strong { + font-weight: bold; +} + .multi-wizard.zone-wizard .main-desc em { text-decoration: underline; font-weight: bold; @@ -5307,16 +5334,15 @@ label.error { .multi-wizard.zone-wizard .content.input-area { width: 721px; - /*[empty]height:;*/ min-height: inherit; - margin: 2px auto auto 4px; + margin: -50px auto auto 4px; overflow: auto; } /*** Add physical network -- network form items*/ .multi-wizard.zone-wizard .setup-physical-network .content.input-area { width: 627px; - height: 438px; + height: 396px; background: none; position: relative; } @@ -5339,6 +5365,7 @@ label.error { float: right; height: auto; border: 1px solid #BFBFBF; + overflow: visible; /*+border-radius:4px;*/ -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -5364,7 +5391,7 @@ label.error { .multi-wizard.zone-wizard .select-container.multi .physical-network-icon { width: 61px; - height: 59px; + height: 53px; float: left; border-right: 1px solid #CDCDCD; background: url(../images/sprites.png) -109px -1393px; @@ -5389,7 +5416,7 @@ label.error { .multi-wizard.zone-wizard .select-container.multi .drop-container { background: #DAE2EC; width: 484px; - height: 73px; + height: 65px; clear: both; position: relative; /*+border-radius:4px;*/ @@ -5420,7 +5447,7 @@ label.error { .multi-wizard.zone-wizard .select-container.multi .drop-container ul li { float: left; - margin: 6px 0 0 16px; + margin: 0px 0 0 16px; } .multi-wizard.zone-wizard .select-container.multi .drop-container span.empty-message { @@ -5436,7 +5463,7 @@ label.error { /*** Add physical network -- traffic type drag area*/ .multi-wizard.zone-wizard .traffic-types-drag-area { width: 96px; - height: 398px; + height: 370px; background: #F0F1F2 none; border: 1px solid #DCCACA; /*+border-radius:4px;*/ @@ -5622,7 +5649,7 @@ label.error { /*** Configure guest network -- tabs*/ .multi-wizard.zone-wizard .setup-guest-traffic .ui-widget-content { width: 682px; - height: 308px; + height: 244px; border-bottom: none; border-right: none; /*+placement:shift -1px -7px;*/ diff --git a/ui/index-test.html b/ui/index-test.html index 18bea642e36..ed3d19d9714 100644 --- a/ui/index-test.html +++ b/ui/index-test.html @@ -431,15 +431,19 @@
-

Setup zone type

+

Set up zone type

Please select a configuration for your zone.

-
Choose this network model if you do not want to enable any VLAN support. All virtual instances created under this network model will be assigned an IP directly from the network and security groups are used to provide security and segregation.
+
+ Provide a single network where each VM instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering) +
-
Choose this network model if you wish to enable VLAN support. This network model provides the most flexibility in allowing administrators to provide custom network offerings such as providing firewall, vpn, or load balancer support as well as enabling direct vs virtual networking.
+
+ For more sophisticated network topologies. This network model provides the most flexibility in defining guest networks and providing custom network offerings such as firewall, VPN, or load balancer support. +
@@ -451,7 +455,9 @@
-
Please enter in the information to make a new zone.
+
+ A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. A zone consists of one or more pods (each of which contains hosts and primary storage servers) and a secondary storage server which is shared by all pods in the zone. +
@@ -467,7 +473,9 @@
  • Pod
  • Guest Traffic
  • -
    DRAG-AND-DROP different traffic types to your physical networks.
    +
    + When adding an advanced zone, you need to set up one or more physical networks. Each network corresponds to a NIC on the management server. Each physical network can carry one or more types of traffic, with certain restrictions on how they may be combined.

    Drag and drop one or more traffic types onto each physical network. +
     Add physical network
    @@ -477,7 +485,7 @@
    @@ -488,7 +496,7 @@
    @@ -499,7 +507,7 @@
    @@ -510,7 +518,7 @@
    @@ -533,12 +541,13 @@ zone-wizard-form="basicPhysicalNetwork" zone-wizard-prefilter="addBasicPhysicalNetwork"> -
    Please specify your physical network for this zone.
    + +
    Please specify Netscaler info
    @@ -548,12 +557,15 @@
    -
    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. +
    @@ -561,27 +573,35 @@
    -
    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. +
    -
    +
    -
    Please this zone's guest traffic network.
    + +
    + 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. +
    @@ -596,7 +616,10 @@
  • Primary Storage
  • 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. +
    @@ -611,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. +
    @@ -626,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. +
    @@ -641,15 +668,17 @@
  • 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. +
    - +
    -
    Review & launch
    +
    Launch zone
    diff --git a/ui/index.jsp b/ui/index.jsp index 02d475b91bf..51d18805545 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -431,15 +431,19 @@
    -

    Setup zone type

    +

    Set up zone type

    Please select a configuration for your zone.

    -
    Choose this network model if you do not want to enable any VLAN support. All virtual instances created under this network model will be assigned an IP directly from the network and security groups are used to provide security and segregation.
    +
    + Provide a single network where each VM instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering) +
    -
    Choose this network model if you wish to enable VLAN support. This network model provides the most flexibility in allowing administrators to provide custom network offerings such as providing firewall, vpn, or load balancer support as well as enabling direct vs virtual networking.
    +
    + For more sophisticated network topologies. This network model provides the most flexibility in defining guest networks and providing custom network offerings such as firewall, VPN, or load balancer support. +
    @@ -451,7 +455,9 @@
    -
    Please enter in the information to make a new zone.
    +
    + A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. A zone consists of one or more pods (each of which contains hosts and primary storage servers) and a secondary storage server which is shared by all pods in the zone. +
    @@ -467,7 +473,9 @@
  • Pod
  • Guest Traffic
  • -
    DRAG-AND-DROP different traffic types to your physical networks.
    +
    + When adding an advanced zone, you need to set up one or more physical networks. Each network corresponds to a NIC on the management server. Each physical network can carry one or more types of traffic, with certain restrictions on how they may be combined.

    Drag and drop one or more traffic types onto each physical network. +
     Add physical network
    @@ -477,7 +485,7 @@
    @@ -488,7 +496,7 @@
    @@ -499,7 +507,7 @@
    @@ -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',