controllers/script/chain/execute_script.go (31 lines of code) (raw):
package chain
import (
"context"
"fmt"
ctrl "sigs.k8s.io/controller-runtime"
nexusApi "github.com/epam/edp-nexus-operator/api/v1alpha1"
"github.com/epam/edp-nexus-operator/pkg/client/nexus"
)
type ExecuteScript struct {
nexusScriptApiClient nexus.Script
}
func NewExecuteScript(nexusScriptApiClient nexus.Script) *ExecuteScript {
return &ExecuteScript{nexusScriptApiClient: nexusScriptApiClient}
}
func (c *ExecuteScript) ServeRequest(ctx context.Context, script *nexusApi.NexusScript) error {
log := ctrl.LoggerFrom(ctx).WithValues("script_name", script.Spec.Name)
if !script.Spec.Execute {
log.Info("Script execution is disabled")
return nil
}
if script.Status.Executed {
log.Info("Script has been already executed")
return nil
}
if err := c.nexusScriptApiClient.RunWithPayload(script.Spec.Name, script.Spec.Payload); err != nil {
return fmt.Errorf("failed to executed script: %w", err)
}
script.Status.Executed = true
log.Info("Script has been executed")
return nil
}