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 14:23:30 UTC

[17/17] git commit: updated refs/heads/marvin_refactor to dd838d7

make the module structure more relevant and simple

Signed-off-by: Prasanna Santhanam <ts...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/dd838d72
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/dd838d72
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/dd838d72

Branch: refs/heads/marvin_refactor
Commit: dd838d72515034cfcfd2f980631fdda64f8738e7
Parents: a531a7f
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Sun Apr 21 17:52:41 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Sun Apr 21 17:52:41 2013 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/base/Account.py                |  102 +
 tools/marvin/marvin/base/Alerts.py                 |   42 +
 tools/marvin/marvin/base/ApiLimit.py               |   42 +
 tools/marvin/marvin/base/Apis.py                   |   33 +
 tools/marvin/marvin/base/AsyncJobResult.py         |   34 +
 tools/marvin/marvin/base/AsyncJobs.py              |   33 +
 tools/marvin/marvin/base/AutoScalePolicy.py        |   60 +
 tools/marvin/marvin/base/AutoScaleVmGroup.py       |   79 +
 tools/marvin/marvin/base/AutoScaleVmProfile.py     |   61 +
 tools/marvin/marvin/base/BigSwitchVnsDevice.py     |   54 +
 tools/marvin/marvin/base/Capabilities.py           |   33 +
 tools/marvin/marvin/base/Capacity.py               |   33 +
 tools/marvin/marvin/base/CloudIdentifier.py        |   34 +
 tools/marvin/marvin/base/CloudStackEntity.py       |   25 +
 tools/marvin/marvin/base/Cluster.py                |   65 +
 tools/marvin/marvin/base/Condition.py              |   52 +
 tools/marvin/marvin/base/Configuration.py          |   43 +
 tools/marvin/marvin/base/Counter.py                |   52 +
 tools/marvin/marvin/base/CustomCertificate.py      |   35 +
 tools/marvin/marvin/base/DiskOffering.py           |   61 +
 tools/marvin/marvin/base/Domain.py                 |   61 +
 tools/marvin/marvin/base/DomainChildren.py         |   33 +
 tools/marvin/marvin/base/EgressFirewallRule.py     |   52 +
 tools/marvin/marvin/base/EventTypes.py             |   33 +
 tools/marvin/marvin/base/Events.py                 |   42 +
 tools/marvin/marvin/base/FirewallRule.py           |   52 +
 tools/marvin/marvin/base/GlobalLoadBalancerRule.py |   80 +
 tools/marvin/marvin/base/Host.py                   |  104 +
 tools/marvin/marvin/base/HypervisorCapabilities.py |   42 +
 tools/marvin/marvin/base/Hypervisors.py            |   33 +
 tools/marvin/marvin/base/InstanceGroup.py          |   61 +
 tools/marvin/marvin/base/IpAddress.py              |   50 +
 tools/marvin/marvin/base/IpForwardingRule.py       |   52 +
 tools/marvin/marvin/base/Iso.py                    |  105 +
 tools/marvin/marvin/base/IsoPermissions.py         |   42 +
 tools/marvin/marvin/base/LBHealthCheckPolicy.py    |   52 +
 tools/marvin/marvin/base/LBStickinessPolicy.py     |   55 +
 tools/marvin/marvin/base/Ldap.py                   |   42 +
 tools/marvin/marvin/base/LoadBalancerRule.py       |   93 +
 tools/marvin/marvin/base/Network.py                |   70 +
 tools/marvin/marvin/base/NetworkACL.py             |   52 +
 tools/marvin/marvin/base/NetworkDevice.py          |   51 +
 tools/marvin/marvin/base/NetworkOffering.py        |   61 +
 tools/marvin/marvin/base/NetworkServiceProvider.py |   62 +
 tools/marvin/marvin/base/Nic.py                    |   56 +
 tools/marvin/marvin/base/NiciraNvpDevice.py        |   66 +
 tools/marvin/marvin/base/OsCategories.py           |   33 +
 tools/marvin/marvin/base/OsTypes.py                |   33 +
 tools/marvin/marvin/base/PhysicalNetwork.py        |   61 +
 tools/marvin/marvin/base/Pod.py                    |   61 +
 tools/marvin/marvin/base/PortForwardingRule.py     |   65 +
 tools/marvin/marvin/base/PrivateGateway.py         |   52 +
 tools/marvin/marvin/base/Project.py                |  107 +
 tools/marvin/marvin/base/ProjectInvitation.py      |   52 +
 tools/marvin/marvin/base/Region.py                 |   62 +
 tools/marvin/marvin/base/RemoteAccessVpn.py        |   54 +
 tools/marvin/marvin/base/ResourceCount.py          |   34 +
 tools/marvin/marvin/base/ResourceLimit.py          |   43 +
 tools/marvin/marvin/base/Router.py                 |   69 +
 tools/marvin/marvin/base/S3.py                     |   45 +
 tools/marvin/marvin/base/SSHKeyPair.py             |   64 +
 tools/marvin/marvin/base/SecondaryStorage.py       |   34 +
 tools/marvin/marvin/base/SecurityGroup.py          |   82 +
 tools/marvin/marvin/base/ServiceForRouter.py       |   34 +
 tools/marvin/marvin/base/ServiceForSystemVm.py     |   34 +
 .../marvin/marvin/base/ServiceForVirtualMachine.py |   34 +
 tools/marvin/marvin/base/ServiceOffering.py        |   61 +
 tools/marvin/marvin/base/Simulator.py              |   35 +
 tools/marvin/marvin/base/Snapshot.py               |   52 +
 tools/marvin/marvin/base/SnapshotPolicy.py         |   52 +
 tools/marvin/marvin/base/StaticNat.py              |   45 +
 tools/marvin/marvin/base/StaticRoute.py            |   52 +
 tools/marvin/marvin/base/StorageNetworkIpRange.py  |   61 +
 tools/marvin/marvin/base/StoragePool.py            |   79 +
 tools/marvin/marvin/base/StorageProviders.py       |   33 +
 .../marvin/marvin/base/SupportedNetworkServices.py |   33 +
 tools/marvin/marvin/base/Swift.py                  |   43 +
 tools/marvin/marvin/base/SystemVm.py               |   80 +
 tools/marvin/marvin/base/Tags.py                   |   54 +
 tools/marvin/marvin/base/Template.py               |  106 +
 tools/marvin/marvin/base/TemplatePermissions.py    |   42 +
 tools/marvin/marvin/base/TrafficMonitor.py         |   54 +
 tools/marvin/marvin/base/TrafficType.py            |   63 +
 .../marvin/marvin/base/TrafficTypeImplementors.py  |   33 +
 tools/marvin/marvin/base/UsageRecords.py           |   46 +
 tools/marvin/marvin/base/UsageTypes.py             |   33 +
 tools/marvin/marvin/base/User.py                   |  107 +
 tools/marvin/marvin/base/VMPassword.py             |   33 +
 tools/marvin/marvin/base/VMSnapshot.py             |   53 +
 tools/marvin/marvin/base/VPC.py                    |   70 +
 tools/marvin/marvin/base/VPCOffering.py            |   61 +
 tools/marvin/marvin/base/VirtualMachine.py         |  178 +
 tools/marvin/marvin/base/VirtualRouterElement.py   |   53 +
 tools/marvin/marvin/base/VlanIpRange.py            |   52 +
 tools/marvin/marvin/base/Volume.py                 |  106 +
 tools/marvin/marvin/base/VpnConnection.py          |   61 +
 tools/marvin/marvin/base/VpnCustomerGateway.py     |   66 +
 tools/marvin/marvin/base/VpnGateway.py             |   52 +
 tools/marvin/marvin/base/VpnUser.py                |   54 +
 tools/marvin/marvin/base/Zone.py                   |   61 +
 tools/marvin/marvin/base/__init__.py               |   16 +
 tools/marvin/marvin/common.py                      |  566 ++++
 tools/marvin/marvin/factory/AccountFactory.py      |   46 +
 .../marvin/factory/AutoScalePolicyFactory.py       |   26 +
 .../marvin/factory/AutoScaleVmGroupFactory.py      |   28 +
 .../marvin/factory/AutoScaleVmProfileFactory.py    |   25 +
 .../marvin/marvin/factory/CloudStackBaseFactory.py |   55 +
 tools/marvin/marvin/factory/ClusterFactory.py      |   24 +
 tools/marvin/marvin/factory/ConditionFactory.py    |   26 +
 tools/marvin/marvin/factory/CounterFactory.py      |   25 +
 tools/marvin/marvin/factory/DiskOfferingFactory.py |   42 +
 tools/marvin/marvin/factory/DomainFactory.py       |   24 +
 .../marvin/factory/EgressFirewallRuleFactory.py    |   24 +
 tools/marvin/marvin/factory/FirewallRuleFactory.py |   38 +
 tools/marvin/marvin/factory/HostFactory.py         |   30 +
 .../marvin/marvin/factory/InstanceGroupFactory.py  |   27 +
 tools/marvin/marvin/factory/IpAddressFactory.py    |   24 +
 .../marvin/factory/IpForwardingRuleFactory.py      |   25 +
 tools/marvin/marvin/factory/IsoFactory.py          |   26 +
 .../marvin/factory/LBHealthCheckPolicyFactory.py   |   26 +
 .../marvin/factory/LBStickinessPolicyFactory.py    |   25 +
 .../marvin/factory/LoadBalancerRuleFactory.py      |   26 +
 tools/marvin/marvin/factory/NetworkACLFactory.py   |   24 +
 tools/marvin/marvin/factory/NetworkFactory.py      |   26 +
 .../marvin/factory/NetworkOfferingFactory.py       |   85 +
 .../factory/NetworkServiceProviderFactory.py       |    8 +
 .../marvin/factory/NiciraNvpDeviceFactory.py       |   11 +
 tools/marvin/marvin/factory/OsCategoriesFactory.py |    5 +
 tools/marvin/marvin/factory/OsTypesFactory.py      |    5 +
 .../marvin/factory/PhysicalNetworkFactory.py       |   24 +
 tools/marvin/marvin/factory/PodFactory.py          |   27 +
 .../marvin/factory/PortForwardingRuleFactory.py    |   27 +
 .../marvin/marvin/factory/PrivateGatewayFactory.py |   27 +
 tools/marvin/marvin/factory/ProjectFactory.py      |   25 +
 .../marvin/factory/ProjectInvitationFactory.py     |    7 +
 .../marvin/factory/RemoteAccessVpnFactory.py       |   23 +
 tools/marvin/marvin/factory/S3Factory.py           |    8 +
 tools/marvin/marvin/factory/SSHKeyPairFactory.py   |   23 +
 .../marvin/factory/SecondaryStorageFactory.py      |    7 +
 .../marvin/marvin/factory/SecurityGroupFactory.py  |   23 +
 .../marvin/factory/ServiceOfferingFactory.py       |   38 +
 tools/marvin/marvin/factory/SnapshotFactory.py     |   23 +
 .../marvin/marvin/factory/SnapshotPolicyFactory.py |   28 +
 tools/marvin/marvin/factory/StaticNatFactory.py    |    8 +
 tools/marvin/marvin/factory/StaticRouteFactory.py  |   24 +
 .../marvin/factory/StorageNetworkIpRangeFactory.py |   27 +
 tools/marvin/marvin/factory/StoragePoolFactory.py  |   27 +
 tools/marvin/marvin/factory/TagsFactory.py         |   25 +
 tools/marvin/marvin/factory/TemplateFactory.py     |   37 +
 .../marvin/marvin/factory/TrafficMonitorFactory.py |    8 +
 tools/marvin/marvin/factory/TrafficTypeFactory.py  |    9 +
 tools/marvin/marvin/factory/UsageRecordsFactory.py |    8 +
 tools/marvin/marvin/factory/UserFactory.py         |   33 +
 tools/marvin/marvin/factory/VMSnapshotFactory.py   |   23 +
 tools/marvin/marvin/factory/VPCFactory.py          |   27 +
 tools/marvin/marvin/factory/VPCOfferingFactory.py  |   25 +
 .../marvin/marvin/factory/VirtualMachineFactory.py |   27 +
 .../marvin/factory/VirtualRouterElementFactory.py  |   24 +
 tools/marvin/marvin/factory/VlanIpRangeFactory.py  |   23 +
 tools/marvin/marvin/factory/VolumeFactory.py       |   23 +
 .../marvin/marvin/factory/VpnConnectionFactory.py  |   24 +
 .../marvin/factory/VpnCustomerGatewayFactory.py    |   27 +
 tools/marvin/marvin/factory/VpnGatewayFactory.py   |   23 +
 tools/marvin/marvin/factory/VpnUserFactory.py      |   25 +
 tools/marvin/marvin/factory/ZoneFactory.py         |   38 +
 tools/marvin/marvin/factory/__init__.py            |   16 +
 tools/marvin/marvin/factory/test/__init__.py       |   16 +
 tools/marvin/marvin/factory/test/testFactories.py  |  148 +
 tools/marvin/marvin/generateBase.py                |  202 ++
 tools/marvin/marvin/integration/__init__.py        |   18 -
 tools/marvin/marvin/integration/lib/__init__.py    |   16 -
 .../marvin/marvin/integration/lib/base/Account.py  |  102 -
 tools/marvin/marvin/integration/lib/base/Alerts.py |   42 -
 .../marvin/marvin/integration/lib/base/ApiLimit.py |   42 -
 tools/marvin/marvin/integration/lib/base/Apis.py   |   33 -
 .../marvin/integration/lib/base/AsyncJobResult.py  |   34 -
 .../marvin/integration/lib/base/AsyncJobs.py       |   33 -
 .../marvin/integration/lib/base/AutoScalePolicy.py |   60 -
 .../integration/lib/base/AutoScaleVmGroup.py       |   79 -
 .../integration/lib/base/AutoScaleVmProfile.py     |   61 -
 .../integration/lib/base/BigSwitchVnsDevice.py     |   54 -
 .../marvin/integration/lib/base/Capabilities.py    |   33 -
 .../marvin/marvin/integration/lib/base/Capacity.py |   33 -
 .../marvin/integration/lib/base/CloudIdentifier.py |   34 -
 .../integration/lib/base/CloudStackEntity.py       |   25 -
 .../marvin/marvin/integration/lib/base/Cluster.py  |   65 -
 .../marvin/integration/lib/base/Condition.py       |   52 -
 .../marvin/integration/lib/base/Configuration.py   |   43 -
 .../marvin/marvin/integration/lib/base/Counter.py  |   52 -
 .../integration/lib/base/CustomCertificate.py      |   35 -
 .../marvin/integration/lib/base/DiskOffering.py    |   61 -
 tools/marvin/marvin/integration/lib/base/Domain.py |   61 -
 .../marvin/integration/lib/base/DomainChildren.py  |   33 -
 .../integration/lib/base/EgressFirewallRule.py     |   52 -
 .../marvin/integration/lib/base/EventTypes.py      |   33 -
 tools/marvin/marvin/integration/lib/base/Events.py |   42 -
 .../marvin/integration/lib/base/FirewallRule.py    |   52 -
 .../integration/lib/base/GlobalLoadBalancerRule.py |   80 -
 tools/marvin/marvin/integration/lib/base/Host.py   |  104 -
 .../integration/lib/base/HypervisorCapabilities.py |   42 -
 .../marvin/integration/lib/base/Hypervisors.py     |   33 -
 .../marvin/integration/lib/base/InstanceGroup.py   |   61 -
 .../marvin/integration/lib/base/IpAddress.py       |   50 -
 .../integration/lib/base/IpForwardingRule.py       |   52 -
 tools/marvin/marvin/integration/lib/base/Iso.py    |  105 -
 .../marvin/integration/lib/base/IsoPermissions.py  |   42 -
 .../integration/lib/base/LBHealthCheckPolicy.py    |   52 -
 .../integration/lib/base/LBStickinessPolicy.py     |   55 -
 tools/marvin/marvin/integration/lib/base/Ldap.py   |   42 -
 .../integration/lib/base/LoadBalancerRule.py       |   93 -
 .../marvin/marvin/integration/lib/base/Network.py  |   70 -
 .../marvin/integration/lib/base/NetworkACL.py      |   52 -
 .../marvin/integration/lib/base/NetworkDevice.py   |   51 -
 .../marvin/integration/lib/base/NetworkOffering.py |   61 -
 .../integration/lib/base/NetworkServiceProvider.py |   62 -
 tools/marvin/marvin/integration/lib/base/Nic.py    |   56 -
 .../marvin/integration/lib/base/NiciraNvpDevice.py |   66 -
 .../marvin/integration/lib/base/OsCategories.py    |   33 -
 .../marvin/marvin/integration/lib/base/OsTypes.py  |   33 -
 .../marvin/integration/lib/base/PhysicalNetwork.py |   61 -
 tools/marvin/marvin/integration/lib/base/Pod.py    |   61 -
 .../integration/lib/base/PortForwardingRule.py     |   65 -
 .../marvin/integration/lib/base/PrivateGateway.py  |   52 -
 .../marvin/marvin/integration/lib/base/Project.py  |  107 -
 .../integration/lib/base/ProjectInvitation.py      |   52 -
 tools/marvin/marvin/integration/lib/base/Region.py |   62 -
 .../marvin/integration/lib/base/RemoteAccessVpn.py |   54 -
 .../marvin/integration/lib/base/ResourceCount.py   |   34 -
 .../marvin/integration/lib/base/ResourceLimit.py   |   43 -
 tools/marvin/marvin/integration/lib/base/Router.py |   69 -
 tools/marvin/marvin/integration/lib/base/S3.py     |   45 -
 .../marvin/integration/lib/base/SSHKeyPair.py      |   64 -
 .../integration/lib/base/SecondaryStorage.py       |   34 -
 .../marvin/integration/lib/base/SecurityGroup.py   |   82 -
 .../integration/lib/base/ServiceForRouter.py       |   34 -
 .../integration/lib/base/ServiceForSystemVm.py     |   34 -
 .../lib/base/ServiceForVirtualMachine.py           |   34 -
 .../marvin/integration/lib/base/ServiceOffering.py |   61 -
 .../marvin/integration/lib/base/Simulator.py       |   35 -
 .../marvin/marvin/integration/lib/base/Snapshot.py |   52 -
 .../marvin/integration/lib/base/SnapshotPolicy.py  |   52 -
 .../marvin/integration/lib/base/StaticNat.py       |   45 -
 .../marvin/integration/lib/base/StaticRoute.py     |   52 -
 .../integration/lib/base/StorageNetworkIpRange.py  |   61 -
 .../marvin/integration/lib/base/StoragePool.py     |   79 -
 .../integration/lib/base/StorageProviders.py       |   33 -
 .../lib/base/SupportedNetworkServices.py           |   33 -
 tools/marvin/marvin/integration/lib/base/Swift.py  |   43 -
 .../marvin/marvin/integration/lib/base/SystemVm.py |   80 -
 tools/marvin/marvin/integration/lib/base/Tags.py   |   54 -
 .../marvin/marvin/integration/lib/base/Template.py |  106 -
 .../integration/lib/base/TemplatePermissions.py    |   42 -
 .../marvin/integration/lib/base/TrafficMonitor.py  |   54 -
 .../marvin/integration/lib/base/TrafficType.py     |   63 -
 .../lib/base/TrafficTypeImplementors.py            |   33 -
 .../marvin/integration/lib/base/UsageRecords.py    |   46 -
 .../marvin/integration/lib/base/UsageTypes.py      |   33 -
 tools/marvin/marvin/integration/lib/base/User.py   |  107 -
 .../marvin/integration/lib/base/VMPassword.py      |   33 -
 .../marvin/integration/lib/base/VMSnapshot.py      |   53 -
 tools/marvin/marvin/integration/lib/base/VPC.py    |   70 -
 .../marvin/integration/lib/base/VPCOffering.py     |   61 -
 .../marvin/integration/lib/base/VirtualMachine.py  |  178 -
 .../integration/lib/base/VirtualRouterElement.py   |   53 -
 .../marvin/integration/lib/base/VlanIpRange.py     |   52 -
 tools/marvin/marvin/integration/lib/base/Volume.py |  106 -
 .../marvin/integration/lib/base/VpnConnection.py   |   61 -
 .../integration/lib/base/VpnCustomerGateway.py     |   66 -
 .../marvin/integration/lib/base/VpnGateway.py      |   52 -
 .../marvin/marvin/integration/lib/base/VpnUser.py  |   54 -
 tools/marvin/marvin/integration/lib/base/Zone.py   |   61 -
 .../marvin/marvin/integration/lib/base/__init__.py |   16 -
 tools/marvin/marvin/integration/lib/common.py      |  569 ----
 .../integration/lib/factory/AccountFactory.py      |   46 -
 .../lib/factory/AutoScalePolicyFactory.py          |   25 -
 .../lib/factory/AutoScaleVmGroupFactory.py         |   28 -
 .../lib/factory/AutoScaleVmProfileFactory.py       |   25 -
 .../lib/factory/CloudStackBaseFactory.py           |   55 -
 .../integration/lib/factory/ClusterFactory.py      |   24 -
 .../integration/lib/factory/ConditionFactory.py    |   25 -
 .../integration/lib/factory/CounterFactory.py      |   25 -
 .../integration/lib/factory/DiskOfferingFactory.py |   42 -
 .../integration/lib/factory/DomainFactory.py       |   24 -
 .../lib/factory/EgressFirewallRuleFactory.py       |   24 -
 .../integration/lib/factory/FirewallRuleFactory.py |   24 -
 .../marvin/integration/lib/factory/HostFactory.py  |   13 -
 .../lib/factory/InstanceGroupFactory.py            |   23 -
 .../integration/lib/factory/IpAddressFactory.py    |   22 -
 .../lib/factory/IpForwardingRuleFactory.py         |   25 -
 .../marvin/integration/lib/factory/IsoFactory.py   |   26 -
 .../lib/factory/LBHealthCheckPolicyFactory.py      |   26 -
 .../lib/factory/LBStickinessPolicyFactory.py       |   25 -
 .../lib/factory/LoadBalancerRuleFactory.py         |   26 -
 .../integration/lib/factory/NetworkACLFactory.py   |   24 -
 .../integration/lib/factory/NetworkFactory.py      |   26 -
 .../lib/factory/NetworkOfferingFactory.py          |   85 -
 .../lib/factory/NetworkServiceProviderFactory.py   |    8 -
 .../lib/factory/NiciraNvpDeviceFactory.py          |   11 -
 .../integration/lib/factory/OsCategoriesFactory.py |    5 -
 .../integration/lib/factory/OsTypesFactory.py      |    5 -
 .../lib/factory/PhysicalNetworkFactory.py          |   24 -
 .../marvin/integration/lib/factory/PodFactory.py   |   27 -
 .../lib/factory/PortForwardingRuleFactory.py       |   27 -
 .../lib/factory/PrivateGatewayFactory.py           |   27 -
 .../integration/lib/factory/ProjectFactory.py      |   24 -
 .../lib/factory/ProjectInvitationFactory.py        |    7 -
 .../lib/factory/RemoteAccessVpnFactory.py          |   23 -
 .../marvin/integration/lib/factory/S3Factory.py    |    8 -
 .../integration/lib/factory/SSHKeyPairFactory.py   |   23 -
 .../lib/factory/SecondaryStorageFactory.py         |    7 -
 .../lib/factory/SecurityGroupFactory.py            |   23 -
 .../lib/factory/ServiceOfferingFactory.py          |   38 -
 .../integration/lib/factory/SnapshotFactory.py     |   23 -
 .../lib/factory/SnapshotPolicyFactory.py           |   27 -
 .../integration/lib/factory/StaticNatFactory.py    |    8 -
 .../integration/lib/factory/StaticRouteFactory.py  |   24 -
 .../lib/factory/StorageNetworkIpRangeFactory.py    |   26 -
 .../integration/lib/factory/StoragePoolFactory.py  |   26 -
 .../marvin/integration/lib/factory/TagsFactory.py  |   25 -
 .../integration/lib/factory/TemplateFactory.py     |   38 -
 .../lib/factory/TrafficMonitorFactory.py           |    8 -
 .../integration/lib/factory/TrafficTypeFactory.py  |    9 -
 .../integration/lib/factory/UsageRecordsFactory.py |    8 -
 .../marvin/integration/lib/factory/UserFactory.py  |   34 -
 .../integration/lib/factory/VMSnapshotFactory.py   |   23 -
 .../marvin/integration/lib/factory/VPCFactory.py   |   27 -
 .../integration/lib/factory/VPCOfferingFactory.py  |   25 -
 .../lib/factory/VirtualMachineFactory.py           |   28 -
 .../lib/factory/VirtualRouterElementFactory.py     |   23 -
 .../integration/lib/factory/VlanIpRangeFactory.py  |   23 -
 .../integration/lib/factory/VolumeFactory.py       |   23 -
 .../lib/factory/VpnConnectionFactory.py            |   24 -
 .../lib/factory/VpnCustomerGatewayFactory.py       |   27 -
 .../integration/lib/factory/VpnGatewayFactory.py   |   23 -
 .../integration/lib/factory/VpnUserFactory.py      |   24 -
 .../marvin/integration/lib/factory/ZoneFactory.py  |   38 -
 .../marvin/integration/lib/factory/__init__.py     |   16 -
 .../integration/lib/factory/test/__init__.py       |   16 -
 .../integration/lib/factory/test/testFactories.py  |  152 -
 .../marvin/marvin/integration/lib/generateBase.py  |  202 --
 tools/marvin/marvin/integration/lib/oldbase.py     | 2558 ---------------
 tools/marvin/marvin/integration/lib/utils.py       |  176 -
 tools/marvin/marvin/oldbase.py                     | 2557 ++++++++++++++
 tools/marvin/marvin/utils.py                       |  176 +
 344 files changed, 10870 insertions(+), 10870 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Account.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Account.py b/tools/marvin/marvin/base/Account.py
new file mode 100644
index 0000000..aaf72ed
--- /dev/null
+++ b/tools/marvin/marvin/base/Account.py
@@ -0,0 +1,102 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import enableAccount
+from marvin.cloudstackAPI import lockAccount
+from marvin.cloudstackAPI import createAccount
+from marvin.cloudstackAPI import listAccounts
+from marvin.cloudstackAPI import updateAccount
+from marvin.cloudstackAPI import disableAccount
+from marvin.cloudstackAPI import deleteAccount
+from marvin.cloudstackAPI import markDefaultZoneForAccount
+
+class Account(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def enable(self, apiclient, **kwargs):
+        cmd = enableAccount.enableAccountCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.enableAccount(cmd)
+        return account
+
+
+    def lock(self, apiclient, account, domainid, **kwargs):
+        cmd = lockAccount.lockAccountCmd()
+        cmd.id = self.id
+        cmd.account = account
+        cmd.domainid = domainid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.lockAccount(cmd)
+        return account
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createAccount.createAccountCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.createAccount(cmd)
+        return Account(account.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAccounts.listAccountsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.listAccounts(cmd)
+        return map(lambda e: Account(e.__dict__), account)
+
+
+    def update(self, apiclient, newname, **kwargs):
+        cmd = updateAccount.updateAccountCmd()
+        cmd.id = self.id
+        cmd.newname = newname
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.updateAccount(cmd)
+        return account
+
+
+    def disable(self, apiclient, lock, **kwargs):
+        cmd = disableAccount.disableAccountCmd()
+        cmd.id = self.id
+        cmd.lock = lock
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.disableAccount(cmd)
+        return account
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteAccount.deleteAccountCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        account = apiclient.deleteAccount(cmd)
+        return account
+
+    def mark(self, apiclient, zoneid, **kwargs):
+        cmd = markDefaultZoneForAccount.markDefaultZoneForAccountCmd()
+        cmd.id = self.id
+        cmd.account = self.account
+        cmd.domainid = self.domainid
+        cmd.zoneid = zoneid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        defaultzoneforaccount = apiclient.markDefaultZoneForAccount(cmd)
+        return defaultzoneforaccount

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Alerts.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Alerts.py b/tools/marvin/marvin/base/Alerts.py
new file mode 100644
index 0000000..496696e
--- /dev/null
+++ b/tools/marvin/marvin/base/Alerts.py
@@ -0,0 +1,42 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listAlerts
+from marvin.cloudstackAPI import deleteAlerts
+
+class Alerts(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAlerts.listAlertsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        alerts = apiclient.listAlerts(cmd)
+        return map(lambda e: Alerts(e.__dict__), alerts)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteAlerts.deleteAlertsCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        alerts = apiclient.deleteAlerts(cmd)
+        return alerts
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/ApiLimit.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/ApiLimit.py b/tools/marvin/marvin/base/ApiLimit.py
new file mode 100644
index 0000000..78dffb9
--- /dev/null
+++ b/tools/marvin/marvin/base/ApiLimit.py
@@ -0,0 +1,42 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import resetApiLimit
+from marvin.cloudstackAPI import getApiLimit
+
+class ApiLimit(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def reset(self, apiclient, **kwargs):
+        cmd = resetApiLimit.resetApiLimitCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        apilimit = apiclient.resetApiLimit(cmd)
+        return apilimit
+
+
+    def get(self, apiclient, **kwargs):
+        cmd = getApiLimit.getApiLimitCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        apilimit = apiclient.getApiLimit(cmd)
+        return apilimit
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Apis.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Apis.py b/tools/marvin/marvin/base/Apis.py
new file mode 100644
index 0000000..fb8ce16
--- /dev/null
+++ b/tools/marvin/marvin/base/Apis.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listApis
+
+class Apis(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listApis.listApisCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        apis = apiclient.listApis(cmd)
+        return map(lambda e: Apis(e.__dict__), apis)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/AsyncJobResult.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/AsyncJobResult.py b/tools/marvin/marvin/base/AsyncJobResult.py
new file mode 100644
index 0000000..b82e639
--- /dev/null
+++ b/tools/marvin/marvin/base/AsyncJobResult.py
@@ -0,0 +1,34 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import queryAsyncJobResult
+
+class AsyncJobResult(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def query(self, apiclient, jobid, **kwargs):
+        cmd = queryAsyncJobResult.queryAsyncJobResultCmd()
+        cmd.id = self.id
+        cmd.jobid = jobid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        asyncjobresult = apiclient.queryAsyncJobResult(cmd)
+        return asyncjobresult
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/AsyncJobs.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/AsyncJobs.py b/tools/marvin/marvin/base/AsyncJobs.py
new file mode 100644
index 0000000..5907227
--- /dev/null
+++ b/tools/marvin/marvin/base/AsyncJobs.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listAsyncJobs
+
+class AsyncJobs(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAsyncJobs.listAsyncJobsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        asyncjobs = apiclient.listAsyncJobs(cmd)
+        return map(lambda e: AsyncJobs(e.__dict__), asyncjobs)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/AutoScalePolicy.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/AutoScalePolicy.py b/tools/marvin/marvin/base/AutoScalePolicy.py
new file mode 100644
index 0000000..bfc9e33
--- /dev/null
+++ b/tools/marvin/marvin/base/AutoScalePolicy.py
@@ -0,0 +1,60 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createAutoScalePolicy
+from marvin.cloudstackAPI import updateAutoScalePolicy
+from marvin.cloudstackAPI import deleteAutoScalePolicy
+from marvin.cloudstackAPI import listAutoScalePolicies
+
+class AutoScalePolicy(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createAutoScalePolicy.createAutoScalePolicyCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalepolicy = apiclient.createAutoScalePolicy(cmd)
+        return AutoScalePolicy(autoscalepolicy.__dict__)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateAutoScalePolicy.updateAutoScalePolicyCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalepolicy = apiclient.updateAutoScalePolicy(cmd)
+        return autoscalepolicy
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteAutoScalePolicy.deleteAutoScalePolicyCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalepolicy = apiclient.deleteAutoScalePolicy(cmd)
+        return autoscalepolicy
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAutoScalePolicies.listAutoScalePoliciesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalepolicies = apiclient.listAutoScalePolicies(cmd)
+        return map(lambda e: AutoScalePolicy(e.__dict__), autoscalepolicies)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/AutoScaleVmGroup.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/AutoScaleVmGroup.py b/tools/marvin/marvin/base/AutoScaleVmGroup.py
new file mode 100644
index 0000000..4c11b88
--- /dev/null
+++ b/tools/marvin/marvin/base/AutoScaleVmGroup.py
@@ -0,0 +1,79 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import enableAutoScaleVmGroup
+from marvin.cloudstackAPI import createAutoScaleVmGroup
+from marvin.cloudstackAPI import listAutoScaleVmGroups
+from marvin.cloudstackAPI import updateAutoScaleVmGroup
+from marvin.cloudstackAPI import disableAutoScaleVmGroup
+from marvin.cloudstackAPI import deleteAutoScaleVmGroup
+
+class AutoScaleVmGroup(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def enable(self, apiclient, **kwargs):
+        cmd = enableAutoScaleVmGroup.enableAutoScaleVmGroupCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.enableAutoScaleVmGroup(cmd)
+        return autoscalevmgroup
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createAutoScaleVmGroup.createAutoScaleVmGroupCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.createAutoScaleVmGroup(cmd)
+        return AutoScaleVmGroup(autoscalevmgroup.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAutoScaleVmGroups.listAutoScaleVmGroupsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.listAutoScaleVmGroups(cmd)
+        return map(lambda e: AutoScaleVmGroup(e.__dict__), autoscalevmgroup)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateAutoScaleVmGroup.updateAutoScaleVmGroupCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.updateAutoScaleVmGroup(cmd)
+        return autoscalevmgroup
+
+
+    def disable(self, apiclient, **kwargs):
+        cmd = disableAutoScaleVmGroup.disableAutoScaleVmGroupCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.disableAutoScaleVmGroup(cmd)
+        return autoscalevmgroup
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteAutoScaleVmGroup.deleteAutoScaleVmGroupCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmgroup = apiclient.deleteAutoScaleVmGroup(cmd)
+        return autoscalevmgroup
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/AutoScaleVmProfile.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/AutoScaleVmProfile.py b/tools/marvin/marvin/base/AutoScaleVmProfile.py
new file mode 100644
index 0000000..ccdadf1
--- /dev/null
+++ b/tools/marvin/marvin/base/AutoScaleVmProfile.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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createAutoScaleVmProfile
+from marvin.cloudstackAPI import listAutoScaleVmProfiles
+from marvin.cloudstackAPI import updateAutoScaleVmProfile
+from marvin.cloudstackAPI import deleteAutoScaleVmProfile
+
+class AutoScaleVmProfile(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createAutoScaleVmProfile.createAutoScaleVmProfileCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmprofile = apiclient.createAutoScaleVmProfile(cmd)
+        return AutoScaleVmProfile(autoscalevmprofile.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listAutoScaleVmProfiles.listAutoScaleVmProfilesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmprofile = apiclient.listAutoScaleVmProfiles(cmd)
+        return map(lambda e: AutoScaleVmProfile(e.__dict__), autoscalevmprofile)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateAutoScaleVmProfile.updateAutoScaleVmProfileCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmprofile = apiclient.updateAutoScaleVmProfile(cmd)
+        return autoscalevmprofile
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteAutoScaleVmProfile.deleteAutoScaleVmProfileCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        autoscalevmprofile = apiclient.deleteAutoScaleVmProfile(cmd)
+        return autoscalevmprofile
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/BigSwitchVnsDevice.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/BigSwitchVnsDevice.py b/tools/marvin/marvin/base/BigSwitchVnsDevice.py
new file mode 100644
index 0000000..51df5de
--- /dev/null
+++ b/tools/marvin/marvin/base/BigSwitchVnsDevice.py
@@ -0,0 +1,54 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import addBigSwitchVnsDevice
+from marvin.cloudstackAPI import listBigSwitchVnsDevices
+from marvin.cloudstackAPI import deleteBigSwitchVnsDevice
+
+class BigSwitchVnsDevice(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def add(self, apiclient, physicalnetworkid, hostname, **kwargs):
+        cmd = addBigSwitchVnsDevice.addBigSwitchVnsDeviceCmd()
+        cmd.id = self.id
+        cmd.hostname = hostname
+        cmd.physicalnetworkid = physicalnetworkid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        bigswitchvnsdevice = apiclient.addBigSwitchVnsDevice(cmd)
+        return bigswitchvnsdevice
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listBigSwitchVnsDevices.listBigSwitchVnsDevicesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        bigswitchvnsdevice = apiclient.listBigSwitchVnsDevices(cmd)
+        return map(lambda e: BigSwitchVnsDevice(e.__dict__), bigswitchvnsdevice)
+
+
+    def delete(self, apiclient, vnsdeviceid, **kwargs):
+        cmd = deleteBigSwitchVnsDevice.deleteBigSwitchVnsDeviceCmd()
+        cmd.id = self.id
+        cmd.vnsdeviceid = vnsdeviceid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        bigswitchvnsdevice = apiclient.deleteBigSwitchVnsDevice(cmd)
+        return bigswitchvnsdevice
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Capabilities.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Capabilities.py b/tools/marvin/marvin/base/Capabilities.py
new file mode 100644
index 0000000..3c2ab6b
--- /dev/null
+++ b/tools/marvin/marvin/base/Capabilities.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listCapabilities
+
+class Capabilities(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listCapabilities.listCapabilitiesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        capabilities = apiclient.listCapabilities(cmd)
+        return map(lambda e: Capabilities(e.__dict__), capabilities)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Capacity.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Capacity.py b/tools/marvin/marvin/base/Capacity.py
new file mode 100644
index 0000000..a93c375
--- /dev/null
+++ b/tools/marvin/marvin/base/Capacity.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listCapacity
+
+class Capacity(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listCapacity.listCapacityCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        capacity = apiclient.listCapacity(cmd)
+        return map(lambda e: Capacity(e.__dict__), capacity)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/CloudIdentifier.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/CloudIdentifier.py b/tools/marvin/marvin/base/CloudIdentifier.py
new file mode 100644
index 0000000..7caeaac
--- /dev/null
+++ b/tools/marvin/marvin/base/CloudIdentifier.py
@@ -0,0 +1,34 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import getCloudIdentifier
+
+class CloudIdentifier(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def get(self, apiclient, userid, **kwargs):
+        cmd = getCloudIdentifier.getCloudIdentifierCmd()
+        cmd.id = self.id
+        cmd.userid = userid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        cloudidentifier = apiclient.getCloudIdentifier(cmd)
+        return cloudidentifier
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/CloudStackEntity.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/CloudStackEntity.py b/tools/marvin/marvin/base/CloudStackEntity.py
new file mode 100644
index 0000000..879506c
--- /dev/null
+++ b/tools/marvin/marvin/base/CloudStackEntity.py
@@ -0,0 +1,25 @@
+# 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.
+
+cloudstack_version = "4.1.0"
+
+class CloudStackEntity(object):
+
+    __version__ = cloudstack_version
+
+    def getVersion(self):
+        return self.__version__

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Cluster.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Cluster.py b/tools/marvin/marvin/base/Cluster.py
new file mode 100644
index 0000000..cf9a869
--- /dev/null
+++ b/tools/marvin/marvin/base/Cluster.py
@@ -0,0 +1,65 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import addCluster
+from marvin.cloudstackAPI import listClusters
+from marvin.cloudstackAPI import updateCluster
+from marvin.cloudstackAPI import deleteCluster
+
+class Cluster(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def add(self, apiclient, clustername, hypervisor, zoneid, clustertype, podid, **kwargs):
+        cmd = addCluster.addClusterCmd()
+        cmd.id = self.id
+        cmd.clustername = clustername
+        cmd.clustertype = clustertype
+        cmd.hypervisor = hypervisor
+        cmd.podid = podid
+        cmd.zoneid = zoneid
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        cluster = apiclient.addCluster(cmd)
+        return cluster
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listClusters.listClustersCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        cluster = apiclient.listClusters(cmd)
+        return map(lambda e: Cluster(e.__dict__), cluster)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateCluster.updateClusterCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        cluster = apiclient.updateCluster(cmd)
+        return cluster
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteCluster.deleteClusterCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        cluster = apiclient.deleteCluster(cmd)
+        return cluster
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Condition.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Condition.py b/tools/marvin/marvin/base/Condition.py
new file mode 100644
index 0000000..e8bd33d
--- /dev/null
+++ b/tools/marvin/marvin/base/Condition.py
@@ -0,0 +1,52 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createCondition
+from marvin.cloudstackAPI import listConditions
+from marvin.cloudstackAPI import deleteCondition
+
+class Condition(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createCondition.createConditionCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        condition = apiclient.createCondition(cmd)
+        return Condition(condition.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listConditions.listConditionsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        condition = apiclient.listConditions(cmd)
+        return map(lambda e: Condition(e.__dict__), condition)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteCondition.deleteConditionCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        condition = apiclient.deleteCondition(cmd)
+        return condition
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Configuration.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Configuration.py b/tools/marvin/marvin/base/Configuration.py
new file mode 100644
index 0000000..dc5db1c
--- /dev/null
+++ b/tools/marvin/marvin/base/Configuration.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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listConfigurations
+from marvin.cloudstackAPI import updateConfiguration
+
+class Configuration(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listConfigurations.listConfigurationsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        configuration = apiclient.listConfigurations(cmd)
+        return map(lambda e: Configuration(e.__dict__), configuration)
+
+
+    def update(self, apiclient, name, **kwargs):
+        cmd = updateConfiguration.updateConfigurationCmd()
+        cmd.id = self.id
+        cmd.name = name
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        configuration = apiclient.updateConfiguration(cmd)
+        return configuration
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Counter.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Counter.py b/tools/marvin/marvin/base/Counter.py
new file mode 100644
index 0000000..4794444
--- /dev/null
+++ b/tools/marvin/marvin/base/Counter.py
@@ -0,0 +1,52 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createCounter
+from marvin.cloudstackAPI import listCounters
+from marvin.cloudstackAPI import deleteCounter
+
+class Counter(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createCounter.createCounterCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        counter = apiclient.createCounter(cmd)
+        return Counter(counter.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listCounters.listCountersCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        counter = apiclient.listCounters(cmd)
+        return map(lambda e: Counter(e.__dict__), counter)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteCounter.deleteCounterCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        counter = apiclient.deleteCounter(cmd)
+        return counter
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/CustomCertificate.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/CustomCertificate.py b/tools/marvin/marvin/base/CustomCertificate.py
new file mode 100644
index 0000000..df92ed6
--- /dev/null
+++ b/tools/marvin/marvin/base/CustomCertificate.py
@@ -0,0 +1,35 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import uploadCustomCertificate
+
+class CustomCertificate(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    def upload(self, apiclient, domainsuffix, certificate, **kwargs):
+        cmd = uploadCustomCertificate.uploadCustomCertificateCmd()
+        cmd.id = self.id
+        cmd.certificate = certificate
+        cmd.domainsuffix = domainsuffix
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        customcertificate = apiclient.uploadCustomCertificate(cmd)
+        return customcertificate
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/DiskOffering.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/DiskOffering.py b/tools/marvin/marvin/base/DiskOffering.py
new file mode 100644
index 0000000..c1ac61f
--- /dev/null
+++ b/tools/marvin/marvin/base/DiskOffering.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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createDiskOffering
+from marvin.cloudstackAPI import listDiskOfferings
+from marvin.cloudstackAPI import updateDiskOffering
+from marvin.cloudstackAPI import deleteDiskOffering
+
+class DiskOffering(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createDiskOffering.createDiskOfferingCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        diskoffering = apiclient.createDiskOffering(cmd)
+        return DiskOffering(diskoffering.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listDiskOfferings.listDiskOfferingsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        diskoffering = apiclient.listDiskOfferings(cmd)
+        return map(lambda e: DiskOffering(e.__dict__), diskoffering)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateDiskOffering.updateDiskOfferingCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        diskoffering = apiclient.updateDiskOffering(cmd)
+        return diskoffering
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteDiskOffering.deleteDiskOfferingCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        diskoffering = apiclient.deleteDiskOffering(cmd)
+        return diskoffering
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Domain.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Domain.py b/tools/marvin/marvin/base/Domain.py
new file mode 100644
index 0000000..614ecfe
--- /dev/null
+++ b/tools/marvin/marvin/base/Domain.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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createDomain
+from marvin.cloudstackAPI import listDomains
+from marvin.cloudstackAPI import updateDomain
+from marvin.cloudstackAPI import deleteDomain
+
+class Domain(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createDomain.createDomainCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        domain = apiclient.createDomain(cmd)
+        return Domain(domain.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listDomains.listDomainsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        domain = apiclient.listDomains(cmd)
+        return map(lambda e: Domain(e.__dict__), domain)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateDomain.updateDomainCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        domain = apiclient.updateDomain(cmd)
+        return domain
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteDomain.deleteDomainCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        domain = apiclient.deleteDomain(cmd)
+        return domain
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/DomainChildren.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/DomainChildren.py b/tools/marvin/marvin/base/DomainChildren.py
new file mode 100644
index 0000000..c69aa5f
--- /dev/null
+++ b/tools/marvin/marvin/base/DomainChildren.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listDomainChildren
+
+class DomainChildren(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listDomainChildren.listDomainChildrenCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        domainchildren = apiclient.listDomainChildren(cmd)
+        return map(lambda e: DomainChildren(e.__dict__), domainchildren)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/EgressFirewallRule.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/EgressFirewallRule.py b/tools/marvin/marvin/base/EgressFirewallRule.py
new file mode 100644
index 0000000..36ff33a
--- /dev/null
+++ b/tools/marvin/marvin/base/EgressFirewallRule.py
@@ -0,0 +1,52 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createEgressFirewallRule
+from marvin.cloudstackAPI import listEgressFirewallRules
+from marvin.cloudstackAPI import deleteEgressFirewallRule
+
+class EgressFirewallRule(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createEgressFirewallRule.createEgressFirewallRuleCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        egressfirewallrule = apiclient.createEgressFirewallRule(cmd)
+        return EgressFirewallRule(egressfirewallrule.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listEgressFirewallRules.listEgressFirewallRulesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        egressfirewallrule = apiclient.listEgressFirewallRules(cmd)
+        return map(lambda e: EgressFirewallRule(e.__dict__), egressfirewallrule)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteEgressFirewallRule.deleteEgressFirewallRuleCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        egressfirewallrule = apiclient.deleteEgressFirewallRule(cmd)
+        return egressfirewallrule
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/EventTypes.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/EventTypes.py b/tools/marvin/marvin/base/EventTypes.py
new file mode 100644
index 0000000..1be92f4
--- /dev/null
+++ b/tools/marvin/marvin/base/EventTypes.py
@@ -0,0 +1,33 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listEventTypes
+
+class EventTypes(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listEventTypes.listEventTypesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        eventtypes = apiclient.listEventTypes(cmd)
+        return map(lambda e: EventTypes(e.__dict__), eventtypes)
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/Events.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Events.py b/tools/marvin/marvin/base/Events.py
new file mode 100644
index 0000000..e09bd09
--- /dev/null
+++ b/tools/marvin/marvin/base/Events.py
@@ -0,0 +1,42 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import listEvents
+from marvin.cloudstackAPI import deleteEvents
+
+class Events(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listEvents.listEventsCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        events = apiclient.listEvents(cmd)
+        return map(lambda e: Events(e.__dict__), events)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteEvents.deleteEventsCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        events = apiclient.deleteEvents(cmd)
+        return events
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/FirewallRule.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/FirewallRule.py b/tools/marvin/marvin/base/FirewallRule.py
new file mode 100644
index 0000000..b6e03bf
--- /dev/null
+++ b/tools/marvin/marvin/base/FirewallRule.py
@@ -0,0 +1,52 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createFirewallRule
+from marvin.cloudstackAPI import listFirewallRules
+from marvin.cloudstackAPI import deleteFirewallRule
+
+class FirewallRule(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createFirewallRule.createFirewallRuleCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        firewallrule = apiclient.createFirewallRule(cmd)
+        return FirewallRule(firewallrule.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listFirewallRules.listFirewallRulesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        firewallrule = apiclient.listFirewallRules(cmd)
+        return map(lambda e: FirewallRule(e.__dict__), firewallrule)
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteFirewallRule.deleteFirewallRuleCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        firewallrule = apiclient.deleteFirewallRule(cmd)
+        return firewallrule
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd838d72/tools/marvin/marvin/base/GlobalLoadBalancerRule.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/GlobalLoadBalancerRule.py b/tools/marvin/marvin/base/GlobalLoadBalancerRule.py
new file mode 100644
index 0000000..0ade923
--- /dev/null
+++ b/tools/marvin/marvin/base/GlobalLoadBalancerRule.py
@@ -0,0 +1,80 @@
+# 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.
+from marvin.base import CloudStackEntity
+from marvin.cloudstackAPI import createGlobalLoadBalancerRule
+from marvin.cloudstackAPI import listGlobalLoadBalancerRules
+from marvin.cloudstackAPI import updateGlobalLoadBalancerRule
+from marvin.cloudstackAPI import deleteGlobalLoadBalancerRule
+from marvin.cloudstackAPI import removeFromGlobalLoadBalancerRule
+from marvin.cloudstackAPI import assignToGlobalLoadBalancerRule
+
+class GlobalLoadBalancerRule(CloudStackEntity.CloudStackEntity):
+
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+
+    @classmethod
+    def create(cls, apiclient, factory, **kwargs):
+        cmd = createGlobalLoadBalancerRule.createGlobalLoadBalancerRuleCmd()
+        [setattr(cmd, factoryKey, factoryValue) for factoryKey, factoryValue in factory.__dict__.iteritems()]
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        globalloadbalancerrule = apiclient.createGlobalLoadBalancerRule(cmd)
+        return GlobalLoadBalancerRule(globalloadbalancerrule.__dict__)
+
+
+    @classmethod
+    def list(self, apiclient, **kwargs):
+        cmd = listGlobalLoadBalancerRules.listGlobalLoadBalancerRulesCmd()
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        globalloadbalancerrule = apiclient.listGlobalLoadBalancerRules(cmd)
+        return map(lambda e: GlobalLoadBalancerRule(e.__dict__), globalloadbalancerrule)
+
+
+    def update(self, apiclient, **kwargs):
+        cmd = updateGlobalLoadBalancerRule.updateGlobalLoadBalancerRuleCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        globalloadbalancerrule = apiclient.updateGlobalLoadBalancerRule(cmd)
+        return globalloadbalancerrule
+
+
+    def delete(self, apiclient, **kwargs):
+        cmd = deleteGlobalLoadBalancerRule.deleteGlobalLoadBalancerRuleCmd()
+        cmd.id = self.id
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        globalloadbalancerrule = apiclient.deleteGlobalLoadBalancerRule(cmd)
+        return globalloadbalancerrule
+
+
+    def remove(self, apiclient, loadbalancerrulelist, **kwargs):
+        cmd = removeFromGlobalLoadBalancerRule.removeFromGlobalLoadBalancerRuleCmd()
+        cmd.id = self.id
+        cmd.loadbalancerrulelist = loadbalancerrulelist
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        fromgloballoadbalancerrule = apiclient.removeFromGlobalLoadBalancerRule(cmd)
+        return fromgloballoadbalancerrule
+
+
+    def assign(self, apiclient, loadbalancerrulelist, **kwargs):
+        cmd = assignToGlobalLoadBalancerRule.assignToGlobalLoadBalancerRuleCmd()
+        cmd.id = self.id
+        cmd.loadbalancerrulelist = loadbalancerrulelist
+        [setattr(cmd, key, value) for key,value in kwargs.iteritems()]
+        togloballoadbalancerrule = apiclient.assignToGlobalLoadBalancerRule(cmd)
+        return togloballoadbalancerrule