You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2023/01/06 11:16:17 UTC

[cloudstack] 01/01: Merge branch 'main' of github.com:apache/cloudstack into wip-integrate-tungsten-with-cloudstack

This is an automated email from the ASF dual-hosted git repository.

davidjumani pushed a commit to branch tungsten-integration
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 851f8472aa72d6e40d290d4736a51646a09d09f1
Merge: 21d91db349 20306d6129
Author: davidjumani <dj...@gmail.com>
AuthorDate: Fri Jan 6 15:51:37 2023 +0530

    Merge branch 'main' of github.com:apache/cloudstack into wip-integrate-tungsten-with-cloudstack

 .github/boring-cyborg.yml                          |    4 +-
 .github/linters/.flake8                            |    9 +-
 .github/workflows/build.yml                        |   66 ++
 .github/workflows/ci.yml                           |  280 +++++
 .github/workflows/codecov.yml                      |    4 +
 .github/workflows/linter.yml                       |    4 +
 .../{main-coverage.yml => main-sonar-check.yml}    |    6 +-
 .github/workflows/merge-conflict-checker.yml       |    4 +
 .github/workflows/{codecov.yml => rat.yml}         |   41 +-
 .../{coverage-check.yml => sonar-check.yml}        |   41 +-
 tools/travis/script.sh => .github/workflows/ui.yml |   48 +-
 .travis.yml                                        |  228 ----
 README.md                                          |    9 +-
 agent/conf/agent.properties                        |  495 ++++----
 agent/src/main/java/com/cloud/agent/Agent.java     |    3 +-
 .../src/main/java/com/cloud/agent/AgentShell.java  |  136 ++-
 .../src/main/java/com/cloud/agent/IAgentShell.java |    1 -
 .../cloud/agent/properties/AgentProperties.java    |  712 +++++++++++-
 .../properties/AgentPropertiesFileHandler.java     |   40 +-
 .../test/java/com/cloud/agent/AgentShellTest.java  |  308 +++++
 .../properties/AgentPropertiesFileHandlerTest.java |   52 +
 .../agent/properties/AgentPropertiesTest.java      |   43 +
 .../java/com/cloud/agent/api/to/IpAddressTO.java   |   18 +-
 .../main/java/com/cloud/agent/api/to/NicTO.java    |    9 +
 .../com/cloud/deploy/DataCenterDeployment.java     |   31 +
 .../main/java/com/cloud/deploy/DeploymentPlan.java |   19 +
 .../src/main/java/com/cloud/host/ControlState.java |   51 +-
 api/src/main/java/com/cloud/network/Network.java   |    4 +
 .../main/java/com/cloud/network/NetworkModel.java  |    5 +-
 .../java/com/cloud/network/NetworkProfile.java     |   12 +
 .../java/com/cloud/network/NetworkService.java     |   16 +
 api/src/main/java/com/cloud/network/vpc/Vpc.java   |    2 +
 .../java/com/cloud/network/vpc/VpcService.java     |    9 +-
 api/src/main/java/com/cloud/vm/Nic.java            |    2 +
 api/src/main/java/com/cloud/vm/NicProfile.java     |   11 +
 .../java/com/cloud/vm/VirtualMachineProfile.java   |    1 +
 .../org/apache/cloudstack/alert/AlertService.java  |    2 +
 .../org/apache/cloudstack/api/ApiConstants.java    |    9 +
 .../java/org/apache/cloudstack/api/BaseCmd.java    |   38 +-
 .../command/admin/account/CreateAccountCmd.java    |    6 -
 .../command/admin/account/DeleteAccountCmd.java    |   10 -
 .../command/admin/account/DisableAccountCmd.java   |    6 -
 .../command/admin/account/EnableAccountCmd.java    |    6 -
 .../api/command/admin/account/LockAccountCmd.java  |    6 -
 .../command/admin/account/UpdateAccountCmd.java    |    6 -
 .../api/command/admin/acl/CreateRoleCmd.java       |    9 +-
 .../command/admin/acl/CreateRolePermissionCmd.java |    9 +-
 .../api/command/admin/acl/DeleteRoleCmd.java       |    8 +-
 .../command/admin/acl/DeleteRolePermissionCmd.java |    8 +-
 .../api/command/admin/acl/ImportRoleCmd.java       |    9 +-
 .../command/admin/acl/ListRolePermissionsCmd.java  |    8 +-
 .../api/command/admin/acl/ListRolesCmd.java        |    8 +-
 .../api/command/admin/acl/UpdateRoleCmd.java       |    8 +-
 .../command/admin/acl/UpdateRolePermissionCmd.java |   10 +-
 .../admin/acl/project/CreateProjectRoleCmd.java    |    8 +-
 .../project/CreateProjectRolePermissionCmd.java    |    8 +-
 .../admin/acl/project/DeleteProjectRoleCmd.java    |    8 +-
 .../project/DeleteProjectRolePermissionCmd.java    |    8 +-
 .../acl/project/ListProjectRolePermissionsCmd.java |    8 +-
 .../admin/acl/project/ListProjectRolesCmd.java     |    8 +-
 .../admin/acl/project/UpdateProjectRoleCmd.java    |    8 +-
 .../project/UpdateProjectRolePermissionCmd.java    |    8 +-
 .../api/command/admin/alert/GenerateAlertCmd.java  |    8 +-
 .../command/admin/annotation/AddAnnotationCmd.java |    8 +-
 .../admin/annotation/ListAnnotationsCmd.java       |   11 +-
 .../admin/annotation/RemoveAnnotationCmd.java      |    8 +-
 .../annotation/UpdateAnnotationVisibilityCmd.java  |    8 +-
 .../command/admin/autoscale/DeleteCounterCmd.java  |    6 -
 .../admin/backup/DeleteBackupOfferingCmd.java      |    8 +-
 .../admin/backup/ImportBackupOfferingCmd.java      |    8 +-
 .../backup/ListBackupProviderOfferingsCmd.java     |    7 +-
 .../admin/backup/ListBackupProvidersCmd.java       |    8 +-
 .../admin/backup/UpdateBackupOfferingCmd.java      |    8 +-
 .../api/command/admin/ca/IssueCertificateCmd.java  |    8 +-
 .../api/command/admin/ca/ListCAProvidersCmd.java   |    8 +-
 .../api/command/admin/ca/ListCaCertificateCmd.java |    8 +-
 .../command/admin/ca/ProvisionCertificateCmd.java  |    9 +-
 .../api/command/admin/ca/RevokeCertificateCmd.java |    8 +-
 .../api/command/admin/cluster/AddClusterCmd.java   |    6 -
 .../command/admin/cluster/DeleteClusterCmd.java    |    6 -
 .../api/command/admin/cluster/ListClustersCmd.java |    6 -
 .../command/admin/cluster/UpdateClusterCmd.java    |    6 -
 .../api/command/admin/config/ListCfgsByCmd.java    |    6 -
 .../admin/config/ListDeploymentPlannersCmd.java    |    6 -
 .../config/ListHypervisorCapabilitiesCmd.java      |    6 -
 .../api/command/admin/config/ResetCfgCmd.java      |    6 -
 .../api/command/admin/config/UpdateCfgCmd.java     |    6 -
 .../config/UpdateHypervisorCapabilitiesCmd.java    |    6 -
 .../admin/diagnostics/GetDiagnosticsDataCmd.java   |    8 +-
 .../admin/diagnostics/RunDiagnosticsCmd.java       |   11 +-
 .../ListTemplateDirectDownloadCertificatesCmd.java |    9 +-
 ...visionTemplateDirectDownloadCertificateCmd.java |    8 +-
 ...RevokeTemplateDirectDownloadCertificateCmd.java |   10 +-
 ...UploadTemplateDirectDownloadCertificateCmd.java |  240 ++--
 .../api/command/admin/domain/CreateDomainCmd.java  |    6 -
 .../api/command/admin/domain/DeleteDomainCmd.java  |    6 -
 .../admin/domain/ListDomainChildrenCmd.java        |    6 -
 .../api/command/admin/domain/UpdateDomainCmd.java  |    6 -
 .../api/command/admin/guest/AddGuestOsCmd.java     |    6 -
 .../command/admin/guest/AddGuestOsMappingCmd.java  |    6 -
 .../command/admin/guest/ListGuestOsMappingCmd.java |    8 +-
 .../api/command/admin/guest/RemoveGuestOsCmd.java  |    6 -
 .../admin/guest/RemoveGuestOsMappingCmd.java       |    6 -
 .../api/command/admin/guest/UpdateGuestOsCmd.java  |    6 -
 .../admin/guest/UpdateGuestOsMappingCmd.java       |    6 -
 .../command/admin/ha/ConfigureHAForHostCmd.java    |    9 +-
 .../command/admin/ha/DisableHAForClusterCmd.java   |    8 +-
 .../api/command/admin/ha/DisableHAForHostCmd.java  |    9 +-
 .../api/command/admin/ha/DisableHAForZoneCmd.java  |    8 +-
 .../command/admin/ha/EnableHAForClusterCmd.java    |    8 +-
 .../api/command/admin/ha/EnableHAForHostCmd.java   |    9 +-
 .../api/command/admin/ha/EnableHAForZoneCmd.java   |    8 +-
 .../command/admin/ha/ListHostHAProvidersCmd.java   |    8 +-
 .../command/admin/ha/ListHostHAResourcesCmd.java   |    8 +-
 .../api/command/admin/host/AddHostCmd.java         |    6 -
 .../command/admin/host/AddSecondaryStorageCmd.java |    6 -
 .../admin/host/CancelHostAsDegradedCmd.java        |    5 -
 .../command/admin/host/CancelMaintenanceCmd.java   |    6 -
 .../admin/host/DeclareHostAsDegradedCmd.java       |    5 -
 .../api/command/admin/host/DeleteHostCmd.java      |    6 -
 .../admin/host/FindHostsForMigrationCmd.java       |    6 -
 .../api/command/admin/host/ListHostTagsCmd.java    |    8 +-
 .../api/command/admin/host/ListHostsCmd.java       |    6 -
 .../admin/host/PrepareForMaintenanceCmd.java       |    6 -
 .../api/command/admin/host/ReconnectHostCmd.java   |    6 -
 .../admin/host/ReleaseHostReservationCmd.java      |    6 -
 .../api/command/admin/host/UpdateHostCmd.java      |    6 -
 .../command/admin/host/UpdateHostPasswordCmd.java  |    6 -
 .../ConfigureInternalLoadBalancerElementCmd.java   |    6 -
 .../CreateInternalLoadBalancerElementCmd.java      |    6 -
 .../ListInternalLoadBalancerElementsCmd.java       |    6 -
 .../api/command/admin/management/ListMgmtsCmd.java |    9 +-
 .../command/admin/network/AddNetworkDeviceCmd.java |    6 -
 .../network/AddNetworkServiceProviderCmd.java      |    6 -
 .../network/CreateGuestNetworkIpv6PrefixCmd.java   |    8 +-
 .../network/CreateManagementNetworkIpRangeCmd.java |    8 +-
 .../admin/network/CreateNetworkOfferingCmd.java    |   10 -
 .../admin/network/CreatePhysicalNetworkCmd.java    |    6 -
 .../network/CreateStorageNetworkIpRangeCmd.java    |    6 -
 .../admin/network/DedicateGuestVlanRangeCmd.java   |    6 -
 .../network/DeleteGuestNetworkIpv6PrefixCmd.java   |    8 +-
 .../network/DeleteManagementNetworkIpRangeCmd.java |   10 +-
 .../admin/network/DeleteNetworkDeviceCmd.java      |    6 -
 .../admin/network/DeleteNetworkOfferingCmd.java    |    6 -
 .../network/DeleteNetworkServiceProviderCmd.java   |    6 -
 .../admin/network/DeletePhysicalNetworkCmd.java    |    6 -
 .../network/DeleteStorageNetworkIpRangeCmd.java    |    6 -
 .../network/ListDedicatedGuestVlanRangesCmd.java   |    6 -
 .../network/ListGuestNetworkIpv6PrefixesCmd.java   |    8 +-
 .../command/admin/network/ListGuestVlansCmd.java   |    8 +-
 .../network/ListNetworkIsolationMethodsCmd.java    |    6 -
 .../network/ListNetworkServiceProvidersCmd.java    |    6 -
 .../admin/network/ListPhysicalNetworksCmd.java     |    6 -
 .../network/ListStorageNetworkIpRangeCmd.java      |    5 -
 .../network/ListSupportedNetworkServicesCmd.java   |    6 -
 .../command/admin/network/MigrateNetworkCmd.java   |    9 +-
 .../api/command/admin/network/MigrateVPCCmd.java   |    9 +-
 .../network/ReleaseDedicatedGuestVlanRangeCmd.java |    6 -
 .../admin/network/UpdateNetworkOfferingCmd.java    |    6 -
 .../network/UpdateNetworkServiceProviderCmd.java   |    6 -
 .../admin/network/UpdatePhysicalNetworkCmd.java    |    6 -
 .../UpdatePodManagementNetworkIpRangeCmd.java      |    8 +-
 .../network/UpdateStorageNetworkIpRangeCmd.java    |    6 -
 .../admin/offering/CreateDiskOfferingCmd.java      |    6 -
 .../admin/offering/CreateServiceOfferingCmd.java   |    6 -
 .../admin/offering/DeleteDiskOfferingCmd.java      |    6 -
 .../admin/offering/DeleteServiceOfferingCmd.java   |    6 -
 .../admin/offering/UpdateDiskOfferingCmd.java      |    6 -
 .../admin/offering/UpdateServiceOfferingCmd.java   |    6 -
 .../ChangeOutOfBandManagementPasswordCmd.java      |    9 +-
 .../ConfigureOutOfBandManagementCmd.java           |    8 +-
 .../DisableOutOfBandManagementForClusterCmd.java   |    8 +-
 .../DisableOutOfBandManagementForHostCmd.java      |    8 +-
 .../DisableOutOfBandManagementForZoneCmd.java      |    8 +-
 .../EnableOutOfBandManagementForClusterCmd.java    |    8 +-
 .../EnableOutOfBandManagementForHostCmd.java       |    8 +-
 .../EnableOutOfBandManagementForZoneCmd.java       |    8 +-
 .../IssueOutOfBandManagementPowerActionCmd.java    |    9 +-
 .../api/command/admin/pod/CreatePodCmd.java        |    8 -
 .../api/command/admin/pod/DeletePodCmd.java        |    6 -
 .../api/command/admin/pod/ListPodsByCmd.java       |    6 -
 .../api/command/admin/pod/UpdatePodCmd.java        |    6 -
 .../api/command/admin/region/AddRegionCmd.java     |    6 -
 .../admin/region/CreatePortableIpRangeCmd.java     |    6 -
 .../api/command/admin/region/RemoveRegionCmd.java  |    6 -
 .../api/command/admin/region/UpdateRegionCmd.java  |    6 -
 .../command/admin/resource/ArchiveAlertsCmd.java   |    6 -
 .../command/admin/resource/DeleteAlertsCmd.java    |    6 -
 .../api/command/admin/resource/ListAlertsCmd.java  |    6 -
 .../command/admin/resource/ListCapacityCmd.java    |    6 -
 .../admin/resource/StartRollingMaintenanceCmd.java |   11 +-
 .../admin/resource/UploadCustomCertificateCmd.java |    6 -
 .../admin/resource/icon/DeleteResourceIconCmd.java |    6 -
 .../admin/resource/icon/ListResourceIconCmd.java   |    6 -
 .../admin/resource/icon/UploadResourceIconCmd.java |    6 -
 .../admin/router/ConfigureOvsElementCmd.java       |    6 -
 .../router/ConfigureVirtualRouterElementCmd.java   |    6 -
 .../router/CreateVirtualRouterElementCmd.java      |    6 -
 .../api/command/admin/router/DestroyRouterCmd.java |    6 -
 .../router/GetRouterHealthCheckResultsCmd.java     |    8 +-
 .../command/admin/router/ListOvsElementsCmd.java   |    6 -
 .../api/command/admin/router/ListRoutersCmd.java   |    6 -
 .../admin/router/ListVirtualRouterElementsCmd.java |    6 -
 .../api/command/admin/router/RebootRouterCmd.java  |    6 -
 .../api/command/admin/router/StartRouterCmd.java   |    6 -
 .../api/command/admin/router/StopRouterCmd.java    |    6 -
 .../api/command/admin/router/UpgradeRouterCmd.java |    6 -
 .../admin/router/UpgradeRouterTemplateCmd.java     |    6 -
 .../command/admin/storage/AddImageStoreCmd.java    |    6 -
 .../storage/CreateSecondaryStagingStoreCmd.java    |    6 -
 .../admin/storage/CreateStoragePoolCmd.java        |    6 -
 .../command/admin/storage/DeleteImageStoreCmd.java |    6 -
 .../api/command/admin/storage/DeletePoolCmd.java   |    6 -
 .../storage/DeleteSecondaryStagingStoreCmd.java    |    6 -
 .../storage/FindStoragePoolsForMigrationCmd.java   |    6 -
 .../command/admin/storage/ListImageStoresCmd.java  |    6 -
 .../command/admin/storage/ListStoragePoolsCmd.java |    6 -
 .../admin/storage/ListStorageProvidersCmd.java     |    6 -
 .../command/admin/storage/ListStorageTagsCmd.java  |    6 -
 .../storage/MigrateSecondaryStorageDataCmd.java    |   10 +-
 .../command/admin/storage/SyncStoragePoolCmd.java  |    8 +-
 .../storage/UpdateCloudToUseObjectStoreCmd.java    |    6 -
 .../storage/UpdateStorageCapabilitiesCmd.java      |    9 +-
 .../admin/storage/UpdateStoragePoolCmd.java        |    6 -
 .../api/command/admin/swift/AddSwiftCmd.java       |    6 -
 .../api/command/admin/swift/ListSwiftsCmd.java     |    6 -
 .../command/admin/systemvm/DestroySystemVmCmd.java |    6 -
 .../command/admin/systemvm/ListSystemVMsCmd.java   |    6 -
 .../command/admin/systemvm/MigrateSystemVMCmd.java |    6 -
 .../command/admin/systemvm/PatchSystemVMCmd.java   |    9 +-
 .../command/admin/systemvm/RebootSystemVmCmd.java  |    6 -
 .../command/admin/systemvm/StartSystemVMCmd.java   |    6 -
 .../command/admin/systemvm/StopSystemVmCmd.java    |    6 -
 .../command/admin/systemvm/UpgradeSystemVMCmd.java |    6 -
 .../command/admin/template/PrepareTemplateCmd.java |    6 -
 .../command/admin/usage/AddTrafficMonitorCmd.java  |    6 -
 .../api/command/admin/usage/AddTrafficTypeCmd.java |    6 -
 .../admin/usage/DeleteTrafficMonitorCmd.java       |    6 -
 .../command/admin/usage/DeleteTrafficTypeCmd.java  |    6 -
 .../admin/usage/GenerateUsageRecordsCmd.java       |    6 -
 .../admin/usage/ListTrafficMonitorsCmd.java        |    6 -
 .../usage/ListTrafficTypeImplementorsCmd.java      |    5 -
 .../command/admin/usage/ListTrafficTypesCmd.java   |    6 -
 .../command/admin/usage/ListUsageRecordsCmd.java   |    9 +-
 .../api/command/admin/usage/ListUsageTypesCmd.java |    6 -
 .../admin/usage/RemoveRawUsageRecordsCmd.java      |    6 -
 .../command/admin/usage/UpdateTrafficTypeCmd.java  |    6 -
 .../api/command/admin/user/CreateUserCmd.java      |    6 -
 .../api/command/admin/user/DeleteUserCmd.java      |    6 -
 .../api/command/admin/user/DisableUserCmd.java     |    6 -
 .../api/command/admin/user/EnableUserCmd.java      |    6 -
 .../api/command/admin/user/GetUserCmd.java         |    6 -
 .../api/command/admin/user/GetUserKeysCmd.java     |   11 +-
 .../api/command/admin/user/ListUsersCmd.java       |    6 -
 .../api/command/admin/user/LockUserCmd.java        |    6 -
 .../api/command/admin/user/MoveUserCmd.java        |    6 -
 .../api/command/admin/user/RegisterCmd.java        |    6 -
 .../api/command/admin/user/UpdateUserCmd.java      |    6 -
 .../command/admin/vlan/CreateVlanIpRangeCmd.java   |    6 -
 .../admin/vlan/DedicatePublicIpRangeCmd.java       |    6 -
 .../command/admin/vlan/DeleteVlanIpRangeCmd.java   |    6 -
 .../command/admin/vlan/ListVlanIpRangesCmd.java    |    6 -
 .../admin/vlan/ReleasePublicIpRangeCmd.java        |    6 -
 .../command/admin/vlan/UpdateVlanIpRangeCmd.java   |   10 +-
 .../api/command/admin/vm/AssignVMCmd.java          |    6 -
 .../api/command/admin/vm/ExpungeVMCmd.java         |    6 -
 .../api/command/admin/vm/GetVMUserDataCmd.java     |    5 -
 .../admin/vm/ImportUnmanagedInstanceCmd.java       |    8 +-
 .../admin/vm/ListUnmanagedInstancesCmd.java        |    9 +-
 .../api/command/admin/vm/MigrateVMCmd.java         |    6 -
 .../vm/MigrateVirtualMachineWithVolumeCmd.java     |    6 -
 .../api/command/admin/vm/RecoverVMCmd.java         |    6 -
 .../command/admin/vm/UnmanageVMInstanceCmd.java    |   10 +-
 .../admin/vpc/CreatePrivateGatewayByAdminCmd.java  |    2 +-
 .../command/admin/vpc/CreateVPCOfferingCmd.java    |    6 -
 .../command/admin/vpc/DeletePrivateGatewayCmd.java |    6 -
 .../command/admin/vpc/DeleteVPCOfferingCmd.java    |    6 -
 .../command/admin/vpc/UpdateVPCOfferingCmd.java    |    6 -
 .../api/command/admin/zone/CreateZoneCmd.java      |    6 -
 .../api/command/admin/zone/DeleteZoneCmd.java      |    6 -
 .../admin/zone/MarkDefaultZoneForAccountCmd.java   |    6 -
 .../api/command/admin/zone/UpdateZoneCmd.java      |    6 -
 .../user/account/AddAccountToProjectCmd.java       |    6 -
 .../command/user/account/AddUserToProjectCmd.java  |    8 +-
 .../user/account/DeleteAccountFromProjectCmd.java  |    6 -
 .../user/account/DeleteUserFromProjectCmd.java     |    8 +-
 .../user/account/ListProjectAccountsCmd.java       |    6 -
 .../user/address/DisassociateIPAddrCmd.java        |    6 -
 .../api/command/user/address/ReleaseIPAddrCmd.java |    6 -
 .../api/command/user/address/ReserveIPAddrCmd.java |    6 -
 .../api/command/user/address/UpdateIPAddrCmd.java  |    8 +-
 .../user/affinitygroup/CreateAffinityGroupCmd.java |    6 -
 .../user/affinitygroup/DeleteAffinityGroupCmd.java |    6 -
 .../affinitygroup/ListAffinityGroupTypesCmd.java   |    6 -
 .../user/affinitygroup/ListAffinityGroupsCmd.java  |    6 -
 .../user/autoscale/DeleteAutoScalePolicyCmd.java   |    6 -
 .../user/autoscale/DeleteAutoScaleVmGroupCmd.java  |    6 -
 .../autoscale/DeleteAutoScaleVmProfileCmd.java     |    6 -
 .../command/user/autoscale/DeleteConditionCmd.java |    6 -
 .../user/autoscale/ListAutoScalePoliciesCmd.java   |    6 -
 .../user/autoscale/ListAutoScaleVmGroupsCmd.java   |    6 -
 .../user/autoscale/ListAutoScaleVmProfilesCmd.java |    6 -
 .../command/user/autoscale/ListConditionsCmd.java  |    6 -
 .../user/autoscale/UpdateAutoScalePolicyCmd.java   |    6 -
 .../user/autoscale/UpdateAutoScaleVmGroupCmd.java  |    6 -
 .../autoscale/UpdateAutoScaleVmProfileCmd.java     |    6 -
 .../command/user/autoscale/UpdateConditionCmd.java |    9 +-
 .../AssignVirtualMachineToBackupOfferingCmd.java   |   11 +-
 .../api/command/user/backup/CreateBackupCmd.java   |    9 +-
 .../user/backup/CreateBackupScheduleCmd.java       |    8 +-
 .../api/command/user/backup/DeleteBackupCmd.java   |    9 +-
 .../user/backup/DeleteBackupScheduleCmd.java       |    8 +-
 .../user/backup/ListBackupOfferingsCmd.java        |    7 +-
 .../command/user/backup/ListBackupScheduleCmd.java |   10 +-
 .../api/command/user/backup/ListBackupsCmd.java    |    9 +-
 .../RemoveVirtualMachineFromBackupOfferingCmd.java |   11 +-
 .../api/command/user/backup/RestoreBackupCmd.java  |    9 +-
 .../RestoreVolumeFromBackupAndAttachToVMCmd.java   |    9 +-
 .../user/backup/UpdateBackupScheduleCmd.java       |    3 +-
 .../command/user/config/ListCapabilitiesCmd.java   |    6 -
 .../consoleproxy/CreateConsoleEndpointCmd.java     |    8 +-
 .../api/command/user/event/ArchiveEventsCmd.java   |    6 -
 .../api/command/user/event/DeleteEventsCmd.java    |    6 -
 .../api/command/user/event/ListEventTypesCmd.java  |    6 -
 .../api/command/user/event/ListEventsCmd.java      |    6 -
 .../user/firewall/CreateEgressFirewallRuleCmd.java |    6 -
 .../user/firewall/CreateFirewallRuleCmd.java       |    6 -
 .../user/firewall/CreatePortForwardingRuleCmd.java |    6 -
 .../user/firewall/DeleteEgressFirewallRuleCmd.java |    6 -
 .../user/firewall/DeleteFirewallRuleCmd.java       |    6 -
 .../user/firewall/DeletePortForwardingRuleCmd.java |    6 -
 .../user/firewall/ListEgressFirewallRulesCmd.java  |    6 -
 .../user/firewall/ListFirewallRulesCmd.java        |    6 -
 .../user/firewall/ListPortForwardingRulesCmd.java  |    6 -
 .../user/firewall/UpdateEgressFirewallRuleCmd.java |    6 -
 .../user/firewall/UpdateFirewallRuleCmd.java       |    8 +-
 .../user/firewall/UpdatePortForwardingRuleCmd.java |    6 -
 .../user/guest/ListGuestOsCategoriesCmd.java       |    6 -
 .../api/command/user/guest/ListGuestOsCmd.java     |    6 -
 .../user/ipv6/CreateIpv6FirewallRuleCmd.java       |    8 +-
 .../user/ipv6/DeleteIpv6FirewallRuleCmd.java       |    8 +-
 .../user/ipv6/ListIpv6FirewallRulesCmd.java        |    8 +-
 .../user/ipv6/UpdateIpv6FirewallRuleCmd.java       |    8 +-
 .../api/command/user/iso/DeleteIsoCmd.java         |   10 -
 .../api/command/user/iso/ExtractIsoCmd.java        |   10 -
 .../api/command/user/job/ListAsyncJobsCmd.java     |    6 -
 .../command/user/job/QueryAsyncJobResultCmd.java   |    6 -
 .../loadbalancer/AssignCertToLoadBalancerCmd.java  |    6 -
 .../loadbalancer/AssignToLoadBalancerRuleCmd.java  |    6 -
 .../CreateApplicationLoadBalancerCmd.java          |    6 -
 .../loadbalancer/CreateLBHealthCheckPolicyCmd.java |    6 -
 .../loadbalancer/CreateLoadBalancerRuleCmd.java    |    6 -
 .../DeleteApplicationLoadBalancerCmd.java          |    6 -
 .../loadbalancer/DeleteLBHealthCheckPolicyCmd.java |    6 -
 .../loadbalancer/DeleteLoadBalancerRuleCmd.java    |    6 -
 .../user/loadbalancer/DeleteSslCertCmd.java        |    8 +-
 .../ListApplicationLoadBalancersCmd.java           |    6 -
 .../loadbalancer/ListLBHealthCheckPoliciesCmd.java |    6 -
 .../loadbalancer/ListLBStickinessPoliciesCmd.java  |    6 -
 .../loadbalancer/ListLoadBalancerRulesCmd.java     |    6 -
 .../command/user/loadbalancer/ListSslCertsCmd.java |    6 -
 .../RemoveCertFromLoadBalancerCmd.java             |    6 -
 .../RemoveFromLoadBalancerRuleCmd.java             |    6 -
 .../UpdateApplicationLoadBalancerCmd.java          |    6 -
 .../loadbalancer/UpdateLBHealthCheckPolicyCmd.java |    6 -
 .../loadbalancer/UpdateLBStickinessPolicyCmd.java  |    6 -
 .../loadbalancer/UpdateLoadBalancerRuleCmd.java    |    6 -
 .../user/loadbalancer/UploadSslCertCmd.java        |    6 -
 .../user/nat/CreateIpForwardingRuleCmd.java        |    6 -
 .../user/nat/DeleteIpForwardingRuleCmd.java        |    6 -
 .../api/command/user/nat/DisableStaticNatCmd.java  |    6 -
 .../api/command/user/nat/EnableStaticNatCmd.java   |    6 -
 .../command/user/nat/ListIpForwardingRulesCmd.java |    6 -
 .../command/user/network/CreateNetworkACLCmd.java  |    6 -
 .../user/network/CreateNetworkACLListCmd.java      |    6 -
 .../api/command/user/network/CreateNetworkCmd.java |   16 +
 .../user/network/CreateNetworkPermissionsCmd.java  |    8 +-
 .../command/user/network/DeleteNetworkACLCmd.java  |    6 -
 .../user/network/DeleteNetworkACLListCmd.java      |    6 -
 .../api/command/user/network/DeleteNetworkCmd.java |    6 -
 .../user/network/ListNetworkACLListsCmd.java       |    6 -
 .../command/user/network/ListNetworkACLsCmd.java   |    6 -
 .../user/network/ListNetworkOfferingsCmd.java      |    6 -
 .../user/network/ListNetworkPermissionsCmd.java    |    8 +-
 .../user/network/RemoveNetworkPermissionsCmd.java  |    8 +-
 .../user/network/ReplaceNetworkACLListCmd.java     |    6 -
 .../user/network/ResetNetworkPermissionsCmd.java   |    8 +-
 .../command/user/network/RestartNetworkCmd.java    |    6 -
 .../user/network/UpdateNetworkACLListCmd.java      |    6 -
 .../api/command/user/network/UpdateNetworkCmd.java |   18 +-
 .../user/offering/ListDiskOfferingsCmd.java        |    6 -
 .../user/offering/ListServiceOfferingsCmd.java     |    6 -
 .../api/command/user/project/CreateProjectCmd.java |    6 -
 .../api/command/user/project/DeleteProjectCmd.java |    6 -
 .../user/project/DeleteProjectInvitationCmd.java   |    6 -
 .../user/project/ListProjectInvitationsCmd.java    |    6 -
 .../api/command/user/project/ListProjectsCmd.java  |    6 -
 .../command/user/project/SuspendProjectCmd.java    |    6 -
 .../api/command/user/project/UpdateProjectCmd.java |    6 -
 .../user/project/UpdateProjectInvitationCmd.java   |    6 -
 .../api/command/user/region/ListRegionsCmd.java    |    6 -
 .../ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java |    6 -
 .../ha/gslb/CreateGlobalLoadBalancerRuleCmd.java   |    6 -
 .../ha/gslb/DeleteGlobalLoadBalancerRuleCmd.java   |    6 -
 .../ha/gslb/ListGlobalLoadBalancerRuleCmd.java     |    6 -
 .../ha/gslb/UpdateGlobalLoadBalancerRuleCmd.java   |    6 -
 .../user/resource/GetCloudIdentifierCmd.java       |    6 -
 .../user/resource/ListDetailOptionsCmd.java        |    8 +-
 .../command/user/resource/ListHypervisorsCmd.java  |    6 -
 .../user/resource/ListResourceLimitsCmd.java       |    6 -
 .../user/resource/UpdateResourceCountCmd.java      |    6 -
 .../user/resource/UpdateResourceLimitCmd.java      |    6 -
 .../AuthorizeSecurityGroupEgressCmd.java           |    6 -
 .../AuthorizeSecurityGroupIngressCmd.java          |    6 -
 .../user/securitygroup/CreateSecurityGroupCmd.java |    6 -
 .../user/securitygroup/DeleteSecurityGroupCmd.java |    6 -
 .../user/securitygroup/ListSecurityGroupsCmd.java  |    6 -
 .../RevokeSecurityGroupEgressCmd.java              |    6 -
 .../RevokeSecurityGroupIngressCmd.java             |    6 -
 .../user/securitygroup/UpdateSecurityGroupCmd.java |    9 +-
 .../command/user/snapshot/CreateSnapshotCmd.java   |    6 -
 .../snapshot/CreateSnapshotFromVMSnapshotCmd.java  |    6 -
 .../user/snapshot/CreateSnapshotPolicyCmd.java     |    6 -
 .../command/user/snapshot/DeleteSnapshotCmd.java   |    6 -
 .../user/snapshot/DeleteSnapshotPoliciesCmd.java   |    6 -
 .../user/snapshot/ListSnapshotPoliciesCmd.java     |    6 -
 .../command/user/snapshot/ListSnapshotsCmd.java    |    6 -
 .../command/user/snapshot/RevertSnapshotCmd.java   |    6 -
 .../user/snapshot/UpdateSnapshotPolicyCmd.java     |    8 +-
 .../api/command/user/ssh/CreateSSHKeyPairCmd.java  |    5 -
 .../api/command/user/ssh/DeleteSSHKeyPairCmd.java  |    6 -
 .../api/command/user/ssh/ListSSHKeyPairsCmd.java   |    6 -
 .../command/user/ssh/RegisterSSHKeyPairCmd.java    |    6 -
 .../api/command/user/tag/CreateTagsCmd.java        |    6 -
 .../api/command/user/tag/DeleteTagsCmd.java        |    6 -
 .../api/command/user/tag/ListTagsCmd.java          |    6 -
 .../command/user/template/DeleteTemplateCmd.java   |   10 -
 .../command/user/template/ExtractTemplateCmd.java  |   10 -
 .../command/user/userdata/DeleteUserDataCmd.java   |    6 -
 .../user/userdata/LinkUserDataToTemplateCmd.java   |    6 -
 .../api/command/user/userdata/ListUserDataCmd.java |    6 -
 .../command/user/userdata/RegisterUserDataCmd.java |    5 -
 .../api/command/user/vm/GetVMPasswordCmd.java      |    5 -
 .../api/command/user/vm/ListNicsCmd.java           |    6 -
 .../api/command/user/vm/RemoveIpFromVmNicCmd.java  |    6 -
 .../cloudstack/api/command/user/vm/StartVMCmd.java |   11 +
 .../api/command/user/vm/UpdateVmNicIpCmd.java      |    6 -
 .../api/command/user/vmgroup/CreateVMGroupCmd.java |    6 -
 .../api/command/user/vmgroup/DeleteVMGroupCmd.java |    6 -
 .../api/command/user/vmgroup/ListVMGroupsCmd.java  |    6 -
 .../api/command/user/vmgroup/UpdateVMGroupCmd.java |    6 -
 .../user/vmsnapshot/CreateVMSnapshotCmd.java       |    6 -
 .../user/vmsnapshot/DeleteVMSnapshotCmd.java       |    6 -
 .../command/user/vmsnapshot/ListVMSnapshotCmd.java |    6 -
 .../command/user/volume/AddResourceDetailCmd.java  |    6 -
 .../user/volume/ChangeOfferingForVolumeCmd.java    |    8 +-
 .../api/command/user/volume/DeleteVolumeCmd.java   |    6 -
 .../api/command/user/volume/ExtractVolumeCmd.java  |   10 -
 .../user/volume/ListResourceDetailsCmd.java        |    6 -
 .../user/volume/RemoveResourceDetailCmd.java       |    6 -
 .../api/command/user/vpc/CreateStaticRouteCmd.java |    6 -
 .../api/command/user/vpc/CreateVPCCmd.java         |    9 +
 .../api/command/user/vpc/DeleteStaticRouteCmd.java |    6 -
 .../api/command/user/vpc/DeleteVPCCmd.java         |    6 -
 .../command/user/vpc/ListPrivateGatewaysCmd.java   |    6 -
 .../api/command/user/vpc/ListStaticRoutesCmd.java  |    6 -
 .../api/command/user/vpc/ListVPCOfferingsCmd.java  |    6 -
 .../api/command/user/vpc/RestartVPCCmd.java        |    6 -
 .../api/command/user/vpc/UpdateVPCCmd.java         |   10 +-
 .../api/command/user/vpn/AddVpnUserCmd.java        |    6 -
 .../command/user/vpn/CreateRemoteAccessVpnCmd.java |    6 -
 .../command/user/vpn/CreateVpnConnectionCmd.java   |    6 -
 .../user/vpn/CreateVpnCustomerGatewayCmd.java      |    6 -
 .../api/command/user/vpn/CreateVpnGatewayCmd.java  |    6 -
 .../command/user/vpn/DeleteRemoteAccessVpnCmd.java |    6 -
 .../command/user/vpn/DeleteVpnConnectionCmd.java   |    6 -
 .../user/vpn/DeleteVpnCustomerGatewayCmd.java      |    6 -
 .../api/command/user/vpn/DeleteVpnGatewayCmd.java  |    6 -
 .../command/user/vpn/ListRemoteAccessVpnsCmd.java  |    6 -
 .../command/user/vpn/ListVpnConnectionsCmd.java    |    6 -
 .../user/vpn/ListVpnCustomerGatewaysCmd.java       |    6 -
 .../api/command/user/vpn/ListVpnGatewaysCmd.java   |    6 -
 .../api/command/user/vpn/ListVpnUsersCmd.java      |    6 -
 .../api/command/user/vpn/RemoveVpnUserCmd.java     |    6 -
 .../command/user/vpn/ResetVpnConnectionCmd.java    |    6 -
 .../command/user/vpn/UpdateRemoteAccessVpnCmd.java |    8 +-
 .../command/user/vpn/UpdateVpnConnectionCmd.java   |    6 -
 .../user/vpn/UpdateVpnCustomerGatewayCmd.java      |    6 -
 .../api/command/user/vpn/UpdateVpnGatewayCmd.java  |    6 -
 .../api/response/DomainRouterResponse.java         |    8 +
 .../cloudstack/api/response/NetworkResponse.java   |   24 +
 .../cloudstack/api/response/NicResponse.java       |   16 +-
 .../cloudstack/api/response/SystemVmResponse.java  |   12 +
 .../cloudstack/api/response/UserVmResponse.java    |   12 +
 .../cloudstack/api/response/VpcResponse.java       |    8 +
 .../cloudstack/api/response/ZoneResponse.java      |   24 +
 .../consoleproxy/ConsoleAccessManager.java         |    8 +-
 .../com/cloud/deploy/DataCenterDeploymentTest.java |   57 +
 .../test/java/com/cloud/host/ControlStateTest.java |  109 ++
 .../api/command/test/AddHostCmdTest.java           |    3 +-
 .../command/test/AddSecondaryStorageCmdTest.java   |    3 +-
 .../command/user/network/CreateNetworkCmdTest.java |  298 +++++
 .../command/user/network/UpdateNetworkCmdTest.java |  176 +++
 .../api/command/user/vpc/CreateVPCCmdTest.java     |  165 +++
 .../api/command/user/vpc/UpdateVPCCmdTest.java     |   94 ++
 client/pom.xml                                     |   10 +
 .../agent/api/routing/UpdateNetworkCommand.java    |   59 +
 .../agent/resource/virtualnetwork/VRScripts.java   |    2 +
 .../virtualnetwork/VirtualRoutingResource.java     |   54 +
 .../facade/IpAssociationConfigItem.java            |    1 +
 .../facade/SetGuestNetworkConfigItem.java          |    4 +-
 .../virtualnetwork/model/GuestNetwork.java         |   10 +
 .../resource/virtualnetwork/model/IpAddress.java   |    9 +-
 .../com/cloud/resource/ServerResourceBase.java     |  131 +--
 .../cloudstack/storage/command/DettachCommand.java |    9 +
 .../core/spring-core-registry-core-context.xml     |    2 +-
 .../com/cloud/resource/ServerResourceBaseTest.java |  241 ++++
 debian/cloudstack-usage.postinst                   |    7 +
 .../service/NetworkOrchestrationService.java       |    2 +-
 .../cloud/deploy/DeploymentPlanningManager.java    |    6 +
 .../java/com/cloud/network/vpc/VpcManager.java     |    3 +-
 engine/orchestration/pom.xml                       |    3 -
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |    9 +-
 .../cloud/entity/api/VMEntityManagerImpl.java      |    3 +
 .../engine/orchestration/NetworkOrchestrator.java  |  111 +-
 .../cloud/vm/VirtualMachineManagerImplTest.java    |   96 +-
 .../orchestration/NetworkOrchestratorTest.java     |    2 +
 .../engine/provisioning/test/ProvisioningTest.java |   63 +-
 .../src/test/resources/provisioningContext.xml     |   47 -
 engine/schema/pom.xml                              |    6 +
 .../java/com/cloud/network/dao/IPAddressDao.java   |    2 +
 .../com/cloud/network/dao/IPAddressDaoImpl.java    |    8 +
 .../java/com/cloud/network/dao/NetworkDaoImpl.java |    2 +-
 .../main/java/com/cloud/network/dao/NetworkVO.java |   26 +
 .../src/main/java/com/cloud/network/vpc/VpcVO.java |   11 +
 .../cloud/upgrade/DatabaseVersionHierarchy.java    |    9 +-
 .../schema/src/main/java/com/cloud/vm/NicVO.java   |   12 +
 .../src/main/java/com/cloud/vm/dao/NicDao.java     |    4 +
 .../src/main/java/com/cloud/vm/dao/NicDaoImpl.java |   16 +
 .../resources/META-INF/db/schema-41720to41800.sql  |  148 ++-
 .../cloud/upgrade/DatabaseUpgradeCheckerTest.java  |   40 +-
 .../upgrade/DatabaseVersionHierarchyTest.java      |  117 ++
 packaging/centos7/cloud.spec                       |    9 +
 packaging/centos8/cloud.spec                       |  102 +-
 packaging/centos8/replace.properties               |    2 +-
 packaging/el9                                      |    1 +
 packaging/suse15                                   |    1 +
 packaging/suse15/cloud-ipallocator.rc              |   96 --
 packaging/suse15/cloud.spec                        |  687 ------------
 packaging/suse15/cloudstack-agent.te               |   33 -
 packaging/suse15/replace.properties                |   59 -
 .../non-strict-host-affinity/pom.xml               |   30 +
 .../affinity/NonStrictHostAffinityProcessor.java   |  133 +++
 .../non-strict-host-affinity/module.properties     |    5 +-
 .../spring-non-strict-host-affinity-context.xml    |   37 +
 .../NonStrictHostAffinityProcessorTest.java        |  172 +++
 .../non-strict-host-anti-affinity/pom.xml          |   38 +
 .../NonStrictHostAntiAffinityProcessor.java        |   38 +-
 .../module.properties                              |    6 +-
 ...pring-non-strict-host-anti-affinity-context.xml |   37 +
 .../NonStrictHostAntiAffinityProcessorTest.java    |  172 +++
 .../api/command/user/discovery/ListApisCmd.java    |    6 -
 .../command/admin/ratelimit/ResetApiLimitCmd.java  |    6 -
 .../api/command/user/ratelimit/GetApiLimitCmd.java |    6 -
 .../admin/solidfire/GetPathForVolumeCmd.java       |    6 -
 .../admin/solidfire/GetSolidFireAccountIdCmd.java  |    6 -
 .../GetSolidFireVolumeAccessGroupIdsCmd.java       |    8 +-
 .../admin/solidfire/GetSolidFireVolumeSizeCmd.java |    8 +-
 .../solidfire/GetVolumeSnapshotDetailsCmd.java     |    8 +-
 .../admin/solidfire/GetVolumeiScsiNameCmd.java     |    8 +-
 .../api/command/admin/sioc/UpdateSiocInfoCmd.java  |    8 +-
 .../cloudstack/api/command/QuotaBalanceCmd.java    |    6 -
 .../cloudstack/api/command/QuotaCreditsCmd.java    |    6 -
 .../api/command/QuotaEmailTemplateListCmd.java     |    5 -
 .../api/command/QuotaEmailTemplateUpdateCmd.java   |    6 -
 .../cloudstack/api/command/QuotaEnabledCmd.java    |    6 -
 .../cloudstack/api/command/QuotaStatementCmd.java  |    6 -
 .../cloudstack/api/command/QuotaSummaryCmd.java    |    6 -
 .../api/command/QuotaTariffCreateCmd.java          |    8 +-
 .../api/command/QuotaTariffDeleteCmd.java          |    8 +-
 .../cloudstack/api/command/QuotaTariffListCmd.java |    6 -
 .../api/command/QuotaTariffUpdateCmd.java          |    6 -
 .../cloudstack/api/command/QuotaUpdateCmd.java     |    6 -
 .../api/commands/DedicateClusterCmd.java           |    6 -
 .../cloudstack/api/commands/DedicateHostCmd.java   |    6 -
 .../cloudstack/api/commands/DedicatePodCmd.java    |    6 -
 .../cloudstack/api/commands/DedicateZoneCmd.java   |    6 -
 .../api/commands/ListDedicatedClustersCmd.java     |    6 -
 .../api/commands/ListDedicatedHostsCmd.java        |    6 -
 .../api/commands/ListDedicatedPodsCmd.java         |    6 -
 .../api/commands/ListDedicatedZonesCmd.java        |    6 -
 .../api/commands/ReleaseDedicatedClusterCmd.java   |    6 -
 .../api/commands/ReleaseDedicatedHostCmd.java      |    6 -
 .../api/commands/ReleaseDedicatedPodCmd.java       |    6 -
 .../api/commands/ReleaseDedicatedZoneCmd.java      |    6 -
 .../apache/cloudstack/api/AddBaremetalDhcpCmd.java |    6 -
 .../apache/cloudstack/api/AddBaremetalRctCmd.java  |  166 ++-
 .../cloudstack/api/DeleteBaremetalRctCmd.java      |  164 ++-
 .../cloudstack/api/ListBaremetalDhcpCmd.java       |    6 -
 .../cloudstack/api/ListBaremetalPxeServersCmd.java |    5 -
 .../apache/cloudstack/api/ListBaremetalRctCmd.java |    6 -
 .../hypervisor/kvm/resource/BridgeVifDriver.java   |    7 +-
 .../hypervisor/kvm/resource/IvsVifDriver.java      |    8 +-
 .../kvm/resource/LibvirtComputingResource.java     |  351 ++----
 .../kvm/resource/LibvirtDomainXMLParser.java       |    2 +-
 .../hypervisor/kvm/resource/LibvirtVMDef.java      |   28 +-
 .../hypervisor/kvm/resource/OvsVifDriver.java      |   11 +-
 .../kvm/storage/KVMStorageProcessor.java           |  208 +++-
 .../kvm/resource/LibvirtComputingResourceTest.java | 1182 ++++++++++----------
 .../kvm/resource/LibvirtVifDriverTest.java         |   25 +-
 .../kvm/storage/KVMStorageProcessorTest.java       |   94 ++
 .../api/AssociateUcsProfileToBladeCmd.java         |    5 -
 .../cloud/api/commands/DeleteCiscoNexusVSMCmd.java |    6 -
 .../api/commands/DisableCiscoNexusVSMCmd.java      |    6 -
 .../cloud/api/commands/EnableCiscoNexusVSMCmd.java |    6 -
 .../api/command/admin/zone/AddVmwareDcCmd.java     |    6 -
 .../zone/ImportVsphereStoragePoliciesCmd.java      |    8 +-
 .../api/command/admin/zone/ListVmwareDcsCmd.java   |    6 -
 .../admin/zone/ListVsphereStoragePoliciesCmd.java  |    8 +-
 ...ListVsphereStoragePolicyCompatiblePoolsCmd.java |    8 +-
 .../api/command/admin/zone/RemoveVmwareDcCmd.java  |    6 -
 .../api/command/admin/zone/UpdateVmwareDcCmd.java  |   10 +-
 .../cloudian/api/CloudianIsEnabledCmd.java         |   10 +-
 .../cloudian/api/CloudianSsoLoginCmd.java          |   10 +-
 .../cluster/KubernetesClusterManagerImpl.java      |    2 +-
 .../version/AddKubernetesSupportedVersionCmd.java  |    8 +-
 .../DeleteKubernetesSupportedVersionCmd.java       |    8 +-
 .../UpdateKubernetesSupportedVersionCmd.java       |    8 +-
 .../cluster/CreateKubernetesClusterCmd.java        |    8 +-
 .../cluster/DeleteKubernetesClusterCmd.java        |    8 +-
 .../cluster/GetKubernetesClusterConfigCmd.java     |    8 +-
 .../cluster/ListKubernetesClustersCmd.java         |    8 +-
 .../cluster/ScaleKubernetesClusterCmd.java         |    8 +-
 .../cluster/StartKubernetesClusterCmd.java         |    8 +-
 .../cluster/StopKubernetesClusterCmd.java          |    8 +-
 .../cluster/UpgradeKubernetesClusterCmd.java       |    8 +-
 .../ListKubernetesSupportedVersionsCmd.java        |    8 +-
 .../cloudstack/metrics/PrometheusExporterImpl.java |   25 +-
 .../cloudstack/api/ListClustersMetricsCmd.java     |    8 +-
 .../apache/cloudstack/api/ListDbMetricsCmd.java    |    8 +-
 .../apache/cloudstack/api/ListHostsMetricsCmd.java |    8 +-
 .../cloudstack/api/ListInfrastructureCmd.java      |    8 +-
 .../apache/cloudstack/api/ListMgmtsMetricsCmd.java |    8 +-
 .../cloudstack/api/ListStoragePoolsMetricsCmd.java |    8 +-
 .../cloudstack/api/ListUsageServerMetricsCmd.java  |    8 +-
 .../cloudstack/api/ListVMsMetricsCmdByAdmin.java   |    2 +-
 .../cloudstack/api/ListVMsUsageHistoryCmd.java     |   10 +-
 .../cloudstack/api/ListVolumesMetricsCmd.java      |    8 +-
 .../apache/cloudstack/api/ListZonesMetricsCmd.java |    8 +-
 .../api/commands/AddBigSwitchBcfDeviceCmd.java     |    6 -
 .../api/commands/DeleteBigSwitchBcfDeviceCmd.java  |    6 -
 .../cloud/api/commands/AddBrocadeVcsDeviceCmd.java |    6 -
 .../api/commands/DeleteBrocadeVcsDeviceCmd.java    |    6 -
 .../cloudstack/api/AddGloboDnsHostCmd.java         |    6 -
 .../api/command/CreateServiceInstanceCmd.java      |    6 -
 .../cloud/api/commands/AddExternalFirewallCmd.java |    6 -
 .../com/cloud/api/commands/AddSrxFirewallCmd.java  |    6 -
 .../api/commands/ConfigureSrxFirewallCmd.java      |    6 -
 .../api/commands/DeleteExternalFirewallCmd.java    |    6 -
 .../cloud/api/commands/DeleteSrxFirewallCmd.java   |    6 -
 .../api/commands/ListExternalFirewallsCmd.java     |    6 -
 .../api/commands/ListSrxFirewallNetworksCmd.java   |    5 -
 .../api/commands/AddNetscalerLoadBalancerCmd.java  |    6 -
 .../ConfigureNetscalerLoadBalancerCmd.java         |    6 -
 .../commands/DeleteNetscalerLoadBalancerCmd.java   |    6 -
 .../ListNetscalerLoadBalancerNetworksCmd.java      |    5 -
 .../RegisterNetscalerControlCenterCmd.java         |   12 +-
 .../cloud/api/commands/AddNiciraNvpDeviceCmd.java  |    6 -
 .../api/commands/DeleteNiciraNvpDeviceCmd.java     |    6 -
 .../cloud/api/commands/AddPaloAltoFirewallCmd.java |    6 -
 .../api/commands/ConfigurePaloAltoFirewallCmd.java |    6 -
 .../api/commands/DeletePaloAltoFirewallCmd.java    |    6 -
 .../commands/ListPaloAltoFirewallNetworksCmd.java  |    5 -
 plugins/pom.xml                                    |    2 +
 .../cloudstack/api/command/LDAPConfigCmd.java      |    6 -
 .../cloudstack/api/command/LDAPRemoveCmd.java      |    6 -
 .../api/command/LinkAccountToLdapCmd.java          |   10 +-
 .../api/command/LinkDomainToLdapCmd.java           |    6 -
 .../api/command/LinkAccountToLdapCmdTest.java      |    3 +-
 .../api/command/AuthorizeSAMLSSOCmd.java           |    8 +-
 .../api/command/ListAndSwitchSAMLAccountCmd.java   |    8 +-
 .../apache/cloudstack/api/command/ListIdpsCmd.java |    9 +-
 pom.xml                                            |    4 +-
 scripts/vm/hypervisor/update_host_passwd.sh        |   12 +-
 .../main/java/com/cloud/api/ApiResponseHelper.java |    6 +-
 server/src/main/java/com/cloud/api/ApiServlet.java |    3 +-
 .../api/auth/DefaultLoginAPIAuthenticatorCmd.java  |    8 +-
 .../api/auth/DefaultLogoutAPIAuthenticatorCmd.java |    9 +-
 .../cloud/api/query/dao/DataCenterJoinDaoImpl.java |   15 +-
 .../cloud/api/query/dao/DomainRouterJoinDao.java   |    3 +
 .../api/query/dao/DomainRouterJoinDaoImpl.java     |   26 +-
 .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java |    4 +
 .../com/cloud/api/query/vo/DomainRouterJoinVO.java |   23 +
 .../java/com/cloud/api/query/vo/UserVmJoinVO.java  |   18 +-
 .../main/java/com/cloud/configuration/Config.java  |   10 +-
 .../configuration/ConfigurationManagerImpl.java    |  242 ++--
 .../deploy/DeploymentPlanningManagerImpl.java      |   34 +-
 .../com/cloud/hypervisor/HypervisorGuruBase.java   |    1 +
 .../com/cloud/network/IpAddressManagerImpl.java    |    3 +-
 .../cloud/network/NetworkMigrationManagerImpl.java |    3 +-
 .../java/com/cloud/network/NetworkModelImpl.java   |  120 +-
 .../java/com/cloud/network/NetworkServiceImpl.java |  327 +++++-
 .../com/cloud/network/guru/DirectNetworkGuru.java  |    8 +
 .../com/cloud/network/guru/GuestNetworkGuru.java   |    2 +
 .../cloud/network/router/CommandSetupHelper.java   |   44 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |   25 +-
 .../VpcVirtualNetworkApplianceManagerImpl.java     |    7 +-
 .../java/com/cloud/network/vpc/VpcManagerImpl.java |  229 +++-
 .../com/cloud/server/ManagementServerImpl.java     |    3 +
 .../com/cloud/storage/VolumeApiServiceImpl.java    |   17 +-
 .../com/cloud/storage/upload/UploadListener.java   |    7 +-
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |    7 +-
 .../affinity/AffinityGroupServiceImpl.java         |    5 +-
 .../consoleproxy/ConsoleAccessManagerImpl.java     |   40 +-
 .../java/com/cloud/configuration/ConfigTest.java   |   42 +
 .../ConfigurationManagerImplTest.java              |  194 ++++
 .../deploy/DeploymentPlanningManagerImplTest.java  |   46 +
 .../cloud/network/CreatePrivateNetworkTest.java    |    3 +-
 .../java/com/cloud/network/NetworkModelTest.java   |   18 +
 .../com/cloud/network/NetworkServiceImplTest.java  |  310 ++++-
 .../com/cloud/network/vpc/VpcManagerImplTest.java  |  209 +++-
 .../java/com/cloud/vpc/MockNetworkManagerImpl.java |    2 +-
 setup/bindir/cloud-sysvmadm.in                     |   75 +-
 systemvm/debian/opt/cloud/bin/cs/CsAddress.py      |    9 +
 systemvm/debian/opt/cloud/bin/cs/CsDhcp.py         |    9 +-
 systemvm/debian/opt/cloud/bin/cs/CsHelper.py       |   10 +-
 systemvm/debian/opt/cloud/bin/cs_ip.py             |    2 +
 systemvm/debian/opt/cloud/bin/merge.py             |    1 +
 systemvm/debian/opt/cloud/bin/setup/bootstrap.sh   |   17 +-
 systemvm/debian/opt/cloud/bin/setup/common.sh      |   14 +
 systemvm/debian/opt/cloud/bin/update_config.py     |    2 -
 .../opt/cloud/bin/update_interface_config.sh       |   63 ++
 .../component/test_acl_isolatednetwork_delete.py   |    2 +-
 .../test_multiple_physical_network_creation.py     |  405 +++++++
 test/integration/component/test_network_ipv6.py    |    2 +-
 test/integration/component/test_network_mtu.py     |  395 +++++++
 test/integration/component/test_vpc_ipv6.py        |    2 +-
 test/integration/smoke/test_host_control_state.py  |  252 +++++
 test/integration/smoke/test_network.py             |   99 +-
 test/integration/smoke/test_network_ipv6.py        |    2 +-
 .../smoke/test_nonstrict_affinity_group.py         |  448 ++++++++
 test/integration/smoke/test_templates.py           |    6 +-
 test/integration/smoke/test_vm_autoscaling.py      |   89 +-
 test/integration/smoke/test_vpc_ipv6.py            |    2 +-
 .../scripts/configure_systemvm_services.sh         |    2 +-
 tools/appliance/systemvmtemplate/template.json     |    4 +-
 tools/cli/README                                   |    1 -
 tools/marvin/marvin/lib/base.py                    |   21 +-
 tools/marvin/marvin/lib/common.py                  |    2 +-
 .../sandbox/demo/simulator/testcase/libs/common.py |    4 +-
 tools/{travis => marvin}/xunit-reader.py           |    0
 tools/travis/after_failure.sh                      |   24 -
 tools/travis/after_script.sh                       |   22 -
 tools/travis/after_success.sh                      |   20 -
 tools/travis/before_install.sh                     |  139 ---
 tools/travis/before_script.sh                      |   27 -
 tools/travis/install.sh                            |   76 --
 ui/README.md                                       |   19 +-
 ui/package.json                                    |    2 +-
 ui/public/locales/de_DE.json                       |    6 +-
 ui/public/locales/el_GR.json                       |    8 +-
 ui/public/locales/en.json                          |   70 +-
 ui/public/locales/ja_JP.json                       |    8 +-
 ui/public/locales/ko_KR.json                       |    6 +-
 ui/public/locales/pt_BR.json                       |   10 +-
 ui/public/locales/zh_CN.json                       |    8 +-
 ui/src/components/header/ExternalLink.vue          |   54 +
 ui/src/components/header/UserMenu.vue              |    4 +-
 ui/src/components/view/BulkActionProgress.vue      |    3 +
 ui/src/components/view/BulkActionView.vue          |   13 +-
 ui/src/components/view/DetailsTab.vue              |   16 +-
 ui/src/components/view/SettingsTab.vue             |   24 +-
 ui/src/components/widgets/Console.vue              |   17 +-
 ui/src/components/widgets/TooltipLabel.vue         |   10 +-
 ui/src/config/router.js                            |   14 +-
 ui/src/config/section/compute.js                   |   15 +-
 ui/src/config/section/image.js                     |    6 +-
 ui/src/config/section/infra/ilbvms.js              |    4 +-
 ui/src/config/section/infra/routers.js             |    4 +-
 ui/src/config/section/infra/systemVms.js           |    4 +-
 ui/src/config/section/network.js                   |    6 +-
 ui/src/views/AutogenView.vue                       |   21 +
 ui/src/views/compute/DeployVM.vue                  |   18 +-
 ui/src/views/compute/InstanceTab.vue               |    2 +-
 ui/src/views/compute/KubernetesServiceTab.vue      |    2 +-
 ui/src/views/compute/StartVirtualMachine.vue       |   11 +-
 .../compute/wizard/AffinityGroupSelection.vue      |    9 +-
 .../views/compute/wizard/MultiNetworkSelection.vue |    2 +-
 .../views/compute/wizard/NetworkConfiguration.vue  |   14 +-
 ui/src/views/iam/AddLdapAccount.vue                |    2 +-
 .../views/infra/zone/AdvancedGuestTrafficForm.vue  |    4 +-
 ui/src/views/infra/zone/ZoneWizardAddResources.vue |    2 +-
 ui/src/views/network/CreateIsolatedNetworkForm.vue |   75 +-
 ui/src/views/network/CreateSharedNetworkForm.vue   |   73 +-
 ui/src/views/network/CreateVpc.vue                 |   48 +-
 ui/src/views/network/LoadBalancing.vue             |   24 +-
 ui/src/views/network/UpdateNetwork.vue             |   82 +-
 ui/src/views/network/VpcTiersTab.vue               |   40 +-
 ui/tests/mockData/AutogenView.mock.json            |    6 +-
 ui/tests/unit/components/view/ActionButton.spec.js |    3 +
 ui/tests/unit/views/AutogenView.spec.js            |   14 +-
 .../java/com/cloud/usage/UsageManagerImpl.java     |    1 +
 .../java/com/cloud/usage/UsageSanityChecker.java   |  146 ++-
 .../java/com/cloud/utils/HumanReadableJson.java    |   26 +-
 .../src/main/java/com/cloud/utils/StringUtils.java |   20 +-
 .../main/java/com/cloud/utils/net/NetUtils.java    |   64 +-
 .../nicira/nvp/plugin/NiciraNvpApiVersion.java     |    6 +-
 .../com/cloud/utils/HumanReadableJsonTest.java     |   12 +-
 .../java/com/cloud/utils/net/NetUtilsTest.java     |  114 +-
 809 files changed, 10944 insertions(+), 7548 deletions(-)

diff --cc engine/schema/src/main/java/com/cloud/network/dao/IPAddressDao.java
index 1cf4e0dfee,eea6c35811..51dfa91a40
--- a/engine/schema/src/main/java/com/cloud/network/dao/IPAddressDao.java
+++ b/engine/schema/src/main/java/com/cloud/network/dao/IPAddressDao.java
@@@ -97,5 -95,5 +97,7 @@@ public interface IPAddressDao extends G
  
      IPAddressVO findByAccountIdAndZoneIdAndStateAndIpAddress(long accountId, long dcId, State state, String ipAddress);
  
 +    List<IPAddressVO> listByDcIdAndAssociatedNetwork(long dcId);
++
+     List<IPAddressVO> listByNetworkId(long networkId);
  }
diff --cc engine/schema/src/main/java/com/cloud/network/dao/IPAddressDaoImpl.java
index a6c4402f7e,f50e3f83c8..b995959f01
--- a/engine/schema/src/main/java/com/cloud/network/dao/IPAddressDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/network/dao/IPAddressDaoImpl.java
@@@ -518,12 -501,11 +518,20 @@@ public class IPAddressDaoImpl extends G
          return findOneBy(sc);
      }
  
 +    @Override
 +    public List<IPAddressVO> listByDcIdAndAssociatedNetwork(final long dcId) {
 +        SearchCriteria<IPAddressVO> sc = tungstenFloatingIpSearch.create();
 +        sc.setParameters("dataCenterId", dcId);
 +        sc.setParameters("sourceNat", false);
 +        sc.setParameters("state", State.Allocated);
 +        return listBy(sc);
 +    }
++
+     @Override
+     public List<IPAddressVO> listByNetworkId(long networkId) {
+         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
+         sc.setParameters("network", networkId);
+         sc.setParameters("state", State.Allocated);
+         return listBy(sc);
+     }
  }
diff --cc engine/schema/src/main/resources/META-INF/db/schema-41720to41800.sql
index a16e2677d8,c3a18ec7e2..d68a31b05d
--- a/engine/schema/src/main/resources/META-INF/db/schema-41720to41800.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-41720to41800.sql
@@@ -869,127 -984,16 +984,142 @@@ WHERE   usage_unit = 'Policy-Month'
  -- delete configuration task.cleanup.retry.interval #6910
  DELETE FROM `cloud`.`configuration` WHERE name='task.cleanup.retry.interval';
  
 +-- Tungsten Fabric Plugin --
 +CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.network_offerings','for_tungsten', 'int(1) unsigned DEFAULT "0" COMMENT "is tungsten enabled for the resource"');
 +
 +-- Network offering with multi-domains and multi-zones
 +DROP VIEW IF EXISTS `cloud`.`network_offering_view`;
 +CREATE VIEW `cloud`.`network_offering_view` AS
 +SELECT
 +    `network_offerings`.`id` AS `id`,
 +    `network_offerings`.`uuid` AS `uuid`,
 +    `network_offerings`.`name` AS `name`,
 +    `network_offerings`.`unique_name` AS `unique_name`,
 +    `network_offerings`.`display_text` AS `display_text`,
 +    `network_offerings`.`nw_rate` AS `nw_rate`,
 +    `network_offerings`.`mc_rate` AS `mc_rate`,
 +    `network_offerings`.`traffic_type` AS `traffic_type`,
 +    `network_offerings`.`tags` AS `tags`,
 +    `network_offerings`.`system_only` AS `system_only`,
 +    `network_offerings`.`specify_vlan` AS `specify_vlan`,
 +    `network_offerings`.`service_offering_id` AS `service_offering_id`,
 +    `network_offerings`.`conserve_mode` AS `conserve_mode`,
 +    `network_offerings`.`created` AS `created`,
 +    `network_offerings`.`removed` AS `removed`,
 +    `network_offerings`.`default` AS `default`,
 +    `network_offerings`.`availability` AS `availability`,
 +    `network_offerings`.`dedicated_lb_service` AS `dedicated_lb_service`,
 +    `network_offerings`.`shared_source_nat_service` AS `shared_source_nat_service`,
 +    `network_offerings`.`sort_key` AS `sort_key`,
 +    `network_offerings`.`redundant_router_service` AS `redundant_router_service`,
 +    `network_offerings`.`state` AS `state`,
 +    `network_offerings`.`guest_type` AS `guest_type`,
 +    `network_offerings`.`elastic_ip_service` AS `elastic_ip_service`,
 +    `network_offerings`.`eip_associate_public_ip` AS `eip_associate_public_ip`,
 +    `network_offerings`.`elastic_lb_service` AS `elastic_lb_service`,
 +    `network_offerings`.`specify_ip_ranges` AS `specify_ip_ranges`,
 +    `network_offerings`.`inline` AS `inline`,
 +    `network_offerings`.`is_persistent` AS `is_persistent`,
 +    `network_offerings`.`internal_lb` AS `internal_lb`,
 +    `network_offerings`.`public_lb` AS `public_lb`,
 +    `network_offerings`.`egress_default_policy` AS `egress_default_policy`,
 +    `network_offerings`.`concurrent_connections` AS `concurrent_connections`,
 +    `network_offerings`.`keep_alive_enabled` AS `keep_alive_enabled`,
 +    `network_offerings`.`supports_streched_l2` AS `supports_streched_l2`,
 +    `network_offerings`.`supports_public_access` AS `supports_public_access`,
 +    `network_offerings`.`for_vpc` AS `for_vpc`,
 +    `network_offerings`.`for_tungsten` AS `for_tungsten`,
 +    `network_offerings`.`service_package_id` AS `service_package_id`,
 +    GROUP_CONCAT(DISTINCT(domain.id)) AS domain_id,
 +    GROUP_CONCAT(DISTINCT(domain.uuid)) AS domain_uuid,
 +    GROUP_CONCAT(DISTINCT(domain.name)) AS domain_name,
 +    GROUP_CONCAT(DISTINCT(domain.path)) AS domain_path,
 +    GROUP_CONCAT(DISTINCT(zone.id)) AS zone_id,
 +    GROUP_CONCAT(DISTINCT(zone.uuid)) AS zone_uuid,
 +    GROUP_CONCAT(DISTINCT(zone.name)) AS zone_name,
 +    `offering_details`.value AS internet_protocol
 +FROM
 +    `cloud`.`network_offerings`
 +        LEFT JOIN
 +    `cloud`.`network_offering_details` AS `domain_details` ON `domain_details`.`network_offering_id` = `network_offerings`.`id` AND `domain_details`.`name`='domainid'
 +        LEFT JOIN
 +    `cloud`.`domain` AS `domain` ON FIND_IN_SET(`domain`.`id`, `domain_details`.`value`)
 +        LEFT JOIN
 +    `cloud`.`network_offering_details` AS `zone_details` ON `zone_details`.`network_offering_id` = `network_offerings`.`id` AND `zone_details`.`name`='zoneid'
 +        LEFT JOIN
 +    `cloud`.`data_center` AS `zone` ON FIND_IN_SET(`zone`.`id`, `zone_details`.`value`)
 +        LEFT JOIN
 +    `cloud`.`network_offering_details` AS `offering_details` ON `offering_details`.`network_offering_id` = `network_offerings`.`id` AND `offering_details`.`name`='internetProtocol'
 +GROUP BY
 +    `network_offerings`.`id`;
 +
 +
 +CREATE TABLE IF NOT EXISTS `cloud`.`tungsten_providers` (
 +    `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
 +    `zone_id` bigint unsigned NOT NULL COMMENT 'Zone ID',
 +    `uuid` varchar(40),
 +    `host_id` bigint unsigned NOT NULL,
 +    `provider_name` varchar(40),
 +    `port` varchar(40),
 +    `hostname` varchar(40),
 +    `gateway` varchar(40),
 +    `vrouter_port` varchar(40),
 +    `introspect_port` varchar(40),
 +    PRIMARY KEY  (`id`),
 +    CONSTRAINT `fk_tungsten_providers__host_id` FOREIGN KEY (`host_id`) REFERENCES `host`(`id`) ON DELETE CASCADE,
 +    CONSTRAINT `fk_tungsten_providers__zone_id` FOREIGN KEY (`zone_id`) REFERENCES `data_center`(`id`) ON DELETE CASCADE,
 +    CONSTRAINT `uc_tungsten_providers__uuid` UNIQUE (`uuid`)
 +    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 +
 +CREATE TABLE IF NOT EXISTS `cloud`.`tungsten_guest_network_ip_address` (
 +    `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
 +    `network_id` bigint unsigned NOT NULL COMMENT 'network id',
 +    `public_ip_address` varchar(15) COMMENT 'ip public_ip_address',
 +    `guest_ip_address` varchar(15) NOT NULL COMMENT 'ip guest_ip_address',
 +    `logical_router_uuid` varchar(40) COMMENT 'logical router uuid',
 +    PRIMARY KEY  (`id`),
 +    CONSTRAINT `fk_tungsten_guest_network_ip_address__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks`(`id`) ON DELETE CASCADE
 +    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 +
 +CREATE TABLE IF NOT EXISTS `cloud`.`tungsten_security_group_rule` (
 +    `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
 +    `uuid` varchar(40) NOT NULL COMMENT 'rule uuid',
 +    `zone_id` bigint unsigned NOT NULL COMMENT 'Zone ID',
 +    `security_group_id` bigint unsigned NOT NULL COMMENT 'security group id',
 +    `rule_type` varchar(40) NOT NULL COMMENT 'rule type',
 +    `rule_target` varchar(40) NOT NULL COMMENT 'rule target',
 +    `ether_type` varchar(40) NOT NULL COMMENT 'ether type',
 +    `default_rule` int(1) unsigned NOT NULL DEFAULT 0 COMMENT '1 if security group is default',
 +    PRIMARY KEY  (`id`),
 +    CONSTRAINT `fk_tungsten_security_group_rule__security_group_id` FOREIGN KEY (`security_group_id`) REFERENCES `security_group`(`id`) ON DELETE CASCADE
 +    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 +
 +CREATE TABLE IF NOT EXISTS `cloud`.`tungsten_lb_health_monitor` (
 +    `id` bigint unsigned NOT NULL auto_increment,
 +    `uuid` varchar(40),
 +    `load_balancer_id` bigint unsigned NOT NULL,
 +    `type` varchar(40) NOT NULL,
 +    `retry` bigint unsigned NOT NULL,
 +    `timeout` bigint unsigned NOT NULL,
 +    `interval` bigint unsigned NOT NULL,
 +    `http_method` varchar(40),
 +    `expected_code` varchar(40),
 +    `url_path` varchar(255),
 +    PRIMARY KEY  (`id`),
 +    CONSTRAINT `fk_tungsten_lb_health_monitor__load_balancer_id` FOREIGN KEY(`load_balancer_id`) REFERENCES `load_balancing_rules`(`id`) ON DELETE CASCADE
 +    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
++
+ --- #6888 add index to speed up querying IPs in the network-tab
+ DROP PROCEDURE IF EXISTS `cloud`.`IDEMPOTENT_ADD_KEY`;
+ 
+ CREATE PROCEDURE `cloud`.`IDEMPOTENT_ADD_KEY` (
+ 		IN in_index_name VARCHAR(200)
+     , IN in_table_name VARCHAR(200)
+     , IN in_key_definition VARCHAR(1000)
+ )
+ BEGIN
+ 
+     DECLARE CONTINUE HANDLER FOR 1061 BEGIN END; SET @ddl = CONCAT('ALTER TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', ' ADD KEY ') ; SET @ddl = CONCAT(@ddl, ' ', in_index_name); SET @ddl = CONCAT(@ddl, ' ', in_key_definition); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; END;
+ 
+ CALL `cloud`.`IDEMPOTENT_ADD_KEY`('i_user_ip_address_state','user_ip_address', '(state)');
++
diff --cc plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 2986989360,3914500641..d69e4cfa3a
--- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@@ -310,12 -309,7 +311,13 @@@ public class LibvirtComputingResource e
      private String _ovsPvlanVmPath;
      private String _routerProxyPath;
      private String _ovsTunnelPath;
++
 +    private String setupTungstenVrouterPath;
 +    private String updateTungstenLoadbalancerStatsPath;
 +    private String updateTungstenLoadbalancerSslPath;
 +    private String _host;
++
      private String _dcId;
-     private String _pod;
      private String _clusterId;
      private final Properties _uefiProperties = new Properties();
  
@@@ -766,46 -755,34 +765,38 @@@
          }
      }
  
-     private String getDefaultDirectDownloadTemporaryPath() {
-         return "/var/lib/libvirt/images";
-     }
- 
-     private String getDefaultCachePath() {
-         return "/var/cache/cloud";
-     }
- 
-     protected String getDefaultNetworkScriptsDir() {
-         return "scripts/vm/network/vnet";
-     }
- 
-     protected String getDefaultStorageScriptsDir() {
-         return "scripts/storage/qcow2";
+     protected String getNetworkDirectSourceMode() {
+         return _networkDirectSourceMode;
      }
  
-     protected String getDefaultHypervisorScriptsDir() {
-         return "scripts/vm/hypervisor";
+     protected String getNetworkDirectDevice() {
+         return _networkDirectDevice;
      }
  
-     protected String getDefaultKvmScriptsDir() {
-         return "scripts/vm/hypervisor/kvm";
-     }
+     /**
+      * Defines resource's public and private network interface according to what is configured in agent.properties.
+      */
+     @Override
+     protected void defineResourceNetworkInterfaces(Map<String, Object> params) {
+         _privBridgeName = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.PRIVATE_NETWORK_DEVICE);
+         _publicBridgeName = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.PUBLIC_NETWORK_DEVICE);
  
-     protected String getDefaultDomrScriptsDir() {
-         return "scripts/network/domr";
+         _privateNic = NetUtils.getNetworkInterface(_privBridgeName);
+         _publicNic = NetUtils.getNetworkInterface(_publicBridgeName);
      }
  
-     protected String getNetworkDirectSourceMode() {
-         return _networkDirectSourceMode;
+     public NetworkInterface getPrivateNic() {
+         return _privateNic;
      }
  
-     protected String getNetworkDirectDevice() {
-         return _networkDirectDevice;
+     public NetworkInterface getPublicNic() {
+         return _publicNic;
      }
  
 +    protected String getDefaultTungstenScriptsDir() {
 +        return TUNGSTEN_PATH;
 +    }
 +
      @Override
      public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {
          boolean success = super.configure(name, params);
@@@ -821,47 -798,23 +812,32 @@@
          _storage = new JavaStorageLayer();
          _storage.configure("StorageLayer", params);
  
-         String domrScriptsDir = (String)params.get("domr.scripts.dir");
-         if (domrScriptsDir == null) {
-             domrScriptsDir = getDefaultDomrScriptsDir();
-         }
+         String domrScriptsDir = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.DOMR_SCRIPTS_DIR);
  
-         String hypervisorScriptsDir = (String)params.get("hypervisor.scripts.dir");
-         if (hypervisorScriptsDir == null) {
-             hypervisorScriptsDir = getDefaultHypervisorScriptsDir();
-         }
+         String hypervisorScriptsDir = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.HYPERVISOR_SCRIPTS_DIR);
  
-         String kvmScriptsDir = (String)params.get("kvm.scripts.dir");
-         if (kvmScriptsDir == null) {
-             kvmScriptsDir = getDefaultKvmScriptsDir();
-         }
+         String kvmScriptsDir = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.KVM_SCRIPTS_DIR);
  
-         String networkScriptsDir = (String)params.get("network.scripts.dir");
-         if (networkScriptsDir == null) {
-             networkScriptsDir = getDefaultNetworkScriptsDir();
-         }
+         String networkScriptsDir = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.NETWORK_SCRIPTS_DIR);
  
-         String storageScriptsDir = (String)params.get("storage.scripts.dir");
-         if (storageScriptsDir == null) {
-             storageScriptsDir = getDefaultStorageScriptsDir();
-         }
+         String storageScriptsDir = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.STORAGE_SCRIPTS_DIR);
  
 +        String tungstenScriptsDir = (String) params.get("tungsten.scripts.dir");
 +        if (tungstenScriptsDir == null) {
 +            tungstenScriptsDir = getDefaultTungstenScriptsDir();
 +        }
 +
-         final String bridgeType = (String)params.get("network.bridge.type");
+         final String bridgeType = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.NETWORK_BRIDGE_TYPE);
 -        _bridgeType = BridgeType.valueOf(bridgeType.toUpperCase());
 +        if (bridgeType == null) {
 +            _bridgeType = BridgeType.NATIVE;
 +        } else {
 +            _bridgeType = BridgeType.valueOf(bridgeType.toUpperCase());
 +        }
  
-         String dpdk = (String) params.get("openvswitch.dpdk.enabled");
-         if (_bridgeType == BridgeType.OPENVSWITCH && Boolean.parseBoolean(dpdk)) {
+         Boolean dpdk = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.OPENVSWITCH_DPDK_ENABLED);
+         if (_bridgeType == BridgeType.OPENVSWITCH && BooleanUtils.isTrue(dpdk)) {
              dpdkSupport = true;
-             dpdkOvsPath = (String) params.get("openvswitch.dpdk.ovs.path");
+             dpdkOvsPath = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.OPENVSWITCH_DPDK_OVS_PATH);
              if (dpdkOvsPath != null && !dpdkOvsPath.endsWith("/")) {
                  dpdkOvsPath += "/";
              }
@@@ -978,24 -912,7 +935,22 @@@
              throw new ConfigurationException("Unable to find the ovs-pvlan-kvm-vm.sh");
          }
  
 +        setupTungstenVrouterPath = Script.findScript(tungstenScriptsDir, "setup_tungsten_vrouter.sh");
 +        if (setupTungstenVrouterPath == null) {
 +            throw new ConfigurationException("Unable to find the setup_tungsten_vrouter.sh");
 +        }
 +
 +        updateTungstenLoadbalancerStatsPath = Script.findScript(tungstenScriptsDir, "update_tungsten_loadbalancer_stats.sh");
 +        if (updateTungstenLoadbalancerStatsPath == null) {
 +            throw new ConfigurationException("Unable to find the update_tungsten_loadbalancer_stats.sh");
 +        }
 +
 +        updateTungstenLoadbalancerSslPath = Script.findScript(tungstenScriptsDir, "update_tungsten_loadbalancer_ssl.sh");
 +        if (updateTungstenLoadbalancerSslPath == null) {
 +            throw new ConfigurationException("Unable to find the update_tungsten_loadbalancer_ssl.sh");
 +        }
 +
-         String value = (String)params.get("developer");
-         final boolean isDeveloper = Boolean.parseBoolean(value);
- 
+         final boolean isDeveloper = AgentPropertiesFileHandler.getPropertyValue(AgentProperties.DEVELOPER);
          if (isDeveloper) {
              params.putAll(getDeveloperProperties());
          }