public static async Task <ContainerGroupStatus> Run( [ActivityTrigger] ContainerGroupInfo containerGroupInfo, ILogger log) { var(resourceGroupName, containerGroupName) = (containerGroupInfo.ResourceGroupName, containerGroupInfo.ContainerGroupName); log.LogInformation($"Checking status {resourceGroupName}/{containerGroupName}"); var azure = await AzHelpers.GetAzure(); IContainerGroup containerGroup = await azure.ContainerGroups.GetByResourceGroupAsync(resourceGroupName, containerGroupName); if (containerGroup == null) { throw new Exception($"Container Instance is NOT found for { containerGroupName } in { resourceGroupName }"); } var containerGroupStatus = new ContainerGroupStatus() { State = containerGroup.State, Id = containerGroup.Id, Name = containerGroup.Name, ResourceGroupName = containerGroup.ResourceGroupName, Containers = containerGroup.Containers.Values.Select(c => new ContainerInstanceStatus() { Name = c.Name, CurrentState = c.InstanceView?.CurrentState, RestartCount = c.InstanceView?.RestartCount, }).ToArray() }; return(containerGroupStatus); }
public static async Task <string> Run( [ActivityTrigger] ContainerGroupInfo containerGroupInfo, ILogger log) { var(resourceGroupName, containerGroupName) = (containerGroupInfo.ResourceGroupName, containerGroupInfo.ContainerGroupName); log.LogInformation($"Fetching logs {resourceGroupName}/{containerGroupName}"); var azure = await AzHelpers.GetAzure(); var logContents = await azure.ContainerGroups.GetLogContentAsync(resourceGroupName, containerGroupName, containerGroupName); return(logContents); }
public static async Task Run( [ActivityTrigger] ContainerGroupInfo containerGroupInfo, ILogger log) { var(resourceGroupName, containerGroupName) = (containerGroupInfo.ResourceGroupName, containerGroupInfo.ContainerGroupName); var azure = await AzHelpers.GetAzure(); IContainerGroup containerGroup = await azure.ContainerGroups.GetByResourceGroupAsync(resourceGroupName, containerGroupName); if (containerGroup == null) { throw new Exception($"Container Instance is NOT found for {resourceGroupName}/{containerGroupName}"); } await containerGroup.StopAsync(); await Task.Delay(5000); log.LogInformation($"starting container: {resourceGroupName}/{containerGroupName} ...."); await azure.ContainerGroups.StartAsync(resourceGroupName, containerGroupName); }
public void Deconstruct(out ContainerGroupInfo containerGroupInfo, out int pollingInterval, out int maxProcessingTime) { containerGroupInfo = ContainerGroupInfo; pollingInterval = PollingInterval; maxProcessingTime = MaxProcessingTime; }