use of jetbrains.buildServer.server.graphql.model.agentPool.AgentPool in project teamcity-rest by JetBrains.
the class AbstractAgentPoolResolverTest method basicProjectsConnection.
public void basicProjectsConnection() throws Throwable {
jetbrains.buildServer.serverSide.agentPools.AgentPool realPool = myFixture.getAgentPoolManager().createNewAgentPool("testAgentPool");
Set<String> allProjectIds = new HashSet<>();
Set<String> visibleProjectNames = new HashSet<>();
MockAuthorityHolder mockUser = new MockAuthorityHolder();
Permissions viewProjectPermissions = new Permissions(Permission.VIEW_PROJECT);
for (int i = 0; i < 5; i++) {
ProjectEx project = createProject("visibleProject" + i);
mockUser.projectPerms.put(project.getProjectId(), viewProjectPermissions);
allProjectIds.add(project.getProjectId());
visibleProjectNames.add(project.getName());
}
List<ProjectEx> invisibleProjects = new ArrayList<>();
for (int i = 0; i < 3; i++) {
ProjectEx project = createProject("invisibleProject" + i);
allProjectIds.add(project.getProjectId());
invisibleProjects.add(project);
}
myFixture.getAgentPoolManager().associateProjectsWithPool(realPool.getAgentPoolId(), allProjectIds);
Mock fieldSelectionSetMock = mock(DataFetchingFieldSelectionSet.class);
fieldSelectionSetMock.stubs().method("contains").with(eq("excludedCount")).will(returnValue(true));
myDataFetchingEnvironment.setSelectionSet((DataFetchingFieldSelectionSet) fieldSelectionSetMock.proxy());
AgentPoolProjectsConnection connection = myFixture.getSecurityContext().runAs(mockUser, () -> myResolver.projects(new AgentPool(realPool), new ProjectsFilter(), myDataFetchingEnvironment));
connection.getEdges().getData().forEach(edge -> {
String name = edge.getNode().getData().getName();
assertTrue("Project '" + name + "' is visible, but shouldn't be.", visibleProjectNames.contains(name));
});
assertEquals(visibleProjectNames.size(), connection.getCount());
assertEquals(new Integer(invisibleProjects.size()), connection.getExcludedCount());
}
use of jetbrains.buildServer.server.graphql.model.agentPool.AgentPool in project teamcity-rest by JetBrains.
the class AbstractAgentPoolResolverTest method basicAgentsConnection.
public void basicAgentsConnection() throws AgentPoolCannotBeRenamedException, NoSuchAgentPoolException, AgentTypeCannotBeMovedException, PoolQuotaExceededException {
AgentPoolManager manager = myFixture.getAgentPoolManager();
jetbrains.buildServer.serverSide.agentPools.AgentPool evenAgents = manager.createNewAgentPool("evenAgents");
jetbrains.buildServer.serverSide.agentPools.AgentPool oddAgents = manager.createNewAgentPool("oddAgents");
final int num = 2;
for (int i = 0; i < num * 2; i++) {
MockBuildAgent agent = myFixture.createEnabledAgent("agent_" + i);
registerAndEnableAgent(agent);
manager.moveAgentToPool((i % 2 == 0) ? evenAgents.getAgentPoolId() : oddAgents.getAgentPoolId(), agent);
}
AgentPoolAgentsConnection evenConnection = myResolver.agents(new AgentPool(evenAgents), myDataFetchingEnvironment);
assertEquals(num, evenConnection.getCount());
for (AgentPoolAgentsConnection.AgentPoolAgentsConnectionEdge edge : evenConnection.getEdges().getData()) {
assertEquals(evenAgents.getAgentPoolId(), edge.getNode().getData().getRealAgent().getAgentPoolId());
}
AgentPoolAgentsConnection oddConnection = myResolver.agents(new AgentPool(oddAgents), myDataFetchingEnvironment);
assertEquals(num, oddConnection.getCount());
for (AgentPoolAgentsConnection.AgentPoolAgentsConnectionEdge edge : oddConnection.getEdges().getData()) {
assertEquals(oddAgents.getAgentPoolId(), edge.getNode().getData().getRealAgent().getAgentPoolId());
}
}
use of jetbrains.buildServer.server.graphql.model.agentPool.AgentPool in project teamcity-rest by JetBrains.
the class AgentPoolResolver method assignableCloudImages.
@NotNull
public AgentPoolCloudImagesConnection assignableCloudImages(@NotNull AgentPool pool, @NotNull DataFetchingEnvironment env) {
AuthorityHolder authHolder = mySecurityContext.getAuthorityHolder();
jetbrains.buildServer.serverSide.agentPools.AgentPool defaultPool = myPoolManager.findAgentPoolById(jetbrains.buildServer.serverSide.agentPools.AgentPool.DEFAULT_POOL_ID);
if (!AuthUtil.hasGlobalOrPoolProjectsPermission(authHolder, defaultPool, Permission.MANAGE_AGENT_POOLS, Permission.MANAGE_AGENT_POOLS_FOR_PROJECT)) {
return AgentPoolCloudImagesConnection.empty();
}
if (!myPoolActionsAccessChecker.canManageAgentsInPool(pool.getRealPool())) {
return AgentPoolCloudImagesConnection.empty();
}
final Set<String> profileIdsInRootProject = myProjectManager.getRootProject().getOwnFeaturesOfType(CloudConstants.CLOUD_PROFILE_FEATURE_TYPE).stream().map(SProjectFeatureDescriptor::getId).collect(Collectors.toSet());
List<Pair<CloudProfile, CloudImage>> images = new ArrayList<>();
profileIdsInRootProject.forEach(profileId -> {
CloudClientEx client = myCloudManager.getClientIfExists(BuildProject.ROOT_PROJECT_ID, profileId);
CloudProfile profile = myCloudManager.findProfileById(BuildProject.ROOT_PROJECT_ID, profileId);
if (client == null || profile == null)
return;
client.getImages().stream().filter(image -> {
AgentTypeKey key = new AgentTypeKey(profile.getCloudCode(), profileId, image.getId());
AgentType type = myAgentTypeManager.findAgentTypeByKey(key);
return type != null && pool.getRealPool().getAgentPoolId() != type.getAgentPoolId();
}).forEach(image -> {
images.add(new Pair<>(profile, image));
});
});
return new AgentPoolCloudImagesConnection(images, PaginationArguments.everything());
}
Aggregations