Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stub provider service #473

Merged
merged 15 commits into from
Feb 13, 2025
12 changes: 12 additions & 0 deletions common/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
include ../common.mk

help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

##@ Development

fmt: ## Run go fmt against code.
go fmt ./...

vet: ## Run go vet against code.
go vet ./...
3 changes: 3 additions & 0 deletions common/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module github.com/sky-uk/kfp-operator/common

go 1.22.11
99 changes: 99 additions & 0 deletions common/testutil/provider/provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package provider

import (
"fmt"
)

const (
CreatePipelineSucceeded = "create-pipeline-succeeded"
CreatePipelineFail = "create-pipeline-fail"
UpdatePipelineSucceeded = "update-pipeline-succeeded"
UpdatePipelineFail = "update-pipeline-fail"
DeletePipelineFail = "create-pipeline-fail"

CreateRunSucceeded = "create-run-succeeded"
CreateRunFail = "create-run-fail"
DeleteRunFail = "delete-run-fail"

CreateRunScheduleSucceeded = "create-runschedule-succeeded"
CreateRunScheduleFail = "create-runschedule-fail"
UpdateRunScheduleSucceeded = "update-runschedule-succeeded"
UpdateRunScheduleFail = "update-runschedule-fail"
DeleteRunScheduledFail = "delete-runschedule-fail"

CreateExperimentSucceeded = "create-experiment-succeeded"
CreateExperimentFail = "create-experiment-fail"
UpdateExperimentSucceeded = "update-experiment-succeeded"
UpdateExperimentFail = "update-experiment-fail"
DeleteExperimentFail = "delete-experiment-fail"
)

func mkErrStr(action string, resourceType string) string {
return fmt.Sprintf("%s %s failed", action, resourceType)
}

type CreatePipelineError struct{}

func (*CreatePipelineError) Error() string {
return mkErrStr("create", "pipeline")
}

type UpdatePipelineError struct{}

func (*UpdatePipelineError) Error() string {
return mkErrStr("update", "pipeline")
}

type DeletePipelineError struct{}

func (*DeletePipelineError) Error() string {
return mkErrStr("delete", "pipeline")
}

type CreateRunError struct{}

func (*CreateRunError) Error() string {
return mkErrStr("create", "run")
}

type DeleteRunError struct{}

func (*DeleteRunError) Error() string {
return mkErrStr("delete", "run")
}

type CreateRunScheduleError struct{}

func (*CreateRunScheduleError) Error() string {
return mkErrStr("create", "runschedule")
}

type UpdateRunScheduleError struct{}

func (*UpdateRunScheduleError) Error() string {
return mkErrStr("update", "runschedule")
}

type DeleteRunScheduleError struct{}

func (*DeleteRunScheduleError) Error() string {
return mkErrStr("delete", "runschedule")
}

type CreateExperimentError struct{}

func (*CreateExperimentError) Error() string {
return mkErrStr("create", "experiment")
}

type UpdateExperimentError struct{}

func (*UpdateExperimentError) Error() string {
return mkErrStr("update", "experiment")
}

type DeleteExperimentError struct{}

func (*DeleteExperimentError) Error() string {
return mkErrStr("delete", "experiment")
}
1 change: 1 addition & 0 deletions go.work
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ use (
.
./argo/common
./argo/providers
./common
)
5 changes: 5 additions & 0 deletions provider-service/stub/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM gcr.io/distroless/static-debian12:nonroot

COPY bin/stub-provider-service /bin/stub-provider-service

CMD ["/bin/stub-provider-service"]
22 changes: 22 additions & 0 deletions provider-service/stub/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
include ../../common.mk
include ../../docker-targets.mk

help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

IMG := kfp-operator-stub-provider-service

all: build

##@ Development

fmt: ## Run go fmt against code.
go fmt ./...

vet: ## Run go vet against code.
go vet ./...

##@ Build

build: ## Build stub provider service binary
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o bin/stub-provider-service cmd/main.go
41 changes: 41 additions & 0 deletions provider-service/stub/cmd/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package main

import (
"context"

"github.com/go-logr/logr"
"github.com/sky-uk/kfp-operator/argo/common"
baseConfig "github.com/sky-uk/kfp-operator/provider-service/base/pkg/config"
"github.com/sky-uk/kfp-operator/provider-service/base/pkg/server"
"github.com/sky-uk/kfp-operator/provider-service/stub/internal/config"
"github.com/sky-uk/kfp-operator/provider-service/stub/internal/provider"
"go.uber.org/zap/zapcore"
)

func main() {
logger, err := common.NewLogger(zapcore.InfoLevel)
if err != nil {
panic(err)
}

ctx := logr.NewContext(context.Background(), logger)
provider := provider.New(logger)
cfg, err := baseConfig.LoadConfig(
config.Config{
Server: baseConfig.Server{
Host: "0.0.0.0",
Port: 8080,
},
},
)
if err != nil {
panic(err)
}

if err = server.Start(ctx, cfg.Server, provider); err != nil {
panic(err)
}

<-ctx.Done()
logger.Info("Main context is cancelled. Terminating application...")
}
95 changes: 95 additions & 0 deletions provider-service/stub/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
module github.com/sky-uk/kfp-operator/provider-service/stub

go 1.22.11

require (
github.com/go-logr/logr v1.4.1
github.com/sky-uk/kfp-operator/argo/common v0.0.0-20250206144534-40d416150c6b
github.com/sky-uk/kfp-operator/common v0.0.0-00010101000000-000000000000
github.com/sky-uk/kfp-operator/provider-service/base v0.0.0-00010101000000-000000000000
go.uber.org/zap v1.24.0
)

replace (
github.com/sky-uk/kfp-operator => ../..
github.com/sky-uk/kfp-operator/common => ../../common
github.com/sky-uk/kfp-operator/provider-argo/common => ../../argo/common
github.com/sky-uk/kfp-operator/provider-service/base => ../base
)

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/docker/distribution v2.7.1+incompatible // indirect
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/go-chi/chi/v5 v5.2.0 // indirect
github.com/go-logr/zapr v1.2.4 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.1 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.15 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.15.1 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sky-uk/kfp-operator v0.6.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.19.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/thanhpk/randstr v1.0.4 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
golang.org/x/net v0.27.0 // indirect
golang.org/x/oauth2 v0.20.0 // indirect
golang.org/x/sys v0.22.0 // indirect
golang.org/x/term v0.22.0 // indirect
golang.org/x/text v0.16.0 // indirect
golang.org/x/time v0.6.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.27.2 // indirect
k8s.io/apiextensions-apiserver v0.27.2 // indirect
k8s.io/apimachinery v0.27.2 // indirect
k8s.io/client-go v0.27.2 // indirect
k8s.io/component-base v0.27.2 // indirect
k8s.io/klog/v2 v2.90.1 // indirect
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
sigs.k8s.io/controller-runtime v0.15.0 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)
Loading