public NodeAndInitialCredentials createNodeWithGroupEncodedIntoName()

in aliyun-ecs/src/main/java/org/jclouds/aliyun/ecs/compute/ECSComputeServiceAdapter.java [98:147]


   public NodeAndInitialCredentials<Instance> createNodeWithGroupEncodedIntoName(String group, String name, Template template) {
      String instanceType = template.getHardware().getId();
      String regionId = template.getLocation().getId();
      String imageId = template.getImage().getId();

      ECSServiceTemplateOptions templateOptions = template.getOptions().as(ECSServiceTemplateOptions.class);

      String keyPairName = templateOptions.getKeyPairName();
      String securityGroupId = Iterables.getOnlyElement(templateOptions.getGroups());
      String vSwitchId = templateOptions.getVSwitchId();
      Instance.InternetChargeType internetChargeType = Instance.InternetChargeType.fromValue(templateOptions.getInternetChargeType());
      int internetMaxBandwidthOut = templateOptions.getInternetMaxBandwidthOut();
      String instanceChargeType = templateOptions.getInstanceChargeType();

      Map<String, String> tags = ComputeServiceUtils.metadataAndTagsAsValuesOfEmptyString(templateOptions);
      tags = new ImmutableMap.Builder()
              .putAll(tags)
              .put(vSwitchId, "")
              .build();
      TagOptions tagOptions = TagOptions.Builder.tags(tags);

      InstanceRequest instanceRequest = api.instanceApi().create(regionId, RegionAndId.fromSlashEncoded(imageId).id(), securityGroupId, name, instanceType,
              CreateInstanceOptions.Builder
                      .vSwitchId(vSwitchId)
                      .internetChargeType(internetChargeType.toString())
                      .internetMaxBandwidthOut(internetMaxBandwidthOut)
                      .instanceChargeType(instanceChargeType)
                      .instanceName(name)
                      .keyPairName(keyPairName)
                      .tagOptions(tagOptions)
      );

      String regionAndInstanceId = slashEncodeRegionAndId(regionId, instanceRequest.getInstanceId());
      if (!instanceSuspendedPredicate.apply(regionAndInstanceId)) {
         final String message = format("Instance %s was not created correctly. The associated resources created for it will be destroyed", instanceRequest.getInstanceId());
         logger.warn(message);
         cleanupResources.cleanupNode(RegionAndId.create(regionId, instanceRequest.getInstanceId()));
         cleanupResources.cleanupSecurityGroupIfOrphaned(regionId, securityGroupId);
      }

      api.instanceApi().allocatePublicIpAddress(regionId, instanceRequest.getInstanceId());
      api.instanceApi().powerOn(instanceRequest.getInstanceId());
      Instance instance = Iterables.get(api.instanceApi().list(regionId, ListInstancesOptions.Builder.instanceIds(instanceRequest.getInstanceId())), 0);

      // Safe to pass null credentials here, as jclouds will default populate
      // the node with the default credentials from the image, or the ones in
      // the options, if provided.
      return new NodeAndInitialCredentials(instance,
              slashEncodeRegionAndId(regionId, instanceRequest.getInstanceId()), null);
   }