use of com.thoughtworks.go.security.Registration in project gocd by gocd.
the class AgentInstanceTest method shouldAssignCertificateToApprovedAgent.
@Test
public void shouldAssignCertificateToApprovedAgent() {
AgentInstance agentInstance = AgentInstance.createFromConfig(agentConfig, systemEnvironment);
agentInstance.update(new AgentRuntimeInfo(agentConfig.getAgentIdentifier(), AgentRuntimeStatus.Idle, currentWorkingDirectory(), "cookie", false));
Registration entry = agentInstance.assignCertification();
assertThat(entry.getChain().length, is(not(0)));
}
use of com.thoughtworks.go.security.Registration in project gocd by gocd.
the class AgentRegistrationController method agentRequest.
@RequestMapping(value = "/admin/agent", method = RequestMethod.POST)
public ModelAndView agentRequest(@RequestParam("hostname") String hostname, @RequestParam("uuid") String uuid, @RequestParam("location") String location, @RequestParam("usablespace") String usablespaceAsString, @RequestParam("operatingSystem") String operatingSystem, @RequestParam("agentAutoRegisterKey") String agentAutoRegisterKey, @RequestParam("agentAutoRegisterResources") String agentAutoRegisterResources, @RequestParam("agentAutoRegisterEnvironments") String agentAutoRegisterEnvironments, @RequestParam("agentAutoRegisterHostname") String agentAutoRegisterHostname, @RequestParam("elasticAgentId") String elasticAgentId, @RequestParam("elasticPluginId") String elasticPluginId, @RequestParam(value = "supportsBuildCommandProtocol", required = false, defaultValue = "false") boolean supportsBuildCommandProtocol, HttpServletRequest request) throws IOException {
final String ipAddress = request.getRemoteAddr();
if (LOG.isDebugEnabled()) {
LOG.debug("Processing registration request from agent [{}/{}]", hostname, ipAddress);
}
Registration keyEntry;
String preferredHostname = hostname;
try {
if (goConfigService.serverConfig().shouldAutoRegisterAgentWith(agentAutoRegisterKey)) {
preferredHostname = getPreferredHostname(agentAutoRegisterHostname, hostname);
LOG.info("[Agent Auto Registration] Auto registering agent with uuid {} ", uuid);
} else {
if (elasticAgentAutoregistrationInfoPresent(elasticAgentId, elasticPluginId)) {
throw new RuntimeException(String.format("Elastic agent registration requires an auto-register agent key to be setup on the server. Agent-id: [%s], Plugin-id: [%s]", elasticAgentId, elasticPluginId));
}
}
AgentConfig agentConfig = new AgentConfig(uuid, preferredHostname, ipAddress);
if (partialElasticAgentAutoregistrationInfo(elasticAgentId, elasticPluginId)) {
throw new RuntimeException("Elastic agents must submit both elasticAgentId and elasticPluginId");
}
if (elasticAgentAutoregistrationInfoPresent(elasticAgentId, elasticPluginId)) {
agentConfig.setElasticAgentId(elasticAgentId);
agentConfig.setElasticPluginId(elasticPluginId);
}
if (goConfigService.serverConfig().shouldAutoRegisterAgentWith(agentAutoRegisterKey)) {
LOG.info(String.format("[Agent Auto Registration] Auto registering agent with uuid %s ", uuid));
GoConfigDao.CompositeConfigCommand compositeConfigCommand = new GoConfigDao.CompositeConfigCommand(new AgentConfigService.AddAgentCommand(agentConfig), new UpdateResourceCommand(uuid, agentAutoRegisterResources), new UpdateEnvironmentsCommand(uuid, agentAutoRegisterEnvironments));
HttpOperationResult result = new HttpOperationResult();
agentConfig = agentConfigService.updateAgent(compositeConfigCommand, uuid, result, agentService.agentUsername(uuid, ipAddress, preferredHostname));
if (!result.isSuccess()) {
List<ConfigErrors> errors = com.thoughtworks.go.config.ErrorCollector.getAllErrors(agentConfig);
throw new GoConfigInvalidException(null, new AllConfigErrors(errors).asString());
}
}
boolean registeredAlready = goConfigService.hasAgent(uuid);
long usablespace = Long.parseLong(usablespaceAsString);
AgentRuntimeInfo agentRuntimeInfo = AgentRuntimeInfo.fromServer(agentConfig, registeredAlready, location, usablespace, operatingSystem, supportsBuildCommandProtocol);
if (elasticAgentAutoregistrationInfoPresent(elasticAgentId, elasticPluginId)) {
agentRuntimeInfo = ElasticAgentRuntimeInfo.fromServer(agentRuntimeInfo, elasticAgentId, elasticPluginId);
}
keyEntry = agentService.requestRegistration(agentService.agentUsername(uuid, ipAddress, preferredHostname), agentRuntimeInfo);
} catch (Exception e) {
keyEntry = Registration.createNullPrivateKeyEntry();
LOG.error("Error occured during agent registration process: ", e);
}
return render(keyEntry);
}
use of com.thoughtworks.go.security.Registration in project gocd by gocd.
the class AgentService method requestRegistration.
public Registration requestRegistration(Username username, AgentRuntimeInfo agentRuntimeInfo) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Agent is requesting registration " + agentRuntimeInfo);
}
AgentInstance agentInstance = agentInstances.register(agentRuntimeInfo);
Registration registration = agentInstance.assignCertification();
if (agentInstance.isRegistered()) {
agentConfigService.saveOrUpdateAgent(agentInstance, username);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("New Agent approved " + agentRuntimeInfo);
}
}
return registration;
}
use of com.thoughtworks.go.security.Registration in project gocd by gocd.
the class AgentInstanceTest method shouldNotAssignCertificateToPendingAgent.
@Test
public void shouldNotAssignCertificateToPendingAgent() {
AgentRuntimeInfo agentRuntimeInfo = AgentRuntimeInfo.fromServer(agentConfig, false, "/var/lib", 0L, "linux", false);
AgentInstance agentInstance = AgentInstance.createFromLiveAgent(agentRuntimeInfo, systemEnvironment);
Registration entry = agentInstance.assignCertification();
assertThat(entry.getChain().length, is(0));
}
use of com.thoughtworks.go.security.Registration in project gocd by gocd.
the class SslInfrastructureService method register.
private void register(AgentAutoRegistrationProperties agentAutoRegistrationProperties) throws Exception {
String hostName = SystemUtil.getLocalhostNameOrRandomNameIfNotFound();
Registration keyEntry = Registration.createNullPrivateKeyEntry();
while (!keyEntry.isValid()) {
try {
keyEntry = remoteRegistrationRequester.requestRegistration(hostName, agentAutoRegistrationProperties);
} catch (Exception e) {
LOGGER.error("[Agent Registration] There was a problem registering with the go server.", e);
throw e;
}
if ((!keyEntry.isValid())) {
try {
LOGGER.debug("[Agent Registration] Retrieved agent key from Go server is not valid.");
Thread.sleep(REGISTER_RETRY_INTERVAL);
} catch (InterruptedException e) {
// Ok
}
}
}
LOGGER.info("[Agent Registration] Retrieved registration from Go server.");
storeChainIntoAgentStore(keyEntry);
agentAutoRegistrationProperties.scrubRegistrationProperties();
}
Aggregations