static async Task Main(string[] args) { var devOpsAccessSetting = new DevOpsAccessSetting("<PAT>"); try { var agentManagement = new AgentManagement(devOpsAccessSetting); IList <VstsAgent> agents = await agentManagement.GetAgentsAsync(AgentManagement.IoTEdgeAgentPoolId).ConfigureAwait(false); var agentMatrix = new AgentMatrix(); agentMatrix.Update(agents.Select(IoTEdgeVstsAgent.Create).ToHashSet()); var unmatchedAgents = agentMatrix.GetUnmatchedAgents(); var buildManagement = new BuildManagement(devOpsAccessSetting); var result = await buildManagement.GetLatestBuildsAsync(BuildDefinitionExtension.MasterBranchReporting, "refs/heads/master").ConfigureAwait(false); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
public async Task <IActionResult> Index() { var agentManagement = new AgentManagement(new DevOpsAccessSetting(this._appConfig.PersonalAccessToken)); IList <VstsAgent> agents = await agentManagement.GetAgentsAsync(AgentManagement.IoTEdgeAgentPoolId).ConfigureAwait(false); var agentMatrix = new AgentMatrix(); agentMatrix.Update(agents.Select(IoTEdgeAgent.Create).ToHashSet()); var viewModel = new AgentMatrixViewModel { AgentTable = agentMatrix }; List <IoTEdgeAgent> unmatchedAgents = agentMatrix.GetUnmatchedAgents().ToList(); // Image build viewModel.ImageBuild = new ImageBuildViewModel { Group = new AgentDemandSet("Build Images", new HashSet <AgentCapability> { new AgentCapability("build-Image", "true") }), Agents = new List <IoTEdgeAgent>() }; for (int i = unmatchedAgents.Count - 1; i >= 0; i--) { if (unmatchedAgents[i].Match(viewModel.ImageBuild.Group.Capabilities)) { viewModel.ImageBuild.Agents.Add(unmatchedAgents[i]); unmatchedAgents.RemoveAt(i); } } viewModel.UnmatchedAgents = unmatchedAgents; return(this.View(viewModel)); }
public void TestUpdate() { var agents = new HashSet <IoTEdgeAgent>(); var agent1 = new IoTEdgeAgent( 38324, "iotedge-pi-04", "version", VstsAgentStatus.Online, true, new HashSet <AgentCapability> { new AgentCapability("Agent.OS", "Linux"), new AgentCapability("Agent.OSArchitecture", "ARM"), }, new HashSet <AgentCapability> { new AgentCapability("agent-osbits", "32"), new AgentCapability("run-stress", "true"), }); agents.Add(agent1); var agent2 = new IoTEdgeAgent( 39472, "iotedge-win5", "version", VstsAgentStatus.Online, true, new HashSet <AgentCapability> { new AgentCapability("Agent.OS", "Windows_NT"), new AgentCapability("Agent.OSArchitecture", "X64"), }, new HashSet <AgentCapability> { new AgentCapability("agent-os-name", "WinPro_x64"), new AgentCapability("run-long-haul", "true"), }); agents.Add(agent2); var agentMatrix = new AgentMatrix(); agentMatrix.Update(agents); var rowGroup1 = new AgentDemandSet( "Linux ARM32", new HashSet <AgentCapability> { new AgentCapability("Agent.OS", "Linux"), new AgentCapability("Agent.OSArchitecture", "ARM"), new AgentCapability("agent-osbits", "32"), }); var colGroup1 = new AgentDemandSet( "Stress Test", new HashSet <AgentCapability> { new AgentCapability("run-stress", "true"), }); var rowGroup2 = new AgentDemandSet( "Windows AMD64", new HashSet <AgentCapability> { new AgentCapability("Agent.OS", "Windows_NT"), new AgentCapability("Agent.OSArchitecture", "X64"), new AgentCapability("agent-os-name", "WinPro_x64"), }); var colGroup2 = new AgentDemandSet( "Long Haul", new HashSet <AgentCapability> { new AgentCapability("run-long-haul", "true"), }); ImmutableDictionary <AgentDemandSet, Dictionary <AgentDemandSet, HashSet <IoTEdgeAgent> > > updatedMatrix = agentMatrix.Matrix; foreach (AgentDemandSet row in updatedMatrix.Keys) { foreach (AgentDemandSet column in updatedMatrix[row].Keys) { if (row.Equals(rowGroup1) && column.Equals(colGroup1)) { Assert.AreEqual(1, updatedMatrix[row][column].Count); } else if (row.Equals(rowGroup2) && column.Equals(colGroup2)) { Assert.AreEqual(1, updatedMatrix[row][column].Count); } else { Assert.AreEqual(0, updatedMatrix[row][column].Count); } } } }
public void TestProperties() { // Rows var linuxAMD64ds = new AgentDemandSet( "Linux AMD64", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.AgentOS, "Linux"), new AgentCapability(AgentCapabilityKeys.AgentOSArchitecture, "X64"), }); var linuxARM32ds = new AgentDemandSet( "Linux ARM32", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.AgentOS, "Linux"), new AgentCapability(AgentCapabilityKeys.AgentOSArchitecture, "ARM"), new AgentCapability(AgentCapabilityKeys.AgentOSBits, "32"), }); var linuxARM64ds = new AgentDemandSet( "Linux ARM64", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.AgentOS, "Linux"), new AgentCapability(AgentCapabilityKeys.AgentOSArchitecture, "ARM"), new AgentCapability(AgentCapabilityKeys.AgentOSBits, "64"), }); var windowsARM64ds = new AgentDemandSet( "Windows AMD64", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.AgentOS, "Windows_NT"), new AgentCapability(AgentCapabilityKeys.AgentOSArchitecture, "X64"), new AgentCapability(AgentCapabilityKeys.AgentOSName, "WinPro_x64"), }); var windowsServerCoreAMD64ds = new AgentDemandSet( "Windows Server Core AMD64", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.AgentOS, "Windows_NT"), new AgentCapability(AgentCapabilityKeys.AgentOSArchitecture, "X64"), new AgentCapability(AgentCapabilityKeys.AgentOSName, "WinServerCore_x64"), }); var windowsIoTCoreAMD64ds = new AgentDemandSet( "Windows IoT Core AMD64", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.RunnerOSName, "WinIoTCore_x64"), }); var windowsIoTCoreARM32ds = new AgentDemandSet( "Windows IoT Core ARM32", new HashSet <AgentCapability> { new AgentCapability(AgentCapabilityKeys.RunnerOSName, "WinIoTCore_arm32"), }); // Columns var longHaulds = new AgentDemandSet( "Long Haul", new HashSet <AgentCapability> { new AgentCapability("run-long-haul", "true"), }); var stressTestds = new AgentDemandSet( "Stress Test", new HashSet <AgentCapability> { new AgentCapability("run-stress", "true"), }); var e2eTestsds = new AgentDemandSet( "E2E Tests", new HashSet <AgentCapability> { new AgentCapability("run-e2e-tests", "true"), }); var agentMatrix = new AgentMatrix(); var rows = agentMatrix.Rows; var columns = agentMatrix.Columns; Assert.AreEqual(7, rows.Count); Assert.AreEqual(3, columns.Count); Assert.True(linuxAMD64ds.Equals(rows[0])); Assert.True(linuxARM32ds.Equals(rows[1])); Assert.True(linuxARM64ds.Equals(rows[2])); Assert.True(windowsARM64ds.Equals(rows[3])); Assert.True(windowsServerCoreAMD64ds.Equals(rows[4])); Assert.True(windowsIoTCoreAMD64ds.Equals(rows[5])); Assert.True(windowsIoTCoreARM32ds.Equals(rows[6])); Assert.True(longHaulds.Equals(columns[0])); Assert.True(stressTestds.Equals(columns[1])); Assert.True(e2eTestsds.Equals(columns[2])); }