@Override public Collection<NodeProvisioner.PlannedNode> provision(Label label, int excessWorkload) { Queue<JCloudsSlaveTemplate> templateProvider = getAvailableTemplateProvider(label); List<PlannedNode> plannedNodeList = new ArrayList<>(); while (excessWorkload > 0 && !Jenkins.getActiveInstance().isQuietingDown() && !Jenkins.getActiveInstance().isTerminating()) { final JCloudsSlaveTemplate template = templateProvider.poll(); if (template == null) { LOGGER.info("Instance cap exceeded on all available templates"); break; } LOGGER.fine("Provisioning slave for " + label + " from template " + template.name); int numExecutors = template.getEffectiveSlaveOptions().getNumExecutors(); ProvisioningActivity.Id id = new ProvisioningActivity.Id(this.name, template.name); Future<Node> task = Computer.threadPoolForRemoting.submit(new NodeCallable(this, template, id)); plannedNodeList.add(new TrackedPlannedNode(id, numExecutors, task)); excessWorkload -= numExecutors; } return plannedNodeList; }
final ProvisioningActivity.Id id = new ProvisioningActivity.Id(getDisplayName(), t.getDockerContainerLifecycle().getImage());
final ProvisioningActivity.Id provisioningId = new ProvisioningActivity.Id(this.name, template.name);
final int index = i; final ProvisioningActivity.Id provisioningId = new ProvisioningActivity.Id(this.name, template.getTemplateName());
EnvVars initialEnvironment) throws IOException, InterruptedException { final ProvisioningActivity.Id activityId = new ProvisioningActivity.Id( run.getDisplayName(), getConfig().getDockerContainerLifecycle().getImage()
@Restricted(NoExternalUse.class) public @Nonnull JCloudsSlave provisionSlave(JCloudsSlaveTemplate template) throws IOException, Openstack.ActionFailed{ CloudStatistics.ProvisioningListener provisioningListener = CloudStatistics.ProvisioningListener.get(); ProvisioningActivity.Id id = new ProvisioningActivity.Id(this.name, template.name); JCloudsSlave node; try { provisioningListener.onStarted(id); node = template.provisionSlave(this, id); provisioningListener.onComplete(id, node); } catch (Throwable ex) { provisioningListener.onFailure(id, ex); throw ex; } Jenkins.getActiveInstance().addNode(node); return node; }
JCloudsSlave doProvisionFromTemplate(final JCloudsSlaveTemplate t) throws IOException { final StringWriter sw = new StringWriter(); final StreamTaskListener listener = new StreamTaskListener(sw); final ProvisioningActivity.Id provisioningId = new ProvisioningActivity.Id(this.name, t.name); JCloudsSlave node = t.provisionSlave(listener, provisioningId); Jenkins.getInstance().addNode(node); return node; }