private void init() {
    admin = new AdminFactory().addGroup(group).addLocator(locator).createAdmin();
    System.out.println(admin);
    GridServiceAgents agents = admin.getGridServiceAgents();
    System.out.println(agents);
    agents.waitForAtLeastOne(10, TimeUnit.SECONDS);
    ElasticServiceManagers esms = admin.getElasticServiceManagers();
    System.out.println(esms);
    esms.waitForAtLeastOne(10, TimeUnit.SECONDS);

    gsm = admin.getGridServiceManagers().waitForAtLeastOne(10, TimeUnit.SECONDS);
    ProcessingUnits pus = admin.getProcessingUnits();
    System.out.println(pus);
    pu = pus.waitFor(processingUnitName, 5, TimeUnit.SECONDS);
    System.out.printf("Processing unit (null is acceptable): %s%n", pu);
    if (pu == null) {

      pu =
          gsm.deploy(
              new ElasticStatelessProcessingUnitDeployment(processingUnitName)
                  // initial scale
                  .scale(
                      new ManualCapacityScaleConfigurer()
                          // .numberOfCpuCores(1)
                          .create()));
      try {
        monitorPUScaleProgress(pu, 1);
      } catch (Exception ignored) {
      }
      try {
        scale(pu, initialWorkers);
      } catch (Exception e) {
        e.printStackTrace();
      }
    } else {
      initialWorkers = getPUWorkerCount(pu);
    }
  }