private void ExecuteAllActionsForPaaS(RDFEDeployment dep) { var instance = dep.RoleInstances.Where(x => String.Equals(x.RoleInstanceName, VMName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (instance?.RoleInstanceName == null) { instance = dep.RoleInstances.Where(x => String.Equals(x.RoleInstanceName, TryConvertInstanceNameToVMName(this.VMName), StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); } if (instance?.RoleInstanceName == null) { instance = dep.RoleInstances.Where(x => String.Equals(x.ID.ToString(), VMName)).FirstOrDefault(); } GlobalInfo = new ShortRDFERoleInstance { Icm = Id, Fabric = dep.FabricGeoId, DeploymentId = dep.Id, DeploymentName = dep.Name, ContainerID = instance.ID, InstanceName = instance.RoleInstanceName }; Task <string> modelTask = null; SALsA.GetInstance(Id).TaskManager.AddTask( BlobStorageUtility.SaveAndSendBlobTask(Constants.AnalyzerVMScreenshotOutputFilename, GenevaActions.GetClassicVMConsoleScreenshot(Id, GlobalInfo), Id), BlobStorageUtility.SaveAndSendBlobTask(Constants.AnalyzerNodeDiagnosticsFilename, GenevaActions.GetNodeDiagnosticsFilesByDeploymentIdorVMName(Id, GlobalInfo), Id), BlobStorageUtility.SaveAndSendBlobTask(Constants.AnalyzerContainerSettings, modelTask = GenevaActions.GetContainerSettings(Id, GlobalInfo), Id) ); try { var model = Utility.JsonToObject <Json2Class.ContainerSettings>(modelTask.Result); GlobalInfo.NodeId = new Guid(model.NodeId); } catch (Exception ex) { Log.Critical("Failed to populate NodeId"); Log.Exception(ex); } finally { SALsA.GetInstance(Id)?.ICM.QueueICMDiscussion(GlobalInfo.ToString()); } }
public Analyzer(int Id, object manualRun) { this.IsCustomRun = true; this.Id = Id; StartTime = SALsA.GetInstance(Id).ICM.CurrentICM.CreateDate; Log.Information("Received ManualRun order type {0} with param {1} : ", manualRun.GetType(), Utility.ObjectToJson(manualRun)); if (manualRun.GetType() == typeof(ManualRun_ICM)) { ManualRun_ICM manualArm = (ManualRun_ICM)manualRun; SubscriptionId = manualArm.SubscriptionID; ResourceGroupName = manualArm.ResourceGroupName; VMName = manualArm.VMName; AnalyzerInternal(); } else if (manualRun.GetType() == typeof(ManualRun_IID)) { ManualRun_IID manualIID = (ManualRun_IID)manualRun; SubscriptionId = manualIID.SubscriptionID; ResourceGroupName = manualIID.ResourceGroupName; VMName = manualIID.VMName; ARMDeployment dep = null; int instanceId = -1; if (String.IsNullOrEmpty(manualIID.Region)) { Log.Information("Calling automatic ARM VMdetection. No Region parameter provided."); ARMSubscription arm = AnalyzeARMSubscription(SubscriptionId, this.ResourceGroupName); dep = AnalyzeARMDeployment(arm); instanceId = TryConvertInstanceNameToInstanceId(this.VMName); } else { dep = new ARMDeployment(); dep.Name = manualIID.VMName; dep.Subscriptions = manualIID.SubscriptionID.ToString(); dep.ResourceGroups = manualIID.ResourceGroupName; dep.Location = manualIID.Region; instanceId = manualIID.Instance; } if (instanceId < 0) { Log.Information("No Instance ID detected. Assuming this is a normal single IaaS VM"); SALsA.GetInstance(Id).TaskManager.AddTask( BlobStorageUtility.SaveAndSendBlobTask( Constants.AnalyzerInspectIaaSDiskOutputFilename, GenevaActions.InspectIaaSDiskForARMVM(Id, dep), Id)); } else { Log.Information("No Instance ID detected. Assuming this is a normal single IaaS VM"); SALsA.GetInstance(Id).TaskManager.AddTask( BlobStorageUtility.SaveAndSendBlobTask( Constants.AnalyzerInspectIaaSDiskOutputFilename, GenevaActions.InspectIaaSDiskForARMVM(Id, dep, instanceId), Id)); } } else if (manualRun.GetType() == typeof(ManualRun_RDFE_Fabric)) { var rdfe = (ManualRun_RDFE_Fabric)manualRun; var vmInfo = new ShortRDFERoleInstance { ContainerID = new Guid(rdfe.ContainerID), Fabric = rdfe.FabricCluster, NodeId = new Guid(rdfe.NodeId) }; BlobStorageUtility.SaveAndSendBlobTask(Constants.AnalyzerNodeDiagnosticsFilename, GenevaActions.GetNodeDiagnosticsFilesByContainerId(Id, vmInfo), Id).Wait(); } else if (manualRun.GetType() == typeof(ManualRun_RDFE_Tenant)) { var rdfe = (ManualRun_RDFE_Tenant)manualRun; var vmInfo = new ShortRDFERoleInstance { Fabric = rdfe.FabricCluster, DeploymentId = rdfe.DeploymentID, InstanceName = rdfe.RoleInstanceName }; BlobStorageUtility.SaveAndSendBlobTask(Constants.AnalyzerNodeDiagnosticsFilename, GenevaActions.GetNodeDiagnosticsFilesByDeploymentIdorVMName(Id, vmInfo), Id).Wait(); } }