controllers/script/chain/create_script.go (45 lines of code) (raw):
package chain
import (
"context"
"fmt"
"github.com/datadrivers/go-nexus-client/nexus3/schema"
ctrl "sigs.k8s.io/controller-runtime"
nexusApi "github.com/epam/edp-nexus-operator/api/v1alpha1"
"github.com/epam/edp-nexus-operator/pkg/client/nexus"
)
const (
scriptTypeGroovy = "groovy"
)
type CreateScript struct {
nexusScriptApiClient nexus.Script
}
func NewCreateScript(nexusScriptApiClient nexus.Script) *CreateScript {
return &CreateScript{nexusScriptApiClient: nexusScriptApiClient}
}
func (c *CreateScript) ServeRequest(ctx context.Context, script *nexusApi.NexusScript) error {
log := ctrl.LoggerFrom(ctx).WithValues("script_name", script.Spec.Name)
log.Info("Start creating script")
_, getScriptErr := c.nexusScriptApiClient.Get(script.Spec.Name)
if getScriptErr != nil {
log.Info("Script doesn't exist, creating new one")
if err := c.nexusScriptApiClient.Create(specToScript(&script.Spec)); err != nil {
return fmt.Errorf("failed to create script: %w", err)
}
log.Info("Script has been created")
}
if getScriptErr == nil {
log.Info("Updating script")
if err := c.nexusScriptApiClient.Update(specToScript(&script.Spec)); err != nil {
return fmt.Errorf("failed to update script: %w", err)
}
log.Info("Script has been updated")
}
return nil
}
func specToScript(spec *nexusApi.NexusScriptSpec) *schema.Script {
return &schema.Script{
Name: spec.Name,
Type: scriptTypeGroovy,
Content: spec.Content,
}
}