apache / cloudstack

Apache CloudStack is an opensource Infrastructure as a Service (IaaS) cloud computing platform
https://cloudstack.apache.org/
Apache License 2.0
1.97k stars 1.09k forks source link

improvement: externalize timeout for hypervisor/agent commands #8506

Open shwstppr opened 7 months ago

shwstppr commented 7 months ago

As discussed in https://github.com/apache/cloudstack/pull/8502#discussion_r1450410628 it could be useful to externalize the wait timeouts for hypervisor/agent commands like ModifyStoragePoolCommand. The downside of introducing new global configurations for each of these commands is having too many configurations so maybe a generic solution can be implemented.

shwstppr commented 7 months ago

Moving to 4.19.1.0 milestone for possible work on a generic solution for externalizing command timeouts

GutoVeronezi commented 7 months ago

Hey @DaanHoogland @vishesh92

I did not have time to elaborate on the proposal until now, but here is the draft.

For some edge cases, we have "wait"/"timeout" hardcoded values or values that come from global settings to set the commands timeout, like for GetAutoScaleMetricsCommand and for MigrateCommand. Currently, we have 385 classes that extend com.cloud.agent.api.Command (I skipped classes that extend com.cloud.agent.api.Answer); therefore, externalizing global settings for each command to provide flexibility is not feasible; however, we can reach flexibility by other means.

Currently, if we do not set a wait to the command, AgentManagerImpl will fallback to the wait global setting:

https://github.com/apache/cloudstack/blob/af8a582055c4194d1e42c8c1abd96969692046ed/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java#L441-L443

I propose to create a table of command_timeout in which we would store the classpath of the command and its wait/timeout. Then, instead of fall backing directly to the wait global setting, we would check if there is an entry of the command in this table. If it exists, then we use the entry's value; otherwise, we fall back to the wait global setting. Thus, we can change the commands wait/timeout on demand and in a flexible way.

The first step of the proposal would be creating the table and changing AgentManagerImpl to check the table. We could already create some entries for hardcoded values, like for the GetAutoScaleMetricsCommand.

Then, as a second step, we could create APIs to allow operators to list, persist, and remove the wait/timeouts. We could also create an annotation to describe the commands and create an API to allow operators to list the annotated commands; thus, making it clear to them which processes they can manage the timeout.

As a third and final step, we could extend this feature to be managed via GUI.

I will create a POC of this proposal; meanwhile, let me know your thoughts about the proposal.

Note: this proposal cover the common cases; eventually we will discuss the edge cases.


Following there is the code I used to retrieve the classes that extend com.cloud.agent.api.Command:

import com.cloud.agent.api.Answer;
import com.cloud.agent.api.Command;
import org.reflections.Reflections;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

class ClassMapper {

    public static void main(String[] args) {
        Set<Class<?>> classesToIterateThrough = new HashSet<>(new Reflections("org.apache", "com.cloud").getSubTypesOf(Command.class));
        classesToIterateThrough = classesToIterateThrough.stream().filter(klazz -> !Answer.class.isAssignableFrom(klazz)).collect(Collectors.toSet());
        System.out.println("Count: " + classesToIterateThrough.size());
        for (Class<?> cmd: classesToIterateThrough) {
            System.out.println(cmdClass);
        }

    }
}

To execute it, run java -cp <path-to-cloud-client.jar> <path-to-file-with-the-above-code>.

Following there are the classes retrieved by the script:

Classes that extend com.cloud.agent.api.Command ``` org.apache.cloudstack.diagnostics.DeleteFileInVrCommand org.apache.cloudstack.network.tungsten.agent.api.AssignTungstenFloatingIpCommand com.cloud.agent.api.FindL2GatewayServiceCommand com.cloud.agent.api.GetStorageStatsCommand com.cloud.agent.api.storage.DestroyCommand com.cloud.agent.api.GetVmNetworkStatsCommand com.cloud.agent.api.PingRoutingCommand com.cloud.agent.api.CreateVolumeFromSnapshotCommand com.cloud.agent.api.CreateStoragePoolCommand com.cloud.agent.api.ExternalNetworkResourceUsageCommand com.cloud.agent.api.CheckOnHostCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenApplicationPolicySetCommand com.cloud.agent.api.PropagateResourceEventCommand org.apache.cloudstack.network.tungsten.agent.api.ApplyTungstenNetworkPolicyCommand com.cloud.agent.api.storage.ResizeVolumeCommand com.cloud.agent.api.routing.SetPortForwardingRulesCommand com.cloud.agent.api.CleanupNetworkRulesCmd com.cloud.agent.api.DeleteBcfSegmentCommand com.cloud.agent.api.FindLogicalSwitchPortCommand com.cloud.agent.api.ReadyCommand com.cloud.agent.api.storage.AbstractUploadCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenNetworkPolicyCommand com.cloud.agent.api.SecStorageVMSetupCommand com.cloud.agent.api.storage.CreateDatadiskTemplateCommand com.cloud.agent.api.NetworkUsageCommand com.cloud.agent.api.NetworkRulesVmSecondaryIpCommand com.cloud.agent.api.CreateBcfSegmentCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenFabricNetworkCommand com.cloud.agent.api.DisassociateMacFromNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenTagTypeCommand com.cloud.agent.api.GetVmVncTicketCommand com.cloud.agent.api.UnregisterVMCommand com.cloud.agent.api.storage.CreateEntityDownloadURLCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadBalancerMemberCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenPolicyRuleCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFirewallRuleCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenNetworkPolicyCommand org.apache.cloudstack.ca.SetupCertificateCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenTagCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenApplicationPolicySetCommand com.cloud.agent.api.routing.SetIpv6FirewallRulesCommand org.apache.cloudstack.network.opendaylight.agent.commands.ConfigurePortCommand com.cloud.agent.api.routing.SetStaticRouteCommand com.cloud.agent.api.storage.CheckStorageAvailabilityCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenFirewallPolicyCommand com.cloud.agent.api.GetControllerDataCommand com.cloud.agent.api.routing.SavePasswordCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenPolicyCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenAddressGroupCommand com.cloud.agent.api.PingTestCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenSecurityGroupRuleCommand com.cloud.agent.api.storage.SsCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenDomainCommand org.apache.cloudstack.shutdown.command.TriggerShutdownManagementServerHostCommand com.cloud.agent.api.OvsSetTagAndFlowCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenServiceGroupCommand com.cloud.agent.api.ValidateVcenterDetailsCommand com.cloud.agent.api.RollingMaintenanceCommand com.cloud.agent.api.RebootCommand com.cloud.agent.api.PlugNicCommand com.cloud.agent.api.GetVmDiskStatsCommand org.apache.cloudstack.storage.command.CreatePrimaryDataStoreCmd com.cloud.agent.api.ConfigurePortForwardingRulesOnLogicalRouterCommand org.apache.cloudstack.storage.command.MoveVolumeCommand com.cloud.agent.api.DeleteLogicalRouterCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenPolicyCommand com.cloud.agent.api.CreateBcfAttachmentCommand org.apache.cloudstack.storage.command.SnapshotAndCopyCommand com.cloud.agent.api.PingRoutingWithOvsCommand com.cloud.agent.api.GetDomRVersionCmd org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenVRouterPortCommand com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand com.cloud.agent.api.AgentControlCommand com.cloud.agent.api.FreezeThawVMCommand com.cloud.agent.api.DeleteSnapshotsDirCommand com.cloud.agent.api.CheckStateCommand com.cloud.agent.api.CopyRemoteVolumeCommand org.apache.cloudstack.network.tungsten.agent.api.ReleaseTungstenFloatingIpCommand com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenVmCommand com.cloud.agent.api.routing.SetFirewallRulesCommand org.apache.cloudstack.agent.directdownload.HttpsDirectDownloadCommand com.cloud.agent.api.CreateBcfStaticNatCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenApplicationPolicySetCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenDefaultSecurityGroupCommand com.cloud.agent.api.SnapshotCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFloatingIpPoolCommand com.cloud.agent.api.baremetal.PreparePxeServerCommand com.cloud.agent.api.routing.LoadRouterHealthChecksConfigCommand com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand com.cloud.agent.api.PrepareForMigrationCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenPolicyRuleCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenTagCommand com.cloud.agent.api.OvsDestroyBridgeCommand com.cloud.agent.api.PvlanSetupCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFloatingIpCommand com.cloud.agent.api.storage.ListVolumeCommand com.cloud.agent.api.DeleteStoragePoolCommand com.cloud.agent.api.ScaleVmCommand com.cloud.agent.api.routing.GetRouterAlertsCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenLoadBalancerCommand com.cloud.agent.api.GetStoragePoolCapabilitiesCommand org.apache.cloudstack.storage.command.QuerySnapshotZoneCopyCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenLogicalRouterCommand com.cloud.agent.api.routing.IpAssocVpcCommand com.cloud.agent.api.routing.IpAssocCommand com.cloud.agent.api.storage.GetDatadisksCommand org.apache.cloudstack.storage.command.CopyCommand com.cloud.agent.api.routing.LoadBalancerConfigCommand org.apache.cloudstack.network.tungsten.agent.api.TungstenCommand com.cloud.agent.api.OvsDestroyTunnelCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenSecurityGroupCommand com.cloud.agent.api.PrepareOCFS2NodesCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenVmFromSecurityGroupCommand com.cloud.agent.api.UpdateBcfAttachmentCommand com.cloud.agent.api.PerformanceMonitorCommand com.cloud.agent.api.RestoreVMSnapshotCommand com.cloud.agent.api.GetVmIpAddressCommand org.apache.cloudstack.storage.command.DownloadProgressCommand com.cloud.agent.api.OvsVpcRoutingPolicyConfigCommand com.cloud.agent.api.routing.HealthCheckLBConfigCommand com.cloud.agent.api.GetGPUStatsCommand com.cloud.agent.api.ConfigureStaticNatRulesOnLogicalRouterCommand com.cloud.agent.api.ModifySshKeysCommand com.cloud.agent.api.FindLogicalRouterPortCommand com.cloud.agent.api.PingRoutingWithNwGroupsCommand org.apache.cloudstack.network.opendaylight.agent.commands.DestroyNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenFirewallRuleCommand com.cloud.agent.api.routing.VpnUsersCfgCommand com.cloud.agent.api.ModifyStoragePoolCommand org.apache.cloudstack.ca.SetupKeyStoreCommand com.cloud.agent.api.StartupBrocadeVcsCommand com.cloud.agent.api.CheckNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.SetupTungstenVRouterCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenServiceGroupCommand com.cloud.agent.api.CheckVMActivityOnStoragePoolCommand com.cloud.agent.api.proxy.AllowConsoleAccessCommand com.cloud.agent.api.RevertToVMSnapshotCommand com.cloud.agent.api.SetupGuestNetworkCommand com.cloud.agent.api.baremetal.IpmiBootorResetCommand com.cloud.agent.api.ManageSnapshotCommand com.cloud.agent.api.CancelCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenDomainCommand org.apache.cloudstack.storage.command.DettachCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadbalancerStatsCommand org.apache.cloudstack.storage.command.DeleteCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadBalancerListenerCommand org.apache.cloudstack.diagnostics.DiagnosticsCommand com.cloud.agent.api.SetupCommand com.cloud.agent.api.SecStorageFirewallCfgCommand com.cloud.agent.api.CheckS2SVpnConnectionsCommand org.apache.cloudstack.agent.directdownload.CheckUrlCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenNetworkSubnetCommand com.cloud.agent.api.ShutdownCommand com.cloud.agent.api.proxy.ProxyCommand com.cloud.agent.api.MigrateCommand com.cloud.agent.api.routing.GetRouterMonitorResultsCommand com.cloud.agent.api.HandleConfigDriveIsoCommand org.apache.cloudstack.storage.command.DownloadCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenVirtualMachineCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenNetworkLoadbalancerCommand com.cloud.agent.api.CreateNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.StartupTungstenCommand com.cloud.agent.api.storage.ListTemplateCommand com.cloud.agent.api.storage.StorageCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenNicCommand com.cloud.agent.api.storage.CreateVolumeOVACommand com.cloud.agent.api.storage.UploadProgressCommand com.cloud.agent.api.StopCommand com.cloud.agent.api.ConsoleAccessAuthenticationCommand org.apache.cloudstack.network.opendaylight.agent.commands.ConfigureNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenTagCommand org.apache.cloudstack.storage.command.ForgetObjectCmd com.cloud.agent.api.GetControllerHostsCommand com.cloud.agent.api.VMSnapshotBaseCommand org.apache.cloudstack.ca.PostCertificateRenewalCommand com.cloud.agent.api.BcfCommand com.cloud.agent.api.CleanupPersistentNetworkResourceCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFirewallPolicyCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenRoutingLogicalRouterCommand com.cloud.agent.api.UpdateBcfRouterCommand com.cloud.agent.api.DeleteLogicalSwitchPortCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateLoadBalancerServiceInstanceCommand com.cloud.agent.api.storage.UploadCommand com.cloud.agent.api.storage.StorageNfsVersionCommand org.apache.cloudstack.agent.directdownload.RevokeDirectDownloadCertificateCommand com.cloud.agent.api.OvsSetupBridgeCommand com.cloud.agent.api.MigrateWithStorageSendCommand com.cloud.agent.api.routing.DnsMasqConfigCommand com.cloud.agent.api.DeleteLogicalRouterPortCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenConnectedNetworkFromLogicalRouterCommand com.cloud.agent.api.DeleteNetworkCommand org.apache.cloudstack.storage.command.RevertSnapshotCommand org.apache.cloudstack.shutdown.command.BaseShutdownManagementServerHostCommand com.cloud.agent.api.StartCommand com.cloud.agent.api.PrepareUnmanageVMInstanceCommand com.cloud.agent.api.ScheduleHostScanTaskCommand com.cloud.agent.api.storage.CreateCommand com.cloud.agent.api.BumpUpPriorityCommand com.cloud.agent.api.GetHostStatsCommand com.cloud.agent.api.NetworkRulesSystemVmCommand com.cloud.agent.api.MigrateWithStorageCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkSubnetCommand com.cloud.agent.api.BadCommand com.cloud.agent.api.UnregisterNicCommand com.cloud.agent.api.routing.NetworkElementCommand com.cloud.agent.api.GetUnmanagedInstancesCommand com.cloud.agent.api.ConvertInstanceCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenNetworkCommand com.cloud.agent.api.routing.SetMonitorServiceCommand com.cloud.agent.api.RecurringNetworkUsageCommand com.cloud.agent.api.DirectNetworkUsageCommand com.cloud.agent.api.MigrateWithStorageCompleteCommand com.cloud.agent.api.OvsVpcPhysicalTopologyConfigCommand com.cloud.agent.api.baremetal.PrepareCreateTemplateCommand com.cloud.agent.api.storage.AbstractDownloadCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenSecurityGroupCommand com.cloud.agent.api.StartupBigSwitchBcfCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenNetworkDnsCommand com.cloud.baremetal.networkservice.PrepareKickstartPxeServerCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenPolicyCommand com.cloud.agent.api.TransferAgentCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenServiceGroupCommand com.cloud.agent.api.GetVmConfigCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFirewallPolicyCommand com.cloud.agent.api.storage.PrepareOVAPackingCommand org.apache.cloudstack.network.opendaylight.agent.commands.StartupOpenDaylightControllerCommand com.cloud.agent.api.routing.SetNetworkACLCommand com.cloud.agent.api.GetVmStatsCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFloatingIpPoolCommand com.cloud.agent.api.UpdateLogicalSwitchPortCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenPolicyRuleCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenProjectCommand com.cloud.agent.api.CheckGuestOsMappingCommand com.cloud.agent.api.ConfigureSharedNetworkVlanIdCommand com.cloud.agent.api.routing.Site2SiteVpnCfgCommand org.apache.cloudstack.agent.directdownload.SetupDirectDownloadCertificateCommand com.cloud.agent.api.routing.CreateLoadBalancerApplianceCommand com.cloud.agent.api.CreateVMSnapshotCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenVmCommand com.cloud.agent.api.routing.DhcpEntryCommand com.cloud.agent.api.FenceCommand com.cloud.agent.api.routing.DestroyLoadBalancerApplianceCommand com.cloud.agent.api.OvsCreateTunnelCommand com.cloud.agent.api.MigrateWithStorageReceiveCommand com.cloud.agent.api.ModifyVmNicConfigCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFloatingIpCommand com.cloud.agent.api.GetHypervisorGuestOsNamesCommand org.apache.cloudstack.storage.command.IntroduceObjectCmd org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenTagTypeCommand com.cloud.agent.api.CheckRouterCommand com.cloud.agent.api.SecStorageSetupCommand com.cloud.agent.api.routing.CreateIpAliasCommand com.cloud.agent.api.SecurityGroupRulesCmd com.cloud.agent.api.routing.GetAutoScaleMetricsCommand org.apache.cloudstack.agent.directdownload.NfsDirectDownloadCommand com.cloud.agent.api.AttachIsoCommand com.cloud.agent.api.storage.CopyVolumeCommand org.apache.cloudstack.network.tungsten.agent.api.ApplyTungstenPortForwardingCommand org.apache.cloudstack.diagnostics.PrepareFilesCommand com.cloud.agent.api.StartupRoutingCommand org.apache.cloudstack.storage.command.AttachCommand org.apache.cloudstack.storage.command.CreateObjectCommand com.cloud.agent.api.StartupExternalLoadBalancerCommand com.cloud.agent.api.DeleteBcfAttachmentCommand org.apache.cloudstack.network.tungsten.agent.api.SetTungstenNetworkGatewayCommand com.cloud.agent.api.ConfigureSharedNetworkUuidCommand com.cloud.agent.api.routing.SetStaticNatRulesCommand com.cloud.agent.api.StartupTrafficMonitorCommand com.cloud.agent.api.CreateVolumeFromVMSnapshotCommand org.apache.cloudstack.agent.lb.SetupMSListCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkGatewayToLogicalRouterCommand com.cloud.agent.api.CacheBcfTopologyCommand com.cloud.agent.api.DeleteBcfStaticNatCommand com.cloud.agent.api.routing.DeleteIpAliasCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenVmToSecurityGroupCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenSecurityGroupRuleCommand com.cloud.agent.api.GetRemoteVmsCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenAddressGroupCommand com.cloud.agent.api.AssociateMacToNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenVrouterConfigCommand org.apache.cloudstack.agent.directdownload.DirectDownloadCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenObjectCommand com.cloud.agent.api.StartupExternalDhcpCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenSecondaryIpAddressCommand com.cloud.agent.api.ConsoleProxyLoadReportCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenFloatingIpsCommand com.cloud.agent.api.DeleteLogicalSwitchCommand com.cloud.agent.api.BackupSnapshotCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenRoutingLogicalRouterCommand org.apache.cloudstack.storage.command.ResignatureCommand com.cloud.agent.api.ValidateSnapshotCommand com.cloud.agent.api.SetupPersistentNetworkCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenLoadBalancerCommand org.apache.cloudstack.network.tungsten.agent.api.ClearTungstenNetworkGatewayCommand com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand com.cloud.agent.api.CheckVirtualMachineCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFirewallRuleCommand com.cloud.agent.api.check.CheckSshCommand com.cloud.agent.api.CreateBcfRouterCommand com.cloud.agent.api.StartupCommand com.cloud.agent.api.CheckHealthCommand org.apache.cloudstack.diagnostics.CopyToSecondaryStorageCommand com.cloud.agent.api.DeleteVMSnapshotCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadbalancerSslCommand com.cloud.agent.api.StartupProxyCommand com.cloud.agent.api.routing.VmDataCommand com.cloud.agent.api.storage.PrimaryStorageDownloadCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenTagTypeCommand com.cloud.agent.api.storage.DeleteEntityDownloadURLCommand com.cloud.agent.api.CreateLogicalRouterCommand org.apache.cloudstack.network.tungsten.agent.api.ApplyTungstenTagCommand com.cloud.agent.api.ModifyTargetsCommand com.cloud.agent.api.CreateLogicalSwitchCommand com.cloud.agent.api.GetVolumeStatsCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenProjectCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenAddressGroupCommand com.cloud.agent.api.CheckVolumeCommand com.cloud.agent.api.MaintainCommand com.cloud.agent.api.GetVncPortCommand org.apache.cloudstack.network.tungsten.agent.api.GetTungstenNatIpCommand com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand com.cloud.agent.api.CreateLogicalSwitchPortCommand org.apache.cloudstack.storage.command.browser.ListDataStoreObjectsCommand org.apache.cloudstack.agent.directdownload.HttpDirectDownloadCommand org.apache.cloudstack.network.tungsten.agent.api.SetupTfRouteCommand com.cloud.agent.api.RebootRouterCommand com.cloud.agent.api.NetScalerImplementNetworkCommand com.cloud.agent.api.UnPlugNicCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenDefaultProjectCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenPolicyCommand com.cloud.agent.api.StartupSecondaryStorageCommand com.cloud.agent.api.PingStorageCommand com.cloud.agent.api.routing.AggregationControlCommand org.apache.cloudstack.storage.command.SyncVolumePathCommand com.cloud.agent.api.CreateBcfRouterInterfaceCommand com.cloud.agent.api.OvsFetchInterfaceCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenLoadBalancerListenerCommand org.apache.cloudstack.shutdown.command.CancelShutdownManagementServerHostCommand com.cloud.agent.api.StartupStorageCommand com.cloud.agent.api.ChangeAgentCommand com.cloud.agent.api.UpdateHostPasswordCommand org.apache.cloudstack.storage.command.AttachPrimaryDataStoreCmd com.cloud.agent.api.storage.MigrateVolumeCommand org.apache.cloudstack.network.opendaylight.agent.commands.AddHypervisorCommand com.cloud.agent.api.ClusterVMMetaDataSyncCommand com.cloud.agent.api.baremetal.IpmISetBootDevCommand org.apache.cloudstack.agent.directdownload.MetalinkDirectDownloadCommand com.cloud.agent.api.StartupNiciraNvpCommand org.apache.cloudstack.shutdown.command.PrepareForShutdownManagementServerHostCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenPolicyCommand org.apache.cloudstack.storage.command.StorageSubSystemCommand com.cloud.agent.api.PingCommand org.apache.cloudstack.network.opendaylight.agent.commands.DestroyPortCommand com.cloud.agent.api.OvsCreateGreTunnelCommand com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadBalancerHealthMonitorCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenTagCommand com.cloud.agent.api.UpgradeSnapshotCommand org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadBalancerPoolCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenSecurityGroupCommand org.apache.cloudstack.network.tungsten.agent.api.ListTungstenNetworkCommand com.cloud.agent.api.routing.SetSourceNatCommand com.cloud.agent.api.proxy.StartConsoleProxyAgentHttpHandlerCommand com.cloud.agent.api.SyncBcfTopologyCommand com.cloud.agent.api.MigrateVmToPoolCommand com.cloud.agent.api.OvsDeleteFlowCommand org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenVmInterfaceCommand org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenRoutingLogicalRouterCommand com.cloud.agent.api.PatchSystemVmCommand com.cloud.agent.api.routing.UpdateNetworkCommand com.cloud.agent.api.ReplugNicCommand com.cloud.agent.api.routing.GlobalLoadBalancerConfigCommand org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenNetworkGatewayFromLogicalRouterCommand com.cloud.agent.api.ComputeChecksumCommand org.apache.cloudstack.storage.command.CheckDataStoreStoragePolicyComplainceCommand com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand com.cloud.agent.api.StartupPxeServerCommand com.cloud.agent.api.StartupExternalFirewallCommand org.apache.cloudstack.network.tungsten.agent.api.AddTungstenSecondaryIpAddressCommand com.cloud.agent.api.AttachOrDettachConfigDriveCommand com.cloud.agent.api.StartupOvsCommand org.apache.cloudstack.storage.command.UploadStatusCommand com.cloud.agent.api.SetHostParamsCommand ```
GutoVeronezi commented 7 months ago

@DaanHoogland @vishesh92 I've created PR #8605 to address the POC I'd mentioned .