You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/11/08 19:08:31 UTC

[15/76] [abbrv] CLOUSTACK-5099: Utils.py-has-wrong-reference, cleaned it. As well added Uniform naming convention Signed-off-by: SrikanteswaraRao Talluri

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listNics.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listNics.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listNics.py
new file mode 100644
index 0000000..d2a663a
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listNics.py
@@ -0,0 +1,72 @@
+# 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.
+
+
+"""list the vm nics  IP to NIC"""
+from baseCmd import *
+from baseResponse import *
+class listNicsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """the ID of the vm"""
+        """Required"""
+        self.virtualmachineid = None
+        """List by keyword"""
+        self.keyword = None
+        """the ID of the nic to to list IPs"""
+        self.nicid = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        self.required = ["virtualmachineid",]
+
+class listNicsResponse (baseResponse):
+    def __init__(self):
+        """the ID of the nic"""
+        self.id = None
+        """the broadcast uri of the nic"""
+        self.broadcasturi = None
+        """the gateway of the nic"""
+        self.gateway = None
+        """the IPv6 address of network"""
+        self.ip6address = None
+        """the cidr of IPv6 network"""
+        self.ip6cidr = None
+        """the gateway of IPv6 network"""
+        self.ip6gateway = None
+        """the ip address of the nic"""
+        self.ipaddress = None
+        """true if nic is default, false otherwise"""
+        self.isdefault = None
+        """the isolation uri of the nic"""
+        self.isolationuri = None
+        """true if nic is default, false otherwise"""
+        self.macaddress = None
+        """the netmask of the nic"""
+        self.netmask = None
+        """the ID of the corresponding network"""
+        self.networkid = None
+        """the name of the corresponding network"""
+        self.networkname = None
+        """the Secondary ipv4 addr of nic"""
+        self.secondaryip = None
+        """the traffic type of the nic"""
+        self.traffictype = None
+        """the type of the nic"""
+        self.type = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listOsCategories.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listOsCategories.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listOsCategories.py
new file mode 100644
index 0000000..6289315
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listOsCategories.py
@@ -0,0 +1,43 @@
+# 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.
+
+
+"""Lists all supported OS categories for this cloud."""
+from baseCmd import *
+from baseResponse import *
+class listOsCategoriesCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list Os category by id"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """list os category by name"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        self.required = []
+
+class listOsCategoriesResponse (baseResponse):
+    def __init__(self):
+        """the ID of the OS category"""
+        self.id = None
+        """the name of the OS category"""
+        self.name = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listOsTypes.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listOsTypes.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listOsTypes.py
new file mode 100644
index 0000000..426a32d
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listOsTypes.py
@@ -0,0 +1,47 @@
+# 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.
+
+
+"""Lists all supported OS types for this cloud."""
+from baseCmd import *
+from baseResponse import *
+class listOsTypesCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list os by description"""
+        self.description = None
+        """list by Os type Id"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """list by Os Category id"""
+        self.oscategoryid = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        self.required = []
+
+class listOsTypesResponse (baseResponse):
+    def __init__(self):
+        """the ID of the OS type"""
+        self.id = None
+        """the name/description of the OS type"""
+        self.description = None
+        """the ID of the OS category"""
+        self.oscategoryid = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPhysicalNetworks.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPhysicalNetworks.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPhysicalNetworks.py
new file mode 100644
index 0000000..4cc7164
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPhysicalNetworks.py
@@ -0,0 +1,61 @@
+# 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.
+
+
+"""Lists physical networks"""
+from baseCmd import *
+from baseResponse import *
+class listPhysicalNetworksCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list physical network by id"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """search by name"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """the Zone ID for the physical network"""
+        self.zoneid = None
+        self.required = []
+
+class listPhysicalNetworksResponse (baseResponse):
+    def __init__(self):
+        """the uuid of the physical network"""
+        self.id = None
+        """Broadcast domain range of the physical network"""
+        self.broadcastdomainrange = None
+        """the domain id of the physical network owner"""
+        self.domainid = None
+        """isolation methods"""
+        self.isolationmethods = None
+        """name of the physical network"""
+        self.name = None
+        """the speed of the physical network"""
+        self.networkspeed = None
+        """state of the physical network"""
+        self.state = None
+        """comma separated tag"""
+        self.tags = None
+        """the vlan of the physical network"""
+        self.vlan = None
+        """zone id of the physical network"""
+        self.zoneid = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPods.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPods.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPods.py
new file mode 100644
index 0000000..64868d9
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPods.py
@@ -0,0 +1,88 @@
+# 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.
+
+
+"""Lists all Pods."""
+from baseCmd import *
+from baseResponse import *
+class listPodsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list pods by allocation state"""
+        self.allocationstate = None
+        """list Pods by ID"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """list Pods by name"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """flag to display the capacity of the pods"""
+        self.showcapacities = None
+        """list Pods by Zone ID"""
+        self.zoneid = None
+        self.required = []
+
+class listPodsResponse (baseResponse):
+    def __init__(self):
+        """the ID of the Pod"""
+        self.id = None
+        """the allocation state of the Pod"""
+        self.allocationstate = None
+        """the ending IP for the Pod"""
+        self.endip = None
+        """the gateway of the Pod"""
+        self.gateway = None
+        """the name of the Pod"""
+        self.name = None
+        """the netmask of the Pod"""
+        self.netmask = None
+        """the starting IP for the Pod"""
+        self.startip = None
+        """the Zone ID of the Pod"""
+        self.zoneid = None
+        """the Zone name of the Pod"""
+        self.zonename = None
+        """the capacity of the Pod"""
+        self.capacity = []
+
+class capacity:
+    def __init__(self):
+        """"the total capacity available"""
+        self.capacitytotal = None
+        """"the capacity currently in use"""
+        self.capacityused = None
+        """"the Cluster ID"""
+        self.clusterid = None
+        """"the Cluster name"""
+        self.clustername = None
+        """"the percentage of capacity currently in use"""
+        self.percentused = None
+        """"the Pod ID"""
+        self.podid = None
+        """"the Pod name"""
+        self.podname = None
+        """"the capacity type"""
+        self.type = None
+        """"the Zone ID"""
+        self.zoneid = None
+        """"the Zone name"""
+        self.zonename = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPortForwardingRules.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPortForwardingRules.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPortForwardingRules.py
new file mode 100644
index 0000000..02e9666
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPortForwardingRules.py
@@ -0,0 +1,104 @@
+# 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.
+
+
+"""Lists all port forwarding rules for an IP address."""
+from baseCmd import *
+from baseResponse import *
+class listPortForwardingRulesCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """Lists rule with the specified ID."""
+        self.id = None
+        """the id of IP address of the port forwarding services"""
+        self.ipaddressid = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        """List resources by tags (key/value pairs)"""
+        self.tags = []
+        self.required = []
+
+class listPortForwardingRulesResponse (baseResponse):
+    def __init__(self):
+        """the ID of the port forwarding rule"""
+        self.id = None
+        """the cidr list to forward traffic from"""
+        self.cidrlist = None
+        """the public ip address for the port forwarding rule"""
+        self.ipaddress = None
+        """the public ip address id for the port forwarding rule"""
+        self.ipaddressid = None
+        """the ending port of port forwarding rule's private port range"""
+        self.privateendport = None
+        """the starting port of port forwarding rule's private port range"""
+        self.privateport = None
+        """the protocol of the port forwarding rule"""
+        self.protocol = None
+        """the ending port of port forwarding rule's private port range"""
+        self.publicendport = None
+        """the starting port of port forwarding rule's public port range"""
+        self.publicport = None
+        """the state of the rule"""
+        self.state = None
+        """the VM display name for the port forwarding rule"""
+        self.virtualmachinedisplayname = None
+        """the VM ID for the port forwarding rule"""
+        self.virtualmachineid = None
+        """the VM name for the port forwarding rule"""
+        self.virtualmachinename = None
+        """the vm ip address for the port forwarding rule"""
+        self.vmguestip = None
+        """the list of resource tags associated with the rule"""
+        self.tags = []
+
+class tags:
+    def __init__(self):
+        """"the account associated with the tag"""
+        self.account = None
+        """"customer associated with the tag"""
+        self.customer = None
+        """"the domain associated with the tag"""
+        self.domain = None
+        """"the ID of the domain associated with the tag"""
+        self.domainid = None
+        """"tag key name"""
+        self.key = None
+        """"the project name where tag belongs to"""
+        self.project = None
+        """"the project id the tag belongs to"""
+        self.projectid = None
+        """"id of the resource"""
+        self.resourceid = None
+        """"resource type"""
+        self.resourcetype = None
+        """"tag value"""
+        self.value = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPortableIpRanges.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPortableIpRanges.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPortableIpRanges.py
new file mode 100644
index 0000000..8f1c4d9
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPortableIpRanges.py
@@ -0,0 +1,78 @@
+# 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.
+
+
+"""list portable IP ranges"""
+from baseCmd import *
+from baseResponse import *
+class listPortableIpRangesCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """Id of the portable ip range"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """Id of a Region"""
+        self.regionid = None
+        self.required = []
+
+class listPortableIpRangesResponse (baseResponse):
+    def __init__(self):
+        """portable IP range ID"""
+        self.id = None
+        """the end ip of the portable IP range"""
+        self.endip = None
+        """the gateway of the VLAN IP range"""
+        self.gateway = None
+        """the netmask of the VLAN IP range"""
+        self.netmask = None
+        """Region Id in which portable ip range is provisioned"""
+        self.regionid = None
+        """the start ip of the portable IP range"""
+        self.startip = None
+        """the ID or VID of the VLAN."""
+        self.vlan = None
+        """List of portable IP and association with zone/network/vpc details that are part of GSLB rule"""
+        self.portableipaddress = []
+
+class portableipaddress:
+    def __init__(self):
+        """"the account ID the portable IP address is associated with"""
+        self.accountid = None
+        """"date the portal IP address was acquired"""
+        self.allocated = None
+        """"the domain ID the portable IP address is associated with"""
+        self.domainid = None
+        """"public IP address"""
+        self.ipaddress = None
+        """"the ID of the Network where ip belongs to"""
+        self.networkid = None
+        """"the physical network this belongs to"""
+        self.physicalnetworkid = None
+        """"Region Id in which global load balancer is created"""
+        self.regionid = None
+        """"State of the ip address. Can be: Allocatin, Allocated and Releasing"""
+        self.state = None
+        """"VPC the ip belongs to"""
+        self.vpcid = None
+        """"the ID of the zone the public IP address belongs to"""
+        self.zoneid = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPrivateGateways.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPrivateGateways.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPrivateGateways.py
new file mode 100644
index 0000000..86695f2
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPrivateGateways.py
@@ -0,0 +1,89 @@
+# 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.
+
+
+"""List private gateways"""
+from baseCmd import *
+from baseResponse import *
+class listPrivateGatewaysCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """list private gateway by id"""
+        self.id = None
+        """list gateways by ip address"""
+        self.ipaddress = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        """list gateways by state"""
+        self.state = None
+        """list gateways by vlan"""
+        self.vlan = None
+        """list gateways by vpc"""
+        self.vpcid = None
+        self.required = []
+
+class listPrivateGatewaysResponse (baseResponse):
+    def __init__(self):
+        """the id of the private gateway"""
+        self.id = None
+        """the account associated with the private gateway"""
+        self.account = None
+        """ACL Id set for private gateway"""
+        self.aclid = None
+        """the domain associated with the private gateway"""
+        self.domain = None
+        """the ID of the domain associated with the private gateway"""
+        self.domainid = None
+        """the gateway"""
+        self.gateway = None
+        """the private gateway's ip address"""
+        self.ipaddress = None
+        """the private gateway's netmask"""
+        self.netmask = None
+        """the physical network id"""
+        self.physicalnetworkid = None
+        """the project name of the private gateway"""
+        self.project = None
+        """the project id of the private gateway"""
+        self.projectid = None
+        """Souce Nat enable status"""
+        self.sourcenatsupported = None
+        """State of the gateway, can be Creating, Ready, Deleting"""
+        self.state = None
+        """the network implementation uri for the private gateway"""
+        self.vlan = None
+        """VPC the private gateaway belongs to"""
+        self.vpcid = None
+        """zone id of the private gateway"""
+        self.zoneid = None
+        """the name of the zone the private gateway belongs to"""
+        self.zonename = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectAccounts.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectAccounts.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectAccounts.py
new file mode 100644
index 0000000..2b085c3
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectAccounts.py
@@ -0,0 +1,151 @@
+# 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.
+
+
+"""Lists project's accounts"""
+from baseCmd import *
+from baseResponse import *
+class listProjectAccountsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """id of the project"""
+        """Required"""
+        self.projectid = None
+        """list accounts of the project by account name"""
+        self.account = None
+        """List by keyword"""
+        self.keyword = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list accounts of the project by role"""
+        self.role = None
+        self.required = ["projectid",]
+
+class listProjectAccountsResponse (baseResponse):
+    def __init__(self):
+        """the id of the project"""
+        self.id = None
+        """the account name of the project's owner"""
+        self.account = None
+        """the total number of cpu cores available to be created for this project"""
+        self.cpuavailable = None
+        """the total number of cpu cores the project can own"""
+        self.cpulimit = None
+        """the total number of cpu cores owned by project"""
+        self.cputotal = None
+        """the displaytext of the project"""
+        self.displaytext = None
+        """the domain name where the project belongs to"""
+        self.domain = None
+        """the domain id the project belongs to"""
+        self.domainid = None
+        """the total number of public ip addresses available for this project to acquire"""
+        self.ipavailable = None
+        """the total number of public ip addresses this project can acquire"""
+        self.iplimit = None
+        """the total number of public ip addresses allocated for this project"""
+        self.iptotal = None
+        """the total memory (in MB) available to be created for this project"""
+        self.memoryavailable = None
+        """the total memory (in MB) the project can own"""
+        self.memorylimit = None
+        """the total memory (in MB) owned by project"""
+        self.memorytotal = None
+        """the name of the project"""
+        self.name = None
+        """the total number of networks available to be created for this project"""
+        self.networkavailable = None
+        """the total number of networks the project can own"""
+        self.networklimit = None
+        """the total number of networks owned by project"""
+        self.networktotal = None
+        """the total primary storage space (in GiB) available to be used for this project"""
+        self.primarystorageavailable = None
+        """the total primary storage space (in GiB) the project can own"""
+        self.primarystoragelimit = None
+        """the total primary storage space (in GiB) owned by project"""
+        self.primarystoragetotal = None
+        """the total secondary storage space (in GiB) available to be used for this project"""
+        self.secondarystorageavailable = None
+        """the total secondary storage space (in GiB) the project can own"""
+        self.secondarystoragelimit = None
+        """the total secondary storage space (in GiB) owned by project"""
+        self.secondarystoragetotal = None
+        """the total number of snapshots available for this project"""
+        self.snapshotavailable = None
+        """the total number of snapshots which can be stored by this project"""
+        self.snapshotlimit = None
+        """the total number of snapshots stored by this project"""
+        self.snapshottotal = None
+        """the state of the project"""
+        self.state = None
+        """the total number of templates available to be created by this project"""
+        self.templateavailable = None
+        """the total number of templates which can be created by this project"""
+        self.templatelimit = None
+        """the total number of templates which have been created by this project"""
+        self.templatetotal = None
+        """the total number of virtual machines available for this project to acquire"""
+        self.vmavailable = None
+        """the total number of virtual machines that can be deployed by this project"""
+        self.vmlimit = None
+        """the total number of virtual machines running for this project"""
+        self.vmrunning = None
+        """the total number of virtual machines stopped for this project"""
+        self.vmstopped = None
+        """the total number of virtual machines deployed by this project"""
+        self.vmtotal = None
+        """the total volume available for this project"""
+        self.volumeavailable = None
+        """the total volume which can be used by this project"""
+        self.volumelimit = None
+        """the total volume being used by this project"""
+        self.volumetotal = None
+        """the total number of vpcs available to be created for this project"""
+        self.vpcavailable = None
+        """the total number of vpcs the project can own"""
+        self.vpclimit = None
+        """the total number of vpcs owned by project"""
+        self.vpctotal = None
+        """the list of resource tags associated with vm"""
+        self.tags = []
+
+class tags:
+    def __init__(self):
+        """"the account associated with the tag"""
+        self.account = None
+        """"customer associated with the tag"""
+        self.customer = None
+        """"the domain associated with the tag"""
+        self.domain = None
+        """"the ID of the domain associated with the tag"""
+        self.domainid = None
+        """"tag key name"""
+        self.key = None
+        """"the project name where tag belongs to"""
+        self.project = None
+        """"the project id the tag belongs to"""
+        self.projectid = None
+        """"id of the resource"""
+        self.resourceid = None
+        """"resource type"""
+        self.resourcetype = None
+        """"tag value"""
+        self.value = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectInvitations.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectInvitations.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectInvitations.py
new file mode 100644
index 0000000..a5ef32b
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjectInvitations.py
@@ -0,0 +1,67 @@
+# 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.
+
+
+"""Lists projects and provides detailed information for listed projects"""
+from baseCmd import *
+from baseResponse import *
+class listProjectInvitationsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """if true, list only active invitations - having Pending state and ones that are not timed out yet"""
+        self.activeonly = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """list invitations by id"""
+        self.id = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list by project id"""
+        self.projectid = None
+        """list invitations by state"""
+        self.state = None
+        self.required = []
+
+class listProjectInvitationsResponse (baseResponse):
+    def __init__(self):
+        """the id of the invitation"""
+        self.id = None
+        """the account name of the project's owner"""
+        self.account = None
+        """the domain name where the project belongs to"""
+        self.domain = None
+        """the domain id the project belongs to"""
+        self.domainid = None
+        """the email the invitation was sent to"""
+        self.email = None
+        """the name of the project"""
+        self.project = None
+        """the id of the project"""
+        self.projectid = None
+        """the invitation state"""
+        self.state = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listProjects.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listProjects.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjects.py
new file mode 100644
index 0000000..a60d355
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listProjects.py
@@ -0,0 +1,162 @@
+# 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.
+
+
+"""Lists projects and provides detailed information for listed projects"""
+from baseCmd import *
+from baseResponse import *
+class listProjectsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list projects by display text"""
+        self.displaytext = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """list projects by project ID"""
+        self.id = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """list projects by name"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list projects by state"""
+        self.state = None
+        """List projects by tags (key/value pairs)"""
+        self.tags = []
+        self.required = []
+
+class listProjectsResponse (baseResponse):
+    def __init__(self):
+        """the id of the project"""
+        self.id = None
+        """the account name of the project's owner"""
+        self.account = None
+        """the total number of cpu cores available to be created for this project"""
+        self.cpuavailable = None
+        """the total number of cpu cores the project can own"""
+        self.cpulimit = None
+        """the total number of cpu cores owned by project"""
+        self.cputotal = None
+        """the displaytext of the project"""
+        self.displaytext = None
+        """the domain name where the project belongs to"""
+        self.domain = None
+        """the domain id the project belongs to"""
+        self.domainid = None
+        """the total number of public ip addresses available for this project to acquire"""
+        self.ipavailable = None
+        """the total number of public ip addresses this project can acquire"""
+        self.iplimit = None
+        """the total number of public ip addresses allocated for this project"""
+        self.iptotal = None
+        """the total memory (in MB) available to be created for this project"""
+        self.memoryavailable = None
+        """the total memory (in MB) the project can own"""
+        self.memorylimit = None
+        """the total memory (in MB) owned by project"""
+        self.memorytotal = None
+        """the name of the project"""
+        self.name = None
+        """the total number of networks available to be created for this project"""
+        self.networkavailable = None
+        """the total number of networks the project can own"""
+        self.networklimit = None
+        """the total number of networks owned by project"""
+        self.networktotal = None
+        """the total primary storage space (in GiB) available to be used for this project"""
+        self.primarystorageavailable = None
+        """the total primary storage space (in GiB) the project can own"""
+        self.primarystoragelimit = None
+        """the total primary storage space (in GiB) owned by project"""
+        self.primarystoragetotal = None
+        """the total secondary storage space (in GiB) available to be used for this project"""
+        self.secondarystorageavailable = None
+        """the total secondary storage space (in GiB) the project can own"""
+        self.secondarystoragelimit = None
+        """the total secondary storage space (in GiB) owned by project"""
+        self.secondarystoragetotal = None
+        """the total number of snapshots available for this project"""
+        self.snapshotavailable = None
+        """the total number of snapshots which can be stored by this project"""
+        self.snapshotlimit = None
+        """the total number of snapshots stored by this project"""
+        self.snapshottotal = None
+        """the state of the project"""
+        self.state = None
+        """the total number of templates available to be created by this project"""
+        self.templateavailable = None
+        """the total number of templates which can be created by this project"""
+        self.templatelimit = None
+        """the total number of templates which have been created by this project"""
+        self.templatetotal = None
+        """the total number of virtual machines available for this project to acquire"""
+        self.vmavailable = None
+        """the total number of virtual machines that can be deployed by this project"""
+        self.vmlimit = None
+        """the total number of virtual machines running for this project"""
+        self.vmrunning = None
+        """the total number of virtual machines stopped for this project"""
+        self.vmstopped = None
+        """the total number of virtual machines deployed by this project"""
+        self.vmtotal = None
+        """the total volume available for this project"""
+        self.volumeavailable = None
+        """the total volume which can be used by this project"""
+        self.volumelimit = None
+        """the total volume being used by this project"""
+        self.volumetotal = None
+        """the total number of vpcs available to be created for this project"""
+        self.vpcavailable = None
+        """the total number of vpcs the project can own"""
+        self.vpclimit = None
+        """the total number of vpcs owned by project"""
+        self.vpctotal = None
+        """the list of resource tags associated with vm"""
+        self.tags = []
+
+class tags:
+    def __init__(self):
+        """"the account associated with the tag"""
+        self.account = None
+        """"customer associated with the tag"""
+        self.customer = None
+        """"the domain associated with the tag"""
+        self.domain = None
+        """"the ID of the domain associated with the tag"""
+        self.domainid = None
+        """"tag key name"""
+        self.key = None
+        """"the project name where tag belongs to"""
+        self.project = None
+        """"the project id the tag belongs to"""
+        self.projectid = None
+        """"id of the resource"""
+        self.resourceid = None
+        """"resource type"""
+        self.resourcetype = None
+        """"tag value"""
+        self.value = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listPublicIpAddresses.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listPublicIpAddresses.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listPublicIpAddresses.py
new file mode 100644
index 0000000..79913f8
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listPublicIpAddresses.py
@@ -0,0 +1,156 @@
+# 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.
+
+
+"""Lists all public ip addresses"""
+from baseCmd import *
+from baseResponse import *
+class listPublicIpAddressesCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """limits search results to allocated public IP addresses"""
+        self.allocatedonly = None
+        """lists all public IP addresses associated to the network specified"""
+        self.associatednetworkid = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """list only ips used for load balancing"""
+        self.forloadbalancing = None
+        """the virtual network for the IP address"""
+        self.forvirtualnetwork = None
+        """lists ip address by id"""
+        self.id = None
+        """lists the specified IP address"""
+        self.ipaddress = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """list only source nat ip addresses"""
+        self.issourcenat = None
+        """list only static nat ip addresses"""
+        self.isstaticnat = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """lists all public IP addresses by physical network id"""
+        self.physicalnetworkid = None
+        """list objects by project"""
+        self.projectid = None
+        """List resources by tags (key/value pairs)"""
+        self.tags = []
+        """lists all public IP addresses by VLAN ID"""
+        self.vlanid = None
+        """List ips belonging to the VPC"""
+        self.vpcid = None
+        """lists all public IP addresses by Zone ID"""
+        self.zoneid = None
+        self.required = []
+
+class listPublicIpAddressesResponse (baseResponse):
+    def __init__(self):
+        """public IP address id"""
+        self.id = None
+        """the account the public IP address is associated with"""
+        self.account = None
+        """date the public IP address was acquired"""
+        self.allocated = None
+        """the ID of the Network associated with the IP address"""
+        self.associatednetworkid = None
+        """the name of the Network associated with the IP address"""
+        self.associatednetworkname = None
+        """the domain the public IP address is associated with"""
+        self.domain = None
+        """the domain ID the public IP address is associated with"""
+        self.domainid = None
+        """the virtual network for the IP address"""
+        self.forvirtualnetwork = None
+        """public IP address"""
+        self.ipaddress = None
+        """is public IP portable across the zones"""
+        self.isportable = None
+        """true if the IP address is a source nat address, false otherwise"""
+        self.issourcenat = None
+        """true if this ip is for static nat, false otherwise"""
+        self.isstaticnat = None
+        """true if this ip is system ip (was allocated as a part of deployVm or createLbRule)"""
+        self.issystem = None
+        """the ID of the Network where ip belongs to"""
+        self.networkid = None
+        """the physical network this belongs to"""
+        self.physicalnetworkid = None
+        """the project name of the address"""
+        self.project = None
+        """the project id of the ipaddress"""
+        self.projectid = None
+        """purpose of the IP address. In Acton this value is not null for Ips with isSystem=true, and can have either StaticNat or LB value"""
+        self.purpose = None
+        """State of the ip address. Can be: Allocatin, Allocated and Releasing"""
+        self.state = None
+        """virutal machine display name the ip address is assigned to (not null only for static nat Ip)"""
+        self.virtualmachinedisplayname = None
+        """virutal machine id the ip address is assigned to (not null only for static nat Ip)"""
+        self.virtualmachineid = None
+        """virutal machine name the ip address is assigned to (not null only for static nat Ip)"""
+        self.virtualmachinename = None
+        """the ID of the VLAN associated with the IP address. This parameter is visible to ROOT admins only"""
+        self.vlanid = None
+        """the VLAN associated with the IP address"""
+        self.vlanname = None
+        """virutal machine (dnat) ip address (not null only for static nat Ip)"""
+        self.vmipaddress = None
+        """VPC the ip belongs to"""
+        self.vpcid = None
+        """the ID of the zone the public IP address belongs to"""
+        self.zoneid = None
+        """the name of the zone the public IP address belongs to"""
+        self.zonename = None
+        """the list of resource tags associated with ip address"""
+        self.tags = []
+        """the ID of the latest async job acting on this object"""
+        self.jobid = None
+        """the current status of the latest async job acting on this object"""
+        self.jobstatus = None
+
+class tags:
+    def __init__(self):
+        """"the account associated with the tag"""
+        self.account = None
+        """"customer associated with the tag"""
+        self.customer = None
+        """"the domain associated with the tag"""
+        self.domain = None
+        """"the ID of the domain associated with the tag"""
+        self.domainid = None
+        """"tag key name"""
+        self.key = None
+        """"the project name where tag belongs to"""
+        self.project = None
+        """"the project id the tag belongs to"""
+        self.projectid = None
+        """"id of the resource"""
+        self.resourceid = None
+        """"resource type"""
+        self.resourcetype = None
+        """"tag value"""
+        self.value = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listRegions.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listRegions.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listRegions.py
new file mode 100644
index 0000000..8549945
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listRegions.py
@@ -0,0 +1,49 @@
+# 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.
+
+
+"""Lists Regions"""
+from baseCmd import *
+from baseResponse import *
+class listRegionsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """List Region by region ID."""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """List Region by region name."""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        self.required = []
+
+class listRegionsResponse (baseResponse):
+    def __init__(self):
+        """the ID of the region"""
+        self.id = None
+        """the end point of the region"""
+        self.endpoint = None
+        """true if GSLB service is enabled in the region, false otherwise"""
+        self.gslbserviceenabled = None
+        """the name of the region"""
+        self.name = None
+        """true if security groups support is enabled, false otherwise"""
+        self.portableipserviceenabled = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listRemoteAccessVpns.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listRemoteAccessVpns.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listRemoteAccessVpns.py
new file mode 100644
index 0000000..dfedf4a
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listRemoteAccessVpns.py
@@ -0,0 +1,70 @@
+# 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.
+
+
+"""Lists remote access vpns"""
+from baseCmd import *
+from baseResponse import *
+class listRemoteAccessVpnsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """public ip address id of the vpn server"""
+        """Required"""
+        self.publicipid = None
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        self.required = ["publicipid",]
+
+class listRemoteAccessVpnsResponse (baseResponse):
+    def __init__(self):
+        """the id of the remote access vpn"""
+        self.id = None
+        """the account of the remote access vpn"""
+        self.account = None
+        """the domain name of the account of the remote access vpn"""
+        self.domain = None
+        """the domain id of the account of the remote access vpn"""
+        self.domainid = None
+        """the range of ips to allocate to the clients"""
+        self.iprange = None
+        """the ipsec preshared key"""
+        self.presharedkey = None
+        """the project name of the vpn"""
+        self.project = None
+        """the project id of the vpn"""
+        self.projectid = None
+        """the public ip address of the vpn server"""
+        self.publicip = None
+        """the public ip address of the vpn server"""
+        self.publicipid = None
+        """the state of the rule"""
+        self.state = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceDetails.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceDetails.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceDetails.py
new file mode 100644
index 0000000..133e489
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceDetails.py
@@ -0,0 +1,71 @@
+# 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.
+
+
+"""List resource detail(s)"""
+from baseCmd import *
+from baseResponse import *
+class listResourceDetailsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """list by key"""
+        self.key = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        """list by resource id"""
+        self.resourceid = None
+        """list by resource type"""
+        self.resourcetype = None
+        self.required = []
+
+class listResourceDetailsResponse (baseResponse):
+    def __init__(self):
+        """the account associated with the tag"""
+        self.account = None
+        """customer associated with the tag"""
+        self.customer = None
+        """the domain associated with the tag"""
+        self.domain = None
+        """the ID of the domain associated with the tag"""
+        self.domainid = None
+        """tag key name"""
+        self.key = None
+        """the project name where tag belongs to"""
+        self.project = None
+        """the project id the tag belongs to"""
+        self.projectid = None
+        """id of the resource"""
+        self.resourceid = None
+        """resource type"""
+        self.resourcetype = None
+        """tag value"""
+        self.value = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceLimits.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceLimits.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceLimits.py
new file mode 100644
index 0000000..d608f34
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listResourceLimits.py
@@ -0,0 +1,63 @@
+# 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.
+
+
+"""Lists resource limits."""
+from baseCmd import *
+from baseResponse import *
+class listResourceLimitsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """Lists resource limits by ID."""
+        self.id = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        """Type of resource to update. Values are 0, 1, 2, 3, and 4.0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses an account can own. 2 - Volume. Number of disk volumes an account can own.3 - Snapshot. Number of snapshots an account can own.4 - Template. Number of templates an account can register/create.5 - Project. Number of projects an account can own.6 - Network. Number of networks an account can own.7 - VPC. Number of VPC an account can own.8 - CPU. Number of CPU an account can allocate for his resources.9 - Memory. Amount of RAM an account can allocate for his resources.10 - Primary Storage. Amount of Primary storage an account can allocate for his resoruces.11 - Secondary Storage. Amount of Secondary storage an account can allocate for his resources."""
+        self.resourcetype = None
+        self.required = []
+
+class listResourceLimitsResponse (baseResponse):
+    def __init__(self):
+        """the account of the resource limit"""
+        self.account = None
+        """the domain name of the resource limit"""
+        self.domain = None
+        """the domain ID of the resource limit"""
+        self.domainid = None
+        """the maximum number of the resource. A -1 means the resource currently has no limit."""
+        self.max = None
+        """the project name of the resource limit"""
+        self.project = None
+        """the project id of the resource limit"""
+        self.projectid = None
+        """resource type. Values include 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11. See the resourceType parameter for more information on these values."""
+        self.resourcetype = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listRouters.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listRouters.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listRouters.py
new file mode 100644
index 0000000..a640aae
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listRouters.py
@@ -0,0 +1,182 @@
+# 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.
+
+
+"""List routers."""
+from baseCmd import *
+from baseResponse import *
+class listRoutersCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """if true is passed for this parameter, list only VPC routers"""
+        self.forvpc = None
+        """the host ID of the router"""
+        self.hostid = None
+        """the ID of the disk router"""
+        self.id = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """the name of the router"""
+        self.name = None
+        """list by network id"""
+        self.networkid = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """the Pod ID of the router"""
+        self.podid = None
+        """list objects by project"""
+        self.projectid = None
+        """the state of the router"""
+        self.state = None
+        """List networks by VPC"""
+        self.vpcid = None
+        """the Zone ID of the router"""
+        self.zoneid = None
+        self.required = []
+
+class listRoutersResponse (baseResponse):
+    def __init__(self):
+        """the id of the router"""
+        self.id = None
+        """the account associated with the router"""
+        self.account = None
+        """the date and time the router was created"""
+        self.created = None
+        """the first DNS for the router"""
+        self.dns1 = None
+        """the second DNS for the router"""
+        self.dns2 = None
+        """the domain associated with the router"""
+        self.domain = None
+        """the domain ID associated with the router"""
+        self.domainid = None
+        """the gateway for the router"""
+        self.gateway = None
+        """the guest IP address for the router"""
+        self.guestipaddress = None
+        """the guest MAC address for the router"""
+        self.guestmacaddress = None
+        """the guest netmask for the router"""
+        self.guestnetmask = None
+        """the ID of the corresponding guest network"""
+        self.guestnetworkid = None
+        """the host ID for the router"""
+        self.hostid = None
+        """the hostname for the router"""
+        self.hostname = None
+        """the first IPv6 DNS for the router"""
+        self.ip6dns1 = None
+        """the second IPv6 DNS for the router"""
+        self.ip6dns2 = None
+        """if this router is an redundant virtual router"""
+        self.isredundantrouter = None
+        """the link local IP address for the router"""
+        self.linklocalip = None
+        """the link local MAC address for the router"""
+        self.linklocalmacaddress = None
+        """the link local netmask for the router"""
+        self.linklocalnetmask = None
+        """the ID of the corresponding link local network"""
+        self.linklocalnetworkid = None
+        """the name of the router"""
+        self.name = None
+        """the network domain for the router"""
+        self.networkdomain = None
+        """the Pod ID for the router"""
+        self.podid = None
+        """the project name of the address"""
+        self.project = None
+        """the project id of the ipaddress"""
+        self.projectid = None
+        """the public IP address for the router"""
+        self.publicip = None
+        """the public MAC address for the router"""
+        self.publicmacaddress = None
+        """the public netmask for the router"""
+        self.publicnetmask = None
+        """the ID of the corresponding public network"""
+        self.publicnetworkid = None
+        """the state of redundant virtual router"""
+        self.redundantstate = None
+        """role of the domain router"""
+        self.role = None
+        """the version of scripts"""
+        self.scriptsversion = None
+        """the ID of the service offering of the virtual machine"""
+        self.serviceofferingid = None
+        """the name of the service offering of the virtual machine"""
+        self.serviceofferingname = None
+        """the state of the router"""
+        self.state = None
+        """the template ID for the router"""
+        self.templateid = None
+        """the version of template"""
+        self.templateversion = None
+        """VPC the router belongs to"""
+        self.vpcid = None
+        """the Zone ID for the router"""
+        self.zoneid = None
+        """the Zone name for the router"""
+        self.zonename = None
+        """the list of nics associated with the router"""
+        self.nic = []
+
+class nic:
+    def __init__(self):
+        """"the ID of the nic"""
+        self.id = None
+        """"the broadcast uri of the nic"""
+        self.broadcasturi = None
+        """"the gateway of the nic"""
+        self.gateway = None
+        """"the IPv6 address of network"""
+        self.ip6address = None
+        """"the cidr of IPv6 network"""
+        self.ip6cidr = None
+        """"the gateway of IPv6 network"""
+        self.ip6gateway = None
+        """"the ip address of the nic"""
+        self.ipaddress = None
+        """"true if nic is default, false otherwise"""
+        self.isdefault = None
+        """"the isolation uri of the nic"""
+        self.isolationuri = None
+        """"true if nic is default, false otherwise"""
+        self.macaddress = None
+        """"the netmask of the nic"""
+        self.netmask = None
+        """"the ID of the corresponding network"""
+        self.networkid = None
+        """"the name of the corresponding network"""
+        self.networkname = None
+        """"the Secondary ipv4 addr of nic"""
+        self.secondaryip = None
+        """"the traffic type of the nic"""
+        self.traffictype = None
+        """"the type of the nic"""
+        self.type = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listS3s.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listS3s.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listS3s.py
new file mode 100644
index 0000000..602411e
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listS3s.py
@@ -0,0 +1,53 @@
+# 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.
+
+
+"""Lists S3s"""
+from baseCmd import *
+from baseResponse import *
+class listS3sCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """List by keyword"""
+        self.keyword = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        self.required = []
+
+class listS3sResponse (baseResponse):
+    def __init__(self):
+        """the ID of the image store"""
+        self.id = None
+        """the details of the image store"""
+        self.details = None
+        """the name of the image store"""
+        self.name = None
+        """the protocol of the image store"""
+        self.protocol = None
+        """the provider name of the image store"""
+        self.providername = None
+        """the scope of the image store"""
+        self.scope = None
+        """the url of the image store"""
+        self.url = None
+        """the Zone ID of the image store"""
+        self.zoneid = None
+        """the Zone name of the image store"""
+        self.zonename = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listSSHKeyPairs.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listSSHKeyPairs.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listSSHKeyPairs.py
new file mode 100644
index 0000000..8f38bec
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listSSHKeyPairs.py
@@ -0,0 +1,55 @@
+# 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.
+
+
+"""List registered keypairs"""
+from baseCmd import *
+from baseResponse import *
+class listSSHKeyPairsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """A public key fingerprint to look for"""
+        self.fingerprint = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """A key pair name to look for"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        self.required = []
+
+class listSSHKeyPairsResponse (baseResponse):
+    def __init__(self):
+        """Fingerprint of the public key"""
+        self.fingerprint = None
+        """Name of the keypair"""
+        self.name = None
+        """Private key"""
+        self.privatekey = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listSecondaryStagingStores.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listSecondaryStagingStores.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listSecondaryStagingStores.py
new file mode 100644
index 0000000..0fa0696
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listSecondaryStagingStores.py
@@ -0,0 +1,63 @@
+# 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.
+
+
+"""Lists secondary staging stores."""
+from baseCmd import *
+from baseResponse import *
+class listSecondaryStagingStoresCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """the ID of the staging store"""
+        self.id = None
+        """List by keyword"""
+        self.keyword = None
+        """the name of the staging store"""
+        self.name = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """the staging store protocol"""
+        self.protocol = None
+        """the staging store provider"""
+        self.provider = None
+        """the Zone ID for the staging store"""
+        self.zoneid = None
+        self.required = []
+
+class listSecondaryStagingStoresResponse (baseResponse):
+    def __init__(self):
+        """the ID of the image store"""
+        self.id = None
+        """the details of the image store"""
+        self.details = None
+        """the name of the image store"""
+        self.name = None
+        """the protocol of the image store"""
+        self.protocol = None
+        """the provider name of the image store"""
+        self.providername = None
+        """the scope of the image store"""
+        self.scope = None
+        """the url of the image store"""
+        self.url = None
+        """the Zone ID of the image store"""
+        self.zoneid = None
+        """the Zone name of the image store"""
+        self.zonename = None
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ec00a6fb/tools/marvin/build/lib/marvin/cloudstackAPI/listSecurityGroups.py
----------------------------------------------------------------------
diff --git a/tools/marvin/build/lib/marvin/cloudstackAPI/listSecurityGroups.py b/tools/marvin/build/lib/marvin/cloudstackAPI/listSecurityGroups.py
new file mode 100644
index 0000000..d3cf2cd
--- /dev/null
+++ b/tools/marvin/build/lib/marvin/cloudstackAPI/listSecurityGroups.py
@@ -0,0 +1,144 @@
+# 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.
+
+
+"""Lists security groups"""
+from baseCmd import *
+from baseResponse import *
+class listSecurityGroupsCmd (baseCmd):
+    def __init__(self):
+        self.isAsync = "false"
+        """list resources by account. Must be used with the domainId parameter."""
+        self.account = None
+        """list only resources belonging to the domain specified"""
+        self.domainid = None
+        """list the security group by the id provided"""
+        self.id = None
+        """defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves."""
+        self.isrecursive = None
+        """List by keyword"""
+        self.keyword = None
+        """If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"""
+        self.listall = None
+        """"""
+        self.page = None
+        """"""
+        self.pagesize = None
+        """list objects by project"""
+        self.projectid = None
+        """lists security groups by name"""
+        self.securitygroupname = None
+        """List resources by tags (key/value pairs)"""
+        self.tags = []
+        """lists security groups by virtual machine id"""
+        self.virtualmachineid = None
+        self.required = []
+
+class listSecurityGroupsResponse (baseResponse):
+    def __init__(self):
+        """the ID of the security group"""
+        self.id = None
+        """the account owning the security group"""
+        self.account = None
+        """the description of the security group"""
+        self.description = None
+        """the domain name of the security group"""
+        self.domain = None
+        """the domain ID of the security group"""
+        self.domainid = None
+        """the name of the security group"""
+        self.name = None
+        """the project name of the group"""
+        self.project = None
+        """the project id of the group"""
+        self.projectid = None
+        """the list of egress rules associated with the security group"""
+        self.egressrule = []
+        """the list of ingress rules associated with the security group"""
+        self.ingressrule = []
+        """the list of resource tags associated with the rule"""
+        self.tags = []
+        """the ID of the latest async job acting on this object"""
+        self.jobid = None
+        """the current status of the latest async job acting on this object"""
+        self.jobstatus = None
+
+class egressrule:
+    def __init__(self):
+        """"account owning the security group rule"""
+        self.account = None
+        """"the CIDR notation for the base IP address of the security group rule"""
+        self.cidr = None
+        """"the ending IP of the security group rule"""
+        self.endport = None
+        """"the code for the ICMP message response"""
+        self.icmpcode = None
+        """"the type of the ICMP message response"""
+        self.icmptype = None
+        """"the protocol of the security group rule"""
+        self.protocol = None
+        """"the id of the security group rule"""
+        self.ruleid = None
+        """"security group name"""
+        self.securitygroupname = None
+        """"the starting IP of the security group rule"""
+        self.startport = None
+
+class ingressrule:
+    def __init__(self):
+        """"account owning the security group rule"""
+        self.account = None
+        """"the CIDR notation for the base IP address of the security group rule"""
+        self.cidr = None
+        """"the ending IP of the security group rule"""
+        self.endport = None
+        """"the code for the ICMP message response"""
+        self.icmpcode = None
+        """"the type of the ICMP message response"""
+        self.icmptype = None
+        """"the protocol of the security group rule"""
+        self.protocol = None
+        """"the id of the security group rule"""
+        self.ruleid = None
+        """"security group name"""
+        self.securitygroupname = None
+        """"the starting IP of the security group rule"""
+        self.startport = None
+
+class tags:
+    def __init__(self):
+        """"the account associated with the tag"""
+        self.account = None
+        """"customer associated with the tag"""
+        self.customer = None
+        """"the domain associated with the tag"""
+        self.domain = None
+        """"the ID of the domain associated with the tag"""
+        self.domainid = None
+        """"tag key name"""
+        self.key = None
+        """"the project name where tag belongs to"""
+        self.project = None
+        """"the project id the tag belongs to"""
+        self.projectid = None
+        """"id of the resource"""
+        self.resourceid = None
+        """"resource type"""
+        self.resourcetype = None
+        """"tag value"""
+        self.value = None
+