github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/actor/v7action/process.go (about)

     1  package v7action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
     7  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
     8  )
     9  
    10  // Process represents a V3 actor process.
    11  type Process ccv3.Process
    12  
    13  func (actor Actor) GetProcess(processGUID string) (Process, Warnings, error) {
    14  	process, warnings, err := actor.CloudControllerClient.GetProcess(processGUID)
    15  
    16  	return Process(process), Warnings(warnings), err
    17  }
    18  
    19  // GetProcessByTypeAndApplication returns a process for the given application
    20  // and type.
    21  func (actor Actor) GetProcessByTypeAndApplication(processType string, appGUID string) (Process, Warnings, error) {
    22  	process, warnings, err := actor.CloudControllerClient.GetApplicationProcessByType(appGUID, processType)
    23  	if _, ok := err.(ccerror.ProcessNotFoundError); ok {
    24  		return Process{}, Warnings(warnings), actionerror.ProcessNotFoundError{ProcessType: processType}
    25  	}
    26  	return Process(process), Warnings(warnings), err
    27  }
    28  
    29  func (actor Actor) ScaleProcessByApplication(appGUID string, process Process) (Warnings, error) {
    30  	_, warnings, err := actor.CloudControllerClient.CreateApplicationProcessScale(appGUID, ccv3.Process(process))
    31  	allWarnings := Warnings(warnings)
    32  	if err != nil {
    33  		if _, ok := err.(ccerror.ProcessNotFoundError); ok {
    34  			return allWarnings, actionerror.ProcessNotFoundError{ProcessType: process.Type}
    35  		}
    36  		return allWarnings, err
    37  	}
    38  
    39  	return allWarnings, nil
    40  }
    41  
    42  func (actor Actor) UpdateProcessByTypeAndApplication(processType string, appGUID string, updatedProcess Process) (Warnings, error) {
    43  	if updatedProcess.HealthCheckType != constant.HTTP {
    44  		if updatedProcess.HealthCheckEndpoint != constant.ProcessHealthCheckEndpointDefault && updatedProcess.HealthCheckEndpoint != "" {
    45  			return nil, actionerror.HTTPHealthCheckInvalidError{}
    46  		}
    47  
    48  		updatedProcess.HealthCheckEndpoint = ""
    49  	}
    50  
    51  	process, warnings, err := actor.GetProcessByTypeAndApplication(processType, appGUID)
    52  	allWarnings := warnings
    53  	if err != nil {
    54  		return allWarnings, err
    55  	}
    56  
    57  	updatedProcess.GUID = process.GUID
    58  	_, updateWarnings, err := actor.CloudControllerClient.UpdateProcess(ccv3.Process(updatedProcess))
    59  	allWarnings = append(allWarnings, Warnings(updateWarnings)...)
    60  	if err != nil {
    61  		return allWarnings, err
    62  	}
    63  
    64  	return allWarnings, nil
    65  }