Class ComputeClientImpl

java.lang.Object
co.yellowdog.platform.clients.compute.ComputeClientImpl
All Implemented Interfaces:
ComputeClient, AutoCloseable

public class ComputeClientImpl extends Object implements ComputeClient, AutoCloseable
Implementation of the ComputeClient interface
  • Method Details

    • create

      public static ComputeClientImpl create(@NonNull @NonNull ServicesSchema servicesSchema, @NonNull @NonNull RetryFactory retryFactory, @NonNull @NonNull AuthenticationHeadersProvider authenticationHeadersProvider, @NonNull @NonNull com.fasterxml.jackson.databind.ObjectMapper objectMapper, @NonNull @NonNull UserAgent userAgent)
    • addComputeRequirement

      public ComputeRequirement addComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Submits a NEW requirement to YellowDog Compute to be initialised and provisioned.
      Specified by:
      addComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to submit to YellowDog Compute
      Returns:
      the initialised requirement returned from YellowDog Compute
    • updateComputeRequirement

      public ComputeRequirement updateComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Submits an existing requirement to YellowDog Compute in order to provision any changes.
      Specified by:
      updateComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to submit to YellowDog Compute
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • updateComputeRequirement

      public ComputeRequirement updateComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement, boolean reprovision)
      Description copied from interface: ComputeClient
      Submits an existing requirement to YellowDog Compute in order to provision any changes.
      Specified by:
      updateComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to submit to YellowDog Compute
      reprovision - indicates that YellowDog Compute should provision instances to restore the instance count even if targetInstanceCount is unchanged
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • getComputeRequirement

      public ComputeRequirement getComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Requests the latest view of the specified requirement from YellowDog Compute.
      Specified by:
      getComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement for which to get the latest view
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • getComputeRequirement

      public ComputeRequirement getComputeRequirement(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Requests the latest view of the specified requirement from YellowDog Compute.
      Specified by:
      getComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • getComputeRequirement

      public ComputeRequirement getComputeRequirement(@NonNull @NonNull String namespace, @NonNull @NonNull String computeRequirementName)
      Description copied from interface: ComputeClient
      Requests the latest view of the specified requirement from YellowDog Compute.
      Specified by:
      getComputeRequirement in interface ComputeClient
      Parameters:
      namespace - the namespace containing the requirement
      computeRequirementName - the name of the requirement
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • stopComputeRequirement

      public ComputeRequirement stopComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to stop all running instances provisioned for the specified requirement.
      Specified by:
      stopComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to stop
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • stopComputeRequirement

      public ComputeRequirement stopComputeRequirement(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to stop all running instances provisioned for the specified requirement.
      Specified by:
      stopComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement to stop
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • startComputeRequirement

      public ComputeRequirement startComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to start all stopped instances provisioned for the specified requirement.
      Specified by:
      startComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to start
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • startComputeRequirement

      public ComputeRequirement startComputeRequirement(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to start all stopped instances provisioned for the specified requirement.
      Specified by:
      startComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement to start
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • terminateComputeRequirement

      public ComputeRequirement terminateComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified requirement.
      Specified by:
      terminateComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to terminate
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • terminateComputeRequirement

      public ComputeRequirement terminateComputeRequirement(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified requirement.
      Specified by:
      terminateComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement to terminate
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • reprovisionComputeRequirement

      public ComputeRequirement reprovisionComputeRequirement(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to provision more instances if required such that the number of running instances meets the targetInstanceCount.
      Specified by:
      reprovisionComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to terminate
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • reprovisionComputeRequirement

      public ComputeRequirement reprovisionComputeRequirement(String computeRequirementId)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to provision more instances if required such that the number of running instances meets the targetInstanceCount.
      Specified by:
      reprovisionComputeRequirement in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement to terminate
      Returns:
      the latest view of the requirement returned from YellowDog Compute
    • getInstances

      public SearchClient<Instance> getInstances(@NonNull @NonNull InstanceSearch instanceSearch)
      Description copied from interface: ComputeClient
      Returns a search client for searching instances.
      Specified by:
      getInstances in interface ComputeClient
      Parameters:
      instanceSearch - the search criteria
      Returns:
      a search client for searching instances
    • stopInstances

      public void stopInstances(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull List<Instance> instances)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to stop the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to stop instances that are InstanceStatus.RUNNING or InstanceStatus.UNKNOWN.
      Specified by:
      stopInstances in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instances - The instances to stop
    • stopInstancesById

      public void stopInstancesById(ComputeRequirement computeRequirement, List<InstanceId> instanceIds)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to stop the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to stop instances that are InstanceStatus.RUNNING or InstanceStatus.UNKNOWN.
      Specified by:
      stopInstancesById in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instanceIds - the ids of instances to stop
    • startInstances

      public void startInstances(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull List<Instance> instances)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to start the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to start instances that are InstanceStatus.STOPPED or InstanceStatus.UNKNOWN.
      Specified by:
      startInstances in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instances - the instances to start
    • startInstancesById

      public void startInstancesById(ComputeRequirement computeRequirement, List<InstanceId> instanceIds)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to start the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to start instances that are InstanceStatus.STOPPED or InstanceStatus.UNKNOWN.
      Specified by:
      startInstancesById in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instanceIds - the ids of instances to start
    • terminateInstances

      public void terminateInstances(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull List<Instance> instances)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified instances provisioned for the specified requirement. YellowDog Compute will not attempt to terminate instances that are already InstanceStatus.TERMINATING.
      Specified by:
      terminateInstances in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instances - the instances to terminate
    • terminateInstancesById

      public void terminateInstancesById(ComputeRequirement computeRequirement, List<InstanceId> instanceIds)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified instances provisioned for the specified requirement. YellowDog Compute will not attempt to terminate instances that are already InstanceStatus.TERMINATING.
      Specified by:
      terminateInstancesById in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instanceIds - the ids of instances to terminate
    • restartInstances

      public void restartInstances(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull List<Instance> instances)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to restart (reboot) the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to restart instances that are InstanceStatus.RUNNING, InstanceStatus.STOPPED or InstanceStatus.UNKNOWN.
      Specified by:
      restartInstances in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instances - the instances to restart
    • restartInstancesById

      public void restartInstancesById(ComputeRequirement computeRequirement, List<InstanceId> instanceIds)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to restart (reboot) the specified instances provisioned for the specified requirement. YellowDog Compute will only attempt to restart instances that are InstanceStatus.RUNNING, InstanceStatus.STOPPED or InstanceStatus.UNKNOWN.
      Specified by:
      restartInstancesById in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instanceIds - the instances to restart
    • deprovisionInstances

      public void deprovisionInstances(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull List<Instance> instances)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified instances provisioned for the specified requirement and reduce the requirement's instance count accordingly. YellowDog Compute will not attempt to deprovision instances that are already InstanceStatus.TERMINATING.
      Specified by:
      deprovisionInstances in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instances - the instances to deprovision
    • deprovisionInstancesById

      public void deprovisionInstancesById(ComputeRequirement computeRequirement, List<InstanceId> instanceIds)
      Description copied from interface: ComputeClient
      Instructs YellowDog Compute to terminate the specified instances provisioned for the specified requirement and reduce the requirement's instance count accordingly. YellowDog Compute will not attempt to deprovision instances that are already InstanceStatus.TERMINATING.
      Specified by:
      deprovisionInstancesById in interface ComputeClient
      Parameters:
      computeRequirement - the requirement containing the instances
      instanceIds - the ids of instances to deprovision
    • isComputeRequirementUpdating

      public boolean isComputeRequirementUpdating(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Checks the current busy state of the specified requirement, returning true if the requirement is being updated by YellowDog Compute; otherwise, false.
      Specified by:
      isComputeRequirementUpdating in interface ComputeClient
      Parameters:
      computeRequirement - the requirement to check
      Returns:
      true, if the requirement is being updated by YellowDog Compute; otherwise, false
    • isComputeRequirementUpdating

      public boolean isComputeRequirementUpdating(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Checks the current busy state of the specified requirement, returning true if the requirement is being updated by YellowDog Compute; otherwise, false.
      Specified by:
      isComputeRequirementUpdating in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement to check
      Returns:
      true, if the requirement is being updated by YellowDog Compute; otherwise, false
    • addComputeRequirementListener

      public void addComputeRequirementListener(@NonNull @NonNull ComputeRequirement computeRequirement, @NonNull @NonNull SubscriptionEventListener<ComputeRequirement> listener)
      Description copied from interface: ComputeClient
      Adds an event listener to receive notifications of changes for the specified requirement. The client manages subscriptions to YellowDog Compute such that the first listener created for a requirement will cause a Server-Sent Events subscription to be initiated; additional listeners for the same requirement share that subscription.
      Specified by:
      addComputeRequirementListener in interface ComputeClient
      Parameters:
      computeRequirement - the requirement for which to receive notifications
      listener - the event listener that will be invoked for notifications
    • addComputeRequirementListener

      public void addComputeRequirementListener(@NonNull @NonNull String computeRequirementId, @NonNull @NonNull SubscriptionEventListener<ComputeRequirement> listener)
      Description copied from interface: ComputeClient
      Adds an event listener to receive notifications of changes for the specified requirement. The client manages subscriptions to YellowDog Compute such that the first listener created for a requirement will cause a Server-Sent Events subscription to be initiated; additional listeners for the same requirement share that subscription.
      Specified by:
      addComputeRequirementListener in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the requirement for which to receive notifications
      listener - the event listener that will be invoked for notifications
    • removeComputeRequirementListener

      public void removeComputeRequirementListener(@NonNull @NonNull SubscriptionEventListener<ComputeRequirement> listener)
      Description copied from interface: ComputeClient
      Removes the specified event listener. The client manages subscriptions to YellowDog Compute such that when the last listener for a requirement is removed, the associated Server-Sent Events subscription is cancelled.
      Specified by:
      removeComputeRequirementListener in interface ComputeClient
      Parameters:
      listener - the event listener that will no longer be invoked for notifications
    • getComputeRequirementHelper

      public ComputeRequirementHelper getComputeRequirementHelper(@NonNull @NonNull ComputeRequirement computeRequirement)
      Description copied from interface: ComputeClient
      Constructs a new compute requirement helper for the specified requirement.
      Specified by:
      getComputeRequirementHelper in interface ComputeClient
      Parameters:
      computeRequirement - the compute requirement for which the helper will be constructed
      Returns:
      a new compute requirement helper
    • getComputeRequirementHelper

      public ComputeRequirementHelper getComputeRequirementHelper(@NonNull @NonNull String computeRequirementId)
      Description copied from interface: ComputeClient
      Constructs a new compute requirement helper for the specified requirement.
      Specified by:
      getComputeRequirementHelper in interface ComputeClient
      Parameters:
      computeRequirementId - the ID of the compute requirement for which the helper will be constructed
      Returns:
      a new compute requirement helper
    • getComputeRequirements

      public SearchClient<ComputeRequirement> getComputeRequirements(@NonNull @NonNull ComputeRequirementSearch computeRequirementSearch)
      Description copied from interface: ComputeClient
      Returns a search client for searching compute requirements.
      Specified by:
      getComputeRequirements in interface ComputeClient
      Parameters:
      computeRequirementSearch - the search criteria
      Returns:
      a search client for searching compute requirements
    • getComputeRequirementSummaries

      public SearchClient<ComputeRequirementSummary> getComputeRequirementSummaries(@NonNull @NonNull ComputeRequirementSummarySearch computeRequirementSummarySearch)
      Specified by:
      getComputeRequirementSummaries in interface ComputeClient
    • addComputeSourceTemplate

      public ComputeSourceTemplate addComputeSourceTemplate(@NonNull @NonNull ComputeSourceTemplate computeSourceTemplate)
      Specified by:
      addComputeSourceTemplate in interface ComputeClient
    • updateComputeSourceTemplate

      public ComputeSourceTemplate updateComputeSourceTemplate(@NonNull @NonNull ComputeSourceTemplate computeSourceTemplate)
      Specified by:
      updateComputeSourceTemplate in interface ComputeClient
    • deleteComputeSourceTemplate

      public void deleteComputeSourceTemplate(@NonNull @NonNull ComputeSourceTemplate computeSourceTemplate)
      Specified by:
      deleteComputeSourceTemplate in interface ComputeClient
    • deleteComputeSourceTemplate

      public void deleteComputeSourceTemplate(@NonNull @NonNull String computeSourceTemplateId)
      Specified by:
      deleteComputeSourceTemplate in interface ComputeClient
    • getComputeSourceTemplate

      public ComputeSourceTemplate getComputeSourceTemplate(@NonNull @NonNull String computeSourceTemplateId)
      Specified by:
      getComputeSourceTemplate in interface ComputeClient
    • findAllComputeSourceTemplates

      public List<ComputeSourceTemplateSummary> findAllComputeSourceTemplates()
      Specified by:
      findAllComputeSourceTemplates in interface ComputeClient
    • addComputeRequirementTemplate

      public ComputeRequirementTemplate addComputeRequirementTemplate(@NonNull @NonNull ComputeRequirementTemplate computeRequirementTemplate)
      Specified by:
      addComputeRequirementTemplate in interface ComputeClient
    • updateComputeRequirementTemplate

      public ComputeRequirementTemplate updateComputeRequirementTemplate(@NonNull @NonNull ComputeRequirementTemplate computeRequirementTemplate)
      Specified by:
      updateComputeRequirementTemplate in interface ComputeClient
    • deleteComputeRequirementTemplate

      public void deleteComputeRequirementTemplate(@NonNull @NonNull ComputeRequirementTemplate computeRequirementTemplate)
      Specified by:
      deleteComputeRequirementTemplate in interface ComputeClient
    • deleteComputeRequirementTemplate

      public void deleteComputeRequirementTemplate(@NonNull @NonNull String computeRequirementTemplateId)
      Specified by:
      deleteComputeRequirementTemplate in interface ComputeClient
    • getComputeRequirementTemplate

      public ComputeRequirementTemplate getComputeRequirementTemplate(@NonNull @NonNull String computeRequirementTemplateId)
      Specified by:
      getComputeRequirementTemplate in interface ComputeClient
    • getComputeRequirementTemplate

      public ComputeRequirementTemplate getComputeRequirementTemplate(@NonNull @NonNull String namespace, @NonNull @NonNull String name)
      Specified by:
      getComputeRequirementTemplate in interface ComputeClient
    • findAllComputeRequirementTemplates

      public List<ComputeRequirementTemplateSummary> findAllComputeRequirementTemplates()
      Description copied from interface: ComputeClient
      Returns summaries of all existing compute requirement templates within the system for the requesting user.
      Specified by:
      findAllComputeRequirementTemplates in interface ComputeClient
      Returns:
      a list of compute requirement template summaries
    • provisionComputeRequirementTemplate

      public ComputeRequirement provisionComputeRequirementTemplate(@NonNull @NonNull ComputeRequirementTemplateUsage computeRequirementTemplateUsage)
      Description copied from interface: ComputeClient
      Provisions a new compute requirement based on the specified template and requirement properties.
      Specified by:
      provisionComputeRequirementTemplate in interface ComputeClient
      Parameters:
      computeRequirementTemplateUsage - An object defining the template ID and requirement properties
      Returns:
      the provisioned compute requirement
    • testComputeRequirementTemplate

      public ComputeRequirementTemplateTestResult testComputeRequirementTemplate(@NonNull @NonNull ComputeRequirementTemplateUsage computeRequirementTemplateUsage)
      Description copied from interface: ComputeClient
      Generates a new compute requirement based on the specified template and requirement properties. Includes other related information such as a BestComputeSourceReport if relevant.
      Specified by:
      testComputeRequirementTemplate in interface ComputeClient
      Parameters:
      computeRequirementTemplateUsage - An object defining the template ID and requirement properties
      Returns:
      the template test result
    • getBestComputeSourceReportByComputeRequirement

      public BestComputeSourceReport getBestComputeSourceReportByComputeRequirement(@NonNull @NonNull String provisionedComputeRequirementId)
      Description copied from interface: ComputeClient
      Gets the provision report for a compute requirement provisioned from a dynamic template.
      Specified by:
      getBestComputeSourceReportByComputeRequirement in interface ComputeClient
      Parameters:
      provisionedComputeRequirementId - the ID of the provisioned compute requirement
      Returns:
      the provision report for a compute requirement provisioned from a dynamic template
    • close

      public void close()
      Cancels any active Server-Sent Event subscriptions.
      Specified by:
      close in interface AutoCloseable