github.com/xgoffin/jenkins-library@v1.154.0/cmd/abapAddonAssemblyKitPublishTargetVector.go (about)

     1  package cmd
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/SAP/jenkins-library/pkg/abap/aakaas"
     7  	abapbuild "github.com/SAP/jenkins-library/pkg/abap/build"
     8  	"github.com/SAP/jenkins-library/pkg/abaputils"
     9  	"github.com/SAP/jenkins-library/pkg/log"
    10  	"github.com/SAP/jenkins-library/pkg/telemetry"
    11  	"github.com/pkg/errors"
    12  )
    13  
    14  func abapAddonAssemblyKitPublishTargetVector(config abapAddonAssemblyKitPublishTargetVectorOptions, telemetryData *telemetry.CustomData) {
    15  	utils := aakaas.NewAakBundleWithTime(time.Duration(config.MaxRuntimeInMinutes), time.Duration(config.PollingIntervalInSeconds))
    16  
    17  	// error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end
    18  	if err := runAbapAddonAssemblyKitPublishTargetVector(&config, telemetryData, &utils); err != nil {
    19  		log.Entry().WithError(err).Fatal("step execution failed")
    20  	}
    21  }
    22  
    23  func runAbapAddonAssemblyKitPublishTargetVector(config *abapAddonAssemblyKitPublishTargetVectorOptions, telemetryData *telemetry.CustomData, utils *aakaas.AakUtils) error {
    24  
    25  	conn := new(abapbuild.Connector)
    26  	if err := conn.InitAAKaaS(config.AbapAddonAssemblyKitEndpoint, config.Username, config.Password, *utils); err != nil {
    27  		return err
    28  	}
    29  	conn.MaxRuntime = (*utils).GetMaxRuntime()
    30  	conn.PollingInterval = (*utils).GetPollingInterval()
    31  
    32  	addonDescriptor := new(abaputils.AddonDescriptor)
    33  	if err := addonDescriptor.InitFromJSONstring(config.AddonDescriptor); err != nil {
    34  		return errors.Wrap(err, "Reading AddonDescriptor failed [Make sure abapAddonAssemblyKit...CheckCVs|CheckPV steps have been run before]")
    35  	}
    36  
    37  	if addonDescriptor.TargetVectorID == "" {
    38  		return errors.New("Parameter missing. Please provide the target vector id (e.g. by running step abapAddonAssemblyKitCreateTargetVector beforehand")
    39  	}
    40  	targetVector := new(aakaas.TargetVector)
    41  	targetVector.InitExisting(addonDescriptor.TargetVectorID)
    42  
    43  	switch config.TargetVectorScope {
    44  	case string(aakaas.TargetVectorStatusTest):
    45  		log.Entry().Infof("Publish target vector %s for test use", addonDescriptor.TargetVectorID)
    46  	case string(aakaas.TargetVectorStatusProductive):
    47  		log.Entry().Infof("Publish target vector %s for productive use", addonDescriptor.TargetVectorID)
    48  	default:
    49  		return errors.New("Invalid Value of configuration Parameter TargetVectorScope: " + config.TargetVectorScope)
    50  	}
    51  
    52  	if err := targetVector.PublishTargetVector(conn, aakaas.TargetVectorStatus(config.TargetVectorScope)); err != nil {
    53  		return err
    54  	}
    55  
    56  	log.Entry().Info("Waiting for target vector publishing to finish")
    57  	if err := targetVector.PollForStatus(conn, aakaas.TargetVectorStatus(config.TargetVectorScope)); err != nil {
    58  		return err
    59  	}
    60  
    61  	log.Entry().Info("Success: Publishing finished")
    62  	return nil
    63  }