You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ts...@apache.org on 2013/04/21 19:04:00 UTC
[49/49] git commit: updated refs/heads/marvin_refactor to 0b5fe9a
Merge branch 'master' into marvin_refactor
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0b5fe9a9
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0b5fe9a9
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0b5fe9a9
Branch: refs/heads/marvin_refactor
Commit: 0b5fe9a9061dda4ad4f91fb1e413373d11e75169
Parents: b079723 5a0f4b6
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Sun Apr 21 22:32:50 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Sun Apr 21 22:32:50 2013 +0530
----------------------------------------------------------------------
CHANGES | 385 ++++++++++++++-
README.md | 6 +-
api/src/com/cloud/network/element/IpDeployer.java | 6 +-
.../org/apache/cloudstack/api/ApiConstants.java | 1 +
.../cloudstack/api/command/user/vm/ListVMsCmd.java | 9 +
docs/en-US/advanced-zone-configuration.xml | 2 +-
docs/en-US/advanced-zone-network-traffic-types.xml | 2 +-
docs/en-US/basic-zone-network-traffic-types.xml | 4 +-
docs/en-US/build-nonoss.xml | 49 ++
docs/en-US/source.xml | 1 +
.../troubleshooting-working-with-server-logs.xml | 6 +-
.../engine/cloud/entity/api/VMEntityManager.java | 2 +-
.../cloud/entity/api/VMEntityManagerImpl.java | 53 ++-
.../cloud/entity/api/VirtualMachineEntityImpl.java | 2 +-
.../debian/config/etc/init.d/cloud-early-config | 53 +-
.../cloud/network/element/NiciraNvpElement.java | 5 +
.../network/element/NiciraNvpElementTest.java | 238 ++++++---
server/pom.xml | 2 +-
.../src/com/cloud/api/query/QueryManagerImpl.java | 18 +-
.../configuration/ConfigurationManagerImpl.java | 9 +-
server/src/com/cloud/server/Criteria.java | 11 +-
server/test/com/cloud/vpc/Site2SiteVpnTest.java | 2 +-
server/test/com/cloud/vpc/VpcApiUnitTest.java | 167 ++-----
.../test/com/cloud/vpc/VpcTestConfiguration.java | 73 ++--
test/integration/component/test_accounts.py | 16 +-
.../component/test_allocation_states.py | 2 +-
test/integration/component/test_blocker_bugs.py | 12 +-
test/integration/component/test_egress_rules.py | 22 +-
test/integration/component/test_eip_elb.py | 4 +-
.../integration/component/test_network_offering.py | 8 +-
test/integration/component/test_project_configs.py | 10 +-
test/integration/component/test_project_limits.py | 6 +-
.../component/test_project_resources.py | 12 +-
test/integration/component/test_project_usage.py | 18 +-
test/integration/component/test_projects.py | 14 +-
test/integration/component/test_resource_limits.py | 6 +-
test/integration/component/test_routers.py | 8 +-
test/integration/component/test_security_groups.py | 14 +-
test/integration/component/test_snapshots.py | 14 +-
test/integration/component/test_storage_motion.py | 4 +-
test/integration/component/test_templates.py | 4 +-
test/integration/component/test_usage.py | 18 +-
.../integration/component/test_vm_passwdenabled.py | 2 +-
test/integration/component/test_volumes.py | 10 +-
test/integration/smoke/test_ScaleVm.py | 221 ---------
test/integration/smoke/test_UpdateCfg.py | 85 ----
test/integration/smoke/test_global_settings.py | 85 ++++
test/integration/smoke/test_iso.py | 2 +-
test/integration/smoke/test_network.py | 2 +-
test/integration/smoke/test_routers.py | 2 +-
test/integration/smoke/test_scale_vm.py | 221 +++++++++
test/integration/smoke/test_templates.py | 2 +-
test/integration/smoke/test_volumes.py | 2 +-
tools/marvin/marvin/common.py | 4 +-
ui/css/cloudstack3.css | 70 +++-
ui/index.jsp | 4 +-
ui/scripts/instanceWizard.js | 37 +-
ui/scripts/instances.js | 64 ++-
ui/scripts/network.js | 46 +--
ui/scripts/storage.js | 117 ++++-
ui/scripts/templates.js | 134 ++++--
ui/scripts/ui-custom/projectSelect.js | 66 +++
ui/scripts/ui-custom/projects.js | 6 +-
ui/scripts/ui-custom/zoneFilter.js | 39 ++
ui/scripts/zoneWizard.js | 10 +-
65 files changed, 1691 insertions(+), 838 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b5fe9a9/server/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b5fe9a9/test/integration/smoke/test_scale_vm.py
----------------------------------------------------------------------
diff --cc test/integration/smoke/test_scale_vm.py
index 0000000,64fe4dc..1f20258
mode 000000,100644..100644
--- a/test/integration/smoke/test_scale_vm.py
+++ b/test/integration/smoke/test_scale_vm.py
@@@ -1,0 -1,221 +1,221 @@@
+ # Licensed to the Apache Software Foundation (ASF) under one
+ # or more contributor license agreements. See the NOTICE file
+ # distributed with this work for additional information
+ # regarding copyright ownership. The ASF licenses this file
+ # to you under the Apache License, Version 2.0 (the
+ # "License"); you may not use this file except in compliance
+ # with the License. You may obtain a copy of the License at
-#
++#
+ # http://www.apache.org/licenses/LICENSE-2.0
-#
++#
+ # Unless required by applicable law or agreed to in writing,
+ # software distributed under the License is distributed on an
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ # KIND, either express or implied. See the License for the
+ # specific language governing permissions and limitations
+ # under the License.
+ """ P1 tests for Scaling up Vm
+ """
+ #Import Local Modules
+ import marvin
+ from marvin.cloudstackTestCase import *
+ from marvin.cloudstackAPI import *
+ from marvin.remoteSSHClient import remoteSSHClient
+ from marvin.integration.lib.utils import *
+ from marvin.integration.lib.base import *
+ from marvin.integration.lib.common import *
+ from nose.plugins.attrib import attr
+ #Import System modules
+ import time
+
+ _multiprocess_shared_ = True
+ class Services:
+ """Test VM Life Cycle Services
+ """
+
+ def __init__(self):
+ self.services = {
+
+ "account": {
+ "email": "test@test.com",
+ "firstname": "Test",
+ "lastname": "User",
+ "username": "test",
- # Random characters are appended in create account to
++ # Random characters are appended in create account to
+ # ensure unique username generated each time
+ "password": "password",
+ },
+ "small":
- # Create a small virtual machine instance with disk offering
++ # Create a small virtual machine instance with disk offering
+ {
+ "displayname": "testserver",
+ "username": "root", # VM creds for SSH
+ "password": "password",
+ "ssh_port": 22,
+ "hypervisor": 'XenServer',
+ "privateport": 22,
+ "publicport": 22,
+ "protocol": 'TCP',
+ },
+ "service_offerings":
+ {
+ "small":
+ {
- # Small service offering ID to for change VM
++ # Small service offering ID to for change VM
+ # service offering from medium to small
+ "name": "SmallInstance",
+ "displaytext": "SmallInstance",
+ "cpunumber": 1,
+ "cpuspeed": 100,
+ "memory": 256,
+ },
+ "big":
+ {
- # Big service offering ID to for change VM
++ # Big service offering ID to for change VM
+ "name": "BigInstance",
+ "displaytext": "BigInstance",
+ "cpunumber": 1,
+ "cpuspeed": 100,
+ "memory": 512,
+ }
+ },
+ #Change this
+ "template": {
+ "displaytext": "xs",
+ "name": "xs",
+ "passwordenabled": False,
+ },
+ "diskdevice": '/dev/xvdd',
+ # Disk device where ISO is attached to instance
+ "mount_dir": "/mnt/tmp",
+ "sleep": 60,
+ "timeout": 10,
+ #Migrate VM to hostid
+ "ostype": 'CentOS 5.3 (64-bit)',
+ # CentOS 5.3 (64-bit)
+ }
+
+ class TestScaleVm(cloudstackTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.api_client = super(TestScaleVm, cls).getClsTestClient().getApiClient()
+ cls.services = Services().services
+
+ # Get Zone, Domain and templates
+ domain = get_domain(cls.api_client, cls.services)
+ zone = get_zone(cls.api_client, cls.services)
+ cls.services['mode'] = zone.networktype
+
+ template = get_template(
+ cls.api_client,
+ zone.id,
+ cls.services["ostype"]
+ )
+ # Set Zones and disk offerings ??
+ cls.services["small"]["zoneid"] = zone.id
+ cls.services["small"]["template"] = template.id
+
+ # Create account, service offerings, vm.
+ cls.account = Account.create(
+ cls.api_client,
+ cls.services["account"],
+ domainid=domain.id
+ )
+
+ cls.small_offering = ServiceOffering.create(
+ cls.api_client,
+ cls.services["service_offerings"]["small"]
+ )
-
++
+ cls.big_offering = ServiceOffering.create(
+ cls.api_client,
+ cls.services["service_offerings"]["big"]
+ )
+
+ #create a virtual machine
+ cls.virtual_machine = VirtualMachine.create(
+ cls.api_client,
+ cls.services["small"],
+ accountid=cls.account.account.name,
+ domainid=cls.account.account.domainid,
+ serviceofferingid=cls.small_offering.id,
+ mode=cls.services["mode"]
+ )
+ #how does it work ??
+ cls._cleanup = [
+ cls.small_offering,
+ cls.account
+ ]
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.api_client = super(TestScaleVm, cls).getClsTestClient().getApiClient()
+ cleanup_resources(cls.api_client, cls._cleanup)
+ return
+
+ def setUp(self):
+ self.apiclient = self.testClient.getApiClient()
+ self.dbclient = self.testClient.getDbConnection()
+ self.cleanup = []
+
+ def tearDown(self):
+ #Clean up, terminate the created ISOs
+ cleanup_resources(self.apiclient, self.cleanup)
+ return
+
+ @attr(tags = ["xenserver", "advanced", "basic"])
+ def test_01_scale_vm(self):
- """Test scale virtual machine
++ """Test scale virtual machine
+ """
+ # Validate the following
+ # Scale up the vm and see if it scales to the new svc offering and is finally in running state
-
-
-
++
++
++
+ self.debug("Scaling VM-ID: %s to service offering: %s" % (
+ self.virtual_machine.id,
+ self.big_offering.id
+ ))
-
++
+ cmd = scaleVirtualMachine.scaleVirtualMachineCmd()
+ cmd.serviceofferingid = self.big_offering.id
+ cmd.id = self.virtual_machine.id
- self.apiclient.scaleVirtualMachine(cmd)
++ self.apiclient.scaleVirtualMachine(cmd)
+
+ list_vm_response = list_virtual_machines(
+ self.apiclient,
+ id=self.virtual_machine.id
+ )
+ self.assertEqual(
+ isinstance(list_vm_response, list),
+ True,
+ "Check list response returns a valid list"
+ )
+
+ self.assertNotEqual(
+ list_vm_response,
+ None,
+ "Check virtual machine is listVirtualMachines"
+ )
+
+ vm_response = list_vm_response[0]
+
+ self.assertEqual(
+ vm_response.id,
+ self.virtual_machine.id,
+ "Check virtual machine ID of scaled VM"
+ )
+
+ self.assertEqual(
+ vm_response.serviceofferingid,
+ self.big_offering.id,
+ "Check service offering of the VM"
+ )
+
+ self.assertEqual(
+ vm_response.state,
+ 'Running',
+ "Check the state of VM"
+ )
+ return
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b5fe9a9/tools/marvin/marvin/common.py
----------------------------------------------------------------------
diff --cc tools/marvin/marvin/common.py
index 36e4435,0000000..0c71607
mode 100644,000000..100644
--- a/tools/marvin/marvin/common.py
+++ b/tools/marvin/marvin/common.py
@@@ -1,566 -1,0 +1,568 @@@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+"""Common functions
+"""
+
+#Import Local Modules
+from marvin.cloudstackTestCase import *
+from marvin.remoteSSHClient import remoteSSHClient
+from marvin.utils import *
+
+#Import System modules
+import time
+
+
+def wait_for_cleanup(apiclient, configs=None):
+ """Sleeps till the cleanup configs passed"""
+
+ # Configs list consists of the list of global configs
+ if not isinstance(configs, list):
+ return
+ for config in configs:
+ cmd = listConfigurations.listConfigurationsCmd()
+ cmd.name = config
+ cmd.listall = True
+ try:
+ config_descs = apiclient.listConfigurations(cmd)
+ except Exception as e:
+ raise Exception("Failed to fetch configurations: %s" % e)
+
+ if not isinstance(config_descs, list):
+ raise Exception("List configs didn't returned a valid data")
+
+ config_desc = config_descs[0]
+ # Sleep for the config_desc.value time
+ time.sleep(int(config_desc.value))
+ return
+
+
+def get_domain(apiclient, services=None):
+ "Returns a default domain"
+
+ cmd = listDomains.listDomainsCmd()
+ if services:
+ if "domainid" in services:
+ cmd.id = services["domainid"]
+
+ domains = apiclient.listDomains(cmd)
+
+ if isinstance(domains, list):
+ assert len(domains) > 0
+ return domains[0]
+ else:
+ raise Exception("Failed to find specified domain.")
+
+
+def get_zone(apiclient, services=None):
+ "Returns a default zone"
+
+ cmd = listZones.listZonesCmd()
+ if services:
+ if "zoneid" in services:
+ cmd.id = services["zoneid"]
+
+ zones = apiclient.listZones(cmd)
+
+ if isinstance(zones, list):
+ assert len(zones) > 0, "There are no available zones in the deployment"
+ return zones[0]
+ else:
+ raise Exception("Failed to find specified zone.")
+
+
+def get_pod(apiclient, zoneid, services=None):
+ "Returns a default pod for specified zone"
+
+ cmd = listPods.listPodsCmd()
+ cmd.zoneid = zoneid
+
+ if services:
+ if "podid" in services:
+ cmd.id = services["podid"]
+
+ pods = apiclient.listPods(cmd)
+
+ if isinstance(pods, list):
+ assert len(pods) > 0, "No pods found for zone %s"%zoneid
+ return pods[0]
+ else:
+ raise Exception("Exception: Failed to find specified pod.")
+
+
+def get_template(apiclient, zoneid, ostype, services=None):
+ "Returns a template"
+
+ cmd = listOsTypes.listOsTypesCmd()
+ cmd.description = ostype
+ ostypes = apiclient.listOsTypes(cmd)
+
+ if isinstance(ostypes, list):
+ ostypeid = ostypes[0].id
+ else:
+ raise Exception(
+ "Failed to find OS type with description: %s" % ostype)
+
+ cmd = listTemplates.listTemplatesCmd()
+ cmd.templatefilter = 'featured'
+ cmd.zoneid = zoneid
+
+ if services:
+ if "template" in services:
+ cmd.id = services["template"]
+
+ list_templates = apiclient.listTemplates(cmd)
+
+ if isinstance(list_templates, list):
+ assert len(list_templates) > 0, "received empty response on template of type %s"%ostype
+ for template in list_templates:
+ if template.ostypeid == ostypeid:
+ return template
++ elif template.isready:
++ return template
+
+ raise Exception("Exception: Failed to find template with OSTypeID: %s" %
+ ostypeid)
+ return
+
+
+def download_systemplates_sec_storage(server, services):
+ """Download System templates on sec storage"""
+
+ try:
+ # Login to management server
+ ssh = remoteSSHClient(
+ server["ipaddress"],
+ server["port"],
+ server["username"],
+ server["password"]
+ )
+ except Exception:
+ raise Exception("SSH access failted for server with IP address: %s" %
+ server["ipaddess"])
+ # Mount Secondary Storage on Management Server
+ cmds = [
+ "mkdir -p %s" % services["mnt_dir"],
+ "mount -t nfs %s:/%s %s" % (
+ services["sec_storage"],
+ services["path"],
+ services["mnt_dir"]
+ ),
+ "%s -m %s -u %s -h %s -F" % (
+ services["command"],
+ services["mnt_dir"],
+ services["download_url"],
+ services["hypervisor"]
+ )
+ ]
+ for c in cmds:
+ result = ssh.execute(c)
+
+ res = str(result)
+
+ # Unmount the Secondary storage
+ ssh.execute("umount %s" % (services["mnt_dir"]))
+
+ if res.count("Successfully installed system VM template") == 1:
+ return
+ else:
+ raise Exception("Failed to download System Templates on Sec Storage")
+ return
+
+
+def wait_for_ssvms(apiclient, zoneid, podid, interval=60):
+ """After setup wait for SSVMs to come Up"""
+
+ time.sleep(interval)
+ timeout = 40
+ while True:
+ list_ssvm_response = list_ssvms(
+ apiclient,
+ systemvmtype='secondarystoragevm',
+ zoneid=zoneid,
+ podid=podid
+ )
+ ssvm = list_ssvm_response[0]
+ if ssvm.state != 'Running':
+ # Sleep to ensure SSVMs are Up and Running
+ time.sleep(interval)
+ timeout = timeout - 1
+ elif ssvm.state == 'Running':
+ break
+ elif timeout == 0:
+ raise Exception("SSVM failed to come up")
+ break
+
+ timeout = 40
+ while True:
+ list_ssvm_response = list_ssvms(
+ apiclient,
+ systemvmtype='consoleproxy',
+ zoneid=zoneid,
+ podid=podid
+ )
+ cpvm = list_ssvm_response[0]
+ if cpvm.state != 'Running':
+ # Sleep to ensure SSVMs are Up and Running
+ time.sleep(interval)
+ timeout = timeout - 1
+ elif cpvm.state == 'Running':
+ break
+ elif timeout == 0:
+ raise Exception("CPVM failed to come up")
+ break
+ return
+
+
+def download_builtin_templates(apiclient, zoneid, hypervisor, host,
+ linklocalip, interval=60):
+ """After setup wait till builtin templates are downloaded"""
+
+ # Change IPTABLES Rules
+ get_process_status(
+ host["ipaddress"],
+ host["port"],
+ host["username"],
+ host["password"],
+ linklocalip,
+ "iptables -P INPUT ACCEPT"
+ )
+ time.sleep(interval)
+ # Find the BUILTIN Templates for given Zone, Hypervisor
+ list_template_response = list_templates(
+ apiclient,
+ hypervisor=hypervisor,
+ zoneid=zoneid,
+ templatefilter='self'
+ )
+
+ if not isinstance(list_template_response, list):
+ raise Exception("Failed to download BUILTIN templates")
+
+ # Ensure all BUILTIN templates are downloaded
+ templateid = None
+ for template in list_template_response:
+ if template.templatetype == "BUILTIN":
+ templateid = template.id
+
+ # Sleep to ensure that template is in downloading state after adding
+ # Sec storage
+ time.sleep(interval)
+ while True:
+ template_response = list_templates(
+ apiclient,
+ id=templateid,
+ zoneid=zoneid,
+ templatefilter='self'
+ )
+ template = template_response[0]
+ # If template is ready,
+ # template.status = Download Complete
+ # Downloading - x% Downloaded
+ # Error - Any other string
+ if template.status == 'Download Complete':
+ break
+
+ elif 'Downloaded' in template.status:
+ time.sleep(interval)
+
+ elif 'Installing' not in template.status:
+ raise Exception("ErrorInDownload")
+
+ return
+
+
+def update_resource_limit(apiclient, resourcetype, account=None,
+ domainid=None, max=None, projectid=None):
+ """Updates the resource limit to 'max' for given account"""
+
+ cmd = updateResourceLimit.updateResourceLimitCmd()
+ cmd.resourcetype = resourcetype
+ if account:
+ cmd.account = account
+ if domainid:
+ cmd.domainid = domainid
+ if max:
+ cmd.max = max
+ if projectid:
+ cmd.projectid = projectid
+ apiclient.updateResourceLimit(cmd)
+ return
+
+
+def list_os_types(apiclient, **kwargs):
+ """List all os types matching criteria"""
+
+ cmd = listOsTypes.listOsTypesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listOsTypes(cmd))
+
+
+def list_routers(apiclient, **kwargs):
+ """List all Routers matching criteria"""
+
+ cmd = listRouters.listRoutersCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listRouters(cmd))
+
+
+def list_zones(apiclient, **kwargs):
+ """List all Zones matching criteria"""
+
+ cmd = listZones.listZonesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listZones(cmd))
+
+
+def list_networks(apiclient, **kwargs):
+ """List all Networks matching criteria"""
+
+ cmd = listNetworks.listNetworksCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listNetworks(cmd))
+
+
+def list_clusters(apiclient, **kwargs):
+ """List all Clusters matching criteria"""
+
+ cmd = listClusters.listClustersCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listClusters(cmd))
+
+
+def list_ssvms(apiclient, **kwargs):
+ """List all SSVMs matching criteria"""
+
+ cmd = listSystemVms.listSystemVmsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listSystemVms(cmd))
+
+
+def list_storage_pools(apiclient, **kwargs):
+ """List all storage pools matching criteria"""
+
+ cmd = listStoragePools.listStoragePoolsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listStoragePools(cmd))
+
+
+def list_virtual_machines(apiclient, **kwargs):
+ """List all VMs matching criteria"""
+
+ cmd = listVirtualMachines.listVirtualMachinesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listVirtualMachines(cmd))
+
+
+def list_hosts(apiclient, **kwargs):
+ """List all Hosts matching criteria"""
+
+ cmd = listHosts.listHostsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listHosts(cmd))
+
+
+def list_configurations(apiclient, **kwargs):
+ """List configuration with specified name"""
+
+ cmd = listConfigurations.listConfigurationsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listConfigurations(cmd))
+
+
+def list_publicIP(apiclient, **kwargs):
+ """List all Public IPs matching criteria"""
+
+ cmd = listPublicIpAddresses.listPublicIpAddressesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listPublicIpAddresses(cmd))
+
+
+def list_nat_rules(apiclient, **kwargs):
+ """List all NAT rules matching criteria"""
+
+ cmd = listPortForwardingRules.listPortForwardingRulesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listPortForwardingRules(cmd))
+
+
+def list_lb_rules(apiclient, **kwargs):
+ """List all Load balancing rules matching criteria"""
+
+ cmd = listLoadBalancerRules.listLoadBalancerRulesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listLoadBalancerRules(cmd))
+
+
+def list_lb_instances(apiclient, **kwargs):
+ """List all Load balancing instances matching criteria"""
+
+ cmd = listLoadBalancerRuleInstances.listLoadBalancerRuleInstancesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listLoadBalancerRuleInstances(cmd))
+
+
+def list_firewall_rules(apiclient, **kwargs):
+ """List all Firewall Rules matching criteria"""
+
+ cmd = listFirewallRules.listFirewallRulesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listFirewallRules(cmd))
+
+
+def list_volumes(apiclient, **kwargs):
+ """List all volumes matching criteria"""
+
+ cmd = listVolumes.listVolumesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listVolumes(cmd))
+
+
+def list_isos(apiclient, **kwargs):
+ """Lists all available ISO files."""
+
+ cmd = listIsos.listIsosCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listIsos(cmd))
+
+
+def list_snapshots(apiclient, **kwargs):
+ """List all snapshots matching criteria"""
+
+ cmd = listSnapshots.listSnapshotsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listSnapshots(cmd))
+
+
+def list_templates(apiclient, **kwargs):
+ """List all templates matching criteria"""
+
+ cmd = listTemplates.listTemplatesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listTemplates(cmd))
+
+
+def list_domains(apiclient, **kwargs):
+ """Lists domains"""
+
+ cmd = listDomains.listDomainsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listDomains(cmd))
+
+
+def list_accounts(apiclient, **kwargs):
+ """Lists accounts and provides detailed account information for
+ listed accounts"""
+
+ cmd = listAccounts.listAccountsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listAccounts(cmd))
+
+
+def list_users(apiclient, **kwargs):
+ """Lists users and provides detailed account information for
+ listed users"""
+
+ cmd = listUsers.listUsersCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listUsers(cmd))
+
+
+def list_snapshot_policy(apiclient, **kwargs):
+ """Lists snapshot policies."""
+
+ cmd = listSnapshotPolicies.listSnapshotPoliciesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listSnapshotPolicies(cmd))
+
+
+def list_events(apiclient, **kwargs):
+ """Lists events"""
+
+ cmd = listEvents.listEventsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listEvents(cmd))
+
+
+def list_disk_offering(apiclient, **kwargs):
+ """Lists all available disk offerings."""
+
+ cmd = listDiskOfferings.listDiskOfferingsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listDiskOfferings(cmd))
+
+
+def list_service_offering(apiclient, **kwargs):
+ """Lists all available service offerings."""
+
+ cmd = listServiceOfferings.listServiceOfferingsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listServiceOfferings(cmd))
+
+
+def list_vlan_ipranges(apiclient, **kwargs):
+ """Lists all VLAN IP ranges."""
+
+ cmd = listVlanIpRanges.listVlanIpRangesCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listVlanIpRanges(cmd))
+
+
+def list_usage_records(apiclient, **kwargs):
+ """Lists usage records for accounts"""
+
+ cmd = listUsageRecords.listUsageRecordsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listUsageRecords(cmd))
+
+
+def list_nw_service_prividers(apiclient, **kwargs):
+ """Lists Network service providers"""
+
+ cmd = listNetworkServiceProviders.listNetworkServiceProvidersCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listNetworkServiceProviders(cmd))
+
+
+def list_virtual_router_elements(apiclient, **kwargs):
+ """Lists Virtual Router elements"""
+
+ cmd = listVirtualRouterElements.listVirtualRouterElementsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listVirtualRouterElements(cmd))
+
+
+def list_network_offerings(apiclient, **kwargs):
+ """Lists network offerings"""
+
+ cmd = listNetworkOfferings.listNetworkOfferingsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listNetworkOfferings(cmd))
+
+
+def list_resource_limits(apiclient, **kwargs):
+ """Lists resource limits"""
+
+ cmd = listResourceLimits.listResourceLimitsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
+ return(apiclient.listResourceLimits(cmd))
+
+def list_vpc_offerings(apiclient, **kwargs):
+ """ Lists VPC offerings """
+
+ cmd = listVPCOfferings.listVPCOfferingsCmd()
+ [setattr(cmd, k, v) for k, v in kwargs.items()]
- return(apiclient.listVPCOfferings(cmd))
++ return(apiclient.listVPCOfferings(cmd))
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b5fe9a9/ui/scripts/zoneWizard.js
----------------------------------------------------------------------