public LocalCloudClient()

in src/jetbrains/buildServer/clouds/local/LocalCloudClient.java [26:79]


  public LocalCloudClient(@NotNull final CloudClientParameters params) {
    final String images = params.getParameter(LocalCloudConstants.IMAGES_PROFILE_SETTING);
    if (images == null || images.trim().length() == 0) {
      myErrorInfo = new CloudErrorInfo("No images specified");
      return;
    }

    final IdGenerator imageIdGenerator = new IdGenerator();

    final StringBuilder error = new StringBuilder();
    final String[] allLines = StringUtil.splitByLines(images.trim());

    for (String imageInfo : allLines) {
      imageInfo = imageInfo.trim();
      if (imageInfo.isEmpty() || imageInfo.startsWith("@@")) continue;

      final int atPos = imageInfo.indexOf('@');
      if (atPos < 0) {
        error.append(" Failed to parse image info: \"").append(imageInfo).append("\".");
        continue;
      }

      final String imageName = imageInfo.substring(0, atPos).trim();
      final String agentHomePath = imageInfo.substring(atPos + 1).trim();
      final LocalCloudImage image = new LocalCloudImage(imageIdGenerator.next(), imageName, agentHomePath, myExecutor);

      for (String line : allLines) {
        String prefix = "@@" + imageName + ":";
        if (!line.startsWith(prefix)) continue;
        line = line.substring(prefix.length()).trim();

        if (line.contains("reuse")) image.setIsReusable(true);
        if (line.contains("delay")) image.setIsEternalStarting(true);
        if (line.contains("agentPoolId:")) {
          String poolIdStr = line.substring("agentPoolId:".length());
          try {
            Integer poolId = Integer.parseInt(poolIdStr);
            image.setAgentPoolId(poolId);
          } catch (NumberFormatException e) {
            Loggers.SERVER.warnAndDebugDetails("Could not parse local cloud image pool id parameter", e);
          }
        }
        if (!line.startsWith("prop:")) continue;
        String[] kv = line.substring(5).trim().split("=", 2);
        if (kv.length == 2) {
          image.addExtraProperty(kv[0].trim(), kv[1].trim());
        }
      }

      myImages.add(image);
    }
    
    myErrorInfo = error.length() == 0 ? null : new CloudErrorInfo(error.substring(1));
  }