All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.SingularityDeployKey Maven / Gradle / Ivy

The newest version!
package com.hubspot.singularity;

import java.util.Collection;
import java.util.Map;

import javax.annotation.Nonnull;

import com.google.common.base.Function;
import com.google.common.collect.Maps;
import com.hubspot.mesos.JavaUtils;

public class SingularityDeployKey extends SingularityId {

  private final String requestId;
  private final String deployId;

  public static SingularityDeployKey fromDeploy(SingularityDeploy deploy) {
    return new SingularityDeployKey(deploy.getRequestId(), deploy.getId());
  }

  public static SingularityDeployKey fromPendingTask(SingularityPendingTask pendingTask) {
    return new SingularityDeployKey(pendingTask.getPendingTaskId().getRequestId(), pendingTask.getPendingTaskId().getDeployId());
  }

  public static SingularityDeployKey fromDeployMarker(SingularityDeployMarker deployMarker) {
    return new SingularityDeployKey(deployMarker.getRequestId(), deployMarker.getDeployId());
  }

  public static SingularityDeployKey fromTaskId(SingularityTaskId taskId) {
    return new SingularityDeployKey(taskId.getRequestId(), taskId.getDeployId());
  }

  public static Map fromDeploys(Collection deploys) {
    return Maps.uniqueIndex(deploys, new Function() {
      @Override
      public SingularityDeployKey apply(@Nonnull SingularityDeploy input) {
        return SingularityDeployKey.fromDeploy(input);
      }
    });
  }

  public static Map fromPendingTasks(Collection pendingTasks) {
    return Maps.toMap(pendingTasks, new Function() {
      @Override
      public SingularityDeployKey apply(@Nonnull SingularityPendingTask input) {
        return SingularityDeployKey.fromPendingTask(input);
      }
    });
  }

  public static Map fromPendingDeploys(Collection pendingDeploys) {
    return Maps.toMap(pendingDeploys, FROM_PENDING_TO_DEPLOY_KEY);
  }

  public static final Function FROM_PENDING_TO_DEPLOY_KEY = new Function() {
    @Override
    public SingularityDeployKey apply(@Nonnull SingularityPendingDeploy input) {
      return SingularityDeployKey.fromDeployMarker(input.getDeployMarker());
    }
  };

  public SingularityDeployKey(String requestId, String deployId) {
    this.requestId = requestId;
    this.deployId = deployId;
  }

  public String getRequestId() {
    return requestId;
  }

  public String getDeployId() {
    return deployId;
  }

  public static SingularityDeployKey valueOf(String string) {
    final String[] splits = JavaUtils.reverseSplit(string, 2, "-");

    final String requestId = splits[0];
    final String deployId = splits[1];

    return new SingularityDeployKey(requestId, deployId);
  }

  @Override
  public String getId() {
    return String.format("%s-%s", getRequestId(), getDeployId());
  }

  @Override
  public String toString() {
    return getId();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy