public JCloudsSlave provisionSlave(JCloudsCloud cloud, TaskListener listener) throws IOException {
        Server nodeMetadata = provision(cloud);

        try {
            return new JCloudsSlave(cloud.getDisplayName(), getFsRoot(), nodeMetadata, labelString,
                    numExecutors, overrideRetentionTime, getJvmOptions(), credentialsId, slaveType);
        } catch (Descriptor.FormException e) {
            throw new AssertionError("Invalid configuration " + e.getMessage());
        }
    }