From 1b9fdd7ef2d1ac05966166f78868b430babb9940 Mon Sep 17 00:00:00 2001 From: kripanshdevtron Date: Sun, 31 Jul 2022 22:47:14 +0530 Subject: [PATCH 1/3] docker preset container registry --- Wire.go | 4 ++- api/RestHandler.go | 7 ++++++ api/Router.go | 1 + common/PresetDockerRegistryConfig.go | 32 ++++++++++++++++++++++++ common/bean.go | 15 +++++++++++ pkg/PresetDockerRegistryConfigService.go | 30 ++++++++++++++++++++++ 6 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 common/PresetDockerRegistryConfig.go create mode 100644 pkg/PresetDockerRegistryConfigService.go diff --git a/Wire.go b/Wire.go index 2dcfed7..68ea9cb 100644 --- a/Wire.go +++ b/Wire.go @@ -1,4 +1,5 @@ -//+build wireinject +//go:build wireinject +// +build wireinject package main @@ -25,6 +26,7 @@ func InitializeApp() (*App, error) { pkg.NewWebhookSecretValidatorImpl, wire.Bind(new(pkg.WebhookSecretValidator), new(*pkg.WebhookSecretValidatorImpl)), util.NewModuleConfig, + pkg.NewReleaseNoteServiceImpl, ) return &App{}, nil } diff --git a/api/RestHandler.go b/api/RestHandler.go index 963c043..c8311e2 100644 --- a/api/RestHandler.go +++ b/api/RestHandler.go @@ -16,6 +16,7 @@ type RestHandler interface { GetReleases(w http.ResponseWriter, r *http.Request) ReleaseWebhookHandler(w http.ResponseWriter, r *http.Request) GetModules(w http.ResponseWriter, r *http.Request) + GetPresetContainerRegistry(w http.ResponseWriter, r *http.Request) } func NewRestHandlerImpl(logger *zap.SugaredLogger, releaseNoteService pkg.ReleaseNoteService, @@ -33,6 +34,7 @@ type RestHandlerImpl struct { releaseNoteService pkg.ReleaseNoteService webhookSecretValidator pkg.WebhookSecretValidator client *util.GitHubClient + dockerRegistryConfig pkg.PresetDockerRegistryConfigService } func setupResponse(w *http.ResponseWriter, req *http.Request) { @@ -158,3 +160,8 @@ func (impl *RestHandlerImpl) ReleaseWebhookHandler(w http.ResponseWriter, r *htt impl.WriteJsonResp(w, err, flag, http.StatusOK) return } + +func (impl *RestHandlerImpl) GetPresetContainerRegistry(w http.ResponseWriter, r *http.Request) { + dockerRegistryConfig := impl.dockerRegistryConfig.GetConfig() + impl.WriteJsonResp(w, nil, dockerRegistryConfig, http.StatusOK) +} diff --git a/api/Router.go b/api/Router.go index 7cf906c..6714935 100644 --- a/api/Router.go +++ b/api/Router.go @@ -38,5 +38,6 @@ func (r MuxRouter) Init() { r.Router.Path("/release/notes").HandlerFunc(r.restHandler.GetReleases).Methods("GET") r.Router.Path("/release/webhook").HandlerFunc(r.restHandler.ReleaseWebhookHandler).Methods("POST") r.Router.Path("/modules").HandlerFunc(r.restHandler.GetModules).Methods("GET") + r.Router.Path("/presetCR").HandlerFunc(r.restHandler.GetPresetContainerRegistry).Methods("GET") } diff --git a/common/PresetDockerRegistryConfig.go b/common/PresetDockerRegistryConfig.go new file mode 100644 index 0000000..cd14777 --- /dev/null +++ b/common/PresetDockerRegistryConfig.go @@ -0,0 +1,32 @@ +package common + +import ( + "github.com/caarlos0/env" + "go.uber.org/zap" +) + +type PresetDockerRegistryConfig struct { + PluginId string `env:"DOCKER_REGISTRY_PLUGIN_ID" envDefault:""` + RegistryURL string `env:"DOCKER_REGISTRY_URL" envDefault:""` + RegistryType string `env:"DOCKER_REGISTRY_TYPE" envDefault:""` + AWSAccessKeyId string `env:"DOCKER_REGISTRY_AWS_ACCESS_KEY" envDefault:""` + AWSSecretAccessKey string `env:"DOCKER_REGISTRY_AWS_SECRET_KEY" envDefault:""` + AWSRegion string `env:"DOCKER_REGISTRY_AWS_REGION" envDefault:""` + Username string `env:"DOCKER_REGISTRY_USERNAME" envDefault:""` + Password string `env:"DOCKER_REGISTRY_PASSWORD" envDefault:""` + IsDefault bool `env:"DOCKER_REGISTRY_IS_DEFAULT" envDefault:""` + Connection string `env:"DOCKER_REGISTRY_CONNECTION" envDefault:""` + Cert string `env:"DOCKER_REGISTRY_CERT" envDefault:""` + Active bool `env:"DOCKER_REGISTRY_ACTIVE" envDefault:""` +} + +func NewPresetDockerRegistryConfig(logger *zap.SugaredLogger) (*PresetDockerRegistryConfig, error) { + + cfg := &PresetDockerRegistryConfig{} + err := env.Parse(cfg) + if err != nil { + logger.Errorw("error on parsing docker preset container registry config", "err", err) + return &PresetDockerRegistryConfig{}, err + } + return cfg, nil +} diff --git a/common/bean.go b/common/bean.go index 2f92e34..63ef844 100644 --- a/common/bean.go +++ b/common/bean.go @@ -42,3 +42,18 @@ type Module struct { Icon string `json:"icon"` Info string `json:"info"` } + +type DockerRegistry struct { + PluginId string `json:"pluginId,omitempty"` + RegistryURL string `json:"registryUrl,omitempty"` + RegistryType string `json:"registryType,omitempty"` + AWSAccessKeyId string `json:"awsAccessKeyId,omitempty" ` + AWSSecretAccessKey string `json:"awsSecretAccessKey,omitempty"` + AWSRegion string `json:"awsRegion,omitempty"` + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + IsDefault bool `json:"isDefault"` + Connection string `json:"connection,omitempty"` + Cert string `json:"cert,omitempty"` + Active bool `json:"active"` +} diff --git a/pkg/PresetDockerRegistryConfigService.go b/pkg/PresetDockerRegistryConfigService.go new file mode 100644 index 0000000..fe30340 --- /dev/null +++ b/pkg/PresetDockerRegistryConfigService.go @@ -0,0 +1,30 @@ +package pkg + +import ( + "github.com/devtron-labs/central-api/common" +) + +type PresetDockerRegistryConfigService interface { + GetConfig() *common.DockerRegistry +} + +type PresetDockerRegistryConfigServiceImpl struct { + config common.PresetDockerRegistryConfig +} + +func (configService *PresetDockerRegistryConfigServiceImpl) GetConfig() *common.DockerRegistry { + return &common.DockerRegistry{ + PluginId: configService.config.PluginId, + RegistryURL: configService.config.RegistryURL, + RegistryType: configService.config.RegistryType, + AWSAccessKeyId: configService.config.AWSAccessKeyId, + AWSSecretAccessKey: configService.config.AWSSecretAccessKey, + AWSRegion: configService.config.AWSRegion, + Username: configService.config.Username, + Password: configService.config.Password, + IsDefault: configService.config.IsDefault, + Connection: configService.config.Connection, + Cert: configService.config.Cert, + Active: configService.config.Active, + } +} From ad39005880cd13b81daa097f28377826cf2e1b53 Mon Sep 17 00:00:00 2001 From: kripanshdevtron Date: Tue, 2 Aug 2022 18:05:02 +0530 Subject: [PATCH 2/3] preset container default registry --- Wire.go | 3 ++- api/RestHandler.go | 4 +++- common/PresetDockerRegistryConfig.go | 16 ++++++++-------- pkg/PresetDockerRegistryConfigService.go | 11 ++++++++++- wire_gen.go | 8 +++++--- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Wire.go b/Wire.go index 68ea9cb..6cb4d72 100644 --- a/Wire.go +++ b/Wire.go @@ -26,7 +26,8 @@ func InitializeApp() (*App, error) { pkg.NewWebhookSecretValidatorImpl, wire.Bind(new(pkg.WebhookSecretValidator), new(*pkg.WebhookSecretValidatorImpl)), util.NewModuleConfig, - pkg.NewReleaseNoteServiceImpl, + pkg.NewPresetDockerRegistryConfigServiceImpl, + wire.Bind(new(pkg.PresetDockerRegistryConfigService), new(*pkg.PresetDockerRegistryConfigServiceImpl)), ) return &App{}, nil } diff --git a/api/RestHandler.go b/api/RestHandler.go index c8311e2..42a7691 100644 --- a/api/RestHandler.go +++ b/api/RestHandler.go @@ -20,12 +20,14 @@ type RestHandler interface { } func NewRestHandlerImpl(logger *zap.SugaredLogger, releaseNoteService pkg.ReleaseNoteService, - webhookSecretValidator pkg.WebhookSecretValidator, client *util.GitHubClient) *RestHandlerImpl { + webhookSecretValidator pkg.WebhookSecretValidator, client *util.GitHubClient, + dockerRegistryConfig pkg.PresetDockerRegistryConfigService) *RestHandlerImpl { return &RestHandlerImpl{ logger: logger, releaseNoteService: releaseNoteService, webhookSecretValidator: webhookSecretValidator, client: client, + dockerRegistryConfig: dockerRegistryConfig, } } diff --git a/common/PresetDockerRegistryConfig.go b/common/PresetDockerRegistryConfig.go index cd14777..e188c97 100644 --- a/common/PresetDockerRegistryConfig.go +++ b/common/PresetDockerRegistryConfig.go @@ -6,18 +6,18 @@ import ( ) type PresetDockerRegistryConfig struct { - PluginId string `env:"DOCKER_REGISTRY_PLUGIN_ID" envDefault:""` - RegistryURL string `env:"DOCKER_REGISTRY_URL" envDefault:""` - RegistryType string `env:"DOCKER_REGISTRY_TYPE" envDefault:""` + PluginId string `env:"DOCKER_REGISTRY_PLUGIN_ID" envDefault:"cd.go.artifact.docker.registry"` + RegistryURL string `env:"DOCKER_REGISTRY_URL" envDefault:"ttl.sh"` + RegistryType string `env:"DOCKER_REGISTRY_TYPE" envDefault:"other"` AWSAccessKeyId string `env:"DOCKER_REGISTRY_AWS_ACCESS_KEY" envDefault:""` AWSSecretAccessKey string `env:"DOCKER_REGISTRY_AWS_SECRET_KEY" envDefault:""` AWSRegion string `env:"DOCKER_REGISTRY_AWS_REGION" envDefault:""` - Username string `env:"DOCKER_REGISTRY_USERNAME" envDefault:""` - Password string `env:"DOCKER_REGISTRY_PASSWORD" envDefault:""` - IsDefault bool `env:"DOCKER_REGISTRY_IS_DEFAULT" envDefault:""` - Connection string `env:"DOCKER_REGISTRY_CONNECTION" envDefault:""` + Username string `env:"DOCKER_REGISTRY_USERNAME" envDefault:"a"` + Password string `env:"DOCKER_REGISTRY_PASSWORD" envDefault:"a"` + IsDefault bool `env:"DOCKER_REGISTRY_IS_DEFAULT" envDefault:"false"` + Connection string `env:"DOCKER_REGISTRY_CONNECTION" envDefault:"secure"` Cert string `env:"DOCKER_REGISTRY_CERT" envDefault:""` - Active bool `env:"DOCKER_REGISTRY_ACTIVE" envDefault:""` + Active bool `env:"DOCKER_REGISTRY_ACTIVE" envDefault:"true"` } func NewPresetDockerRegistryConfig(logger *zap.SugaredLogger) (*PresetDockerRegistryConfig, error) { diff --git a/pkg/PresetDockerRegistryConfigService.go b/pkg/PresetDockerRegistryConfigService.go index fe30340..52ed64c 100644 --- a/pkg/PresetDockerRegistryConfigService.go +++ b/pkg/PresetDockerRegistryConfigService.go @@ -2,6 +2,7 @@ package pkg import ( "github.com/devtron-labs/central-api/common" + "go.uber.org/zap" ) type PresetDockerRegistryConfigService interface { @@ -9,7 +10,15 @@ type PresetDockerRegistryConfigService interface { } type PresetDockerRegistryConfigServiceImpl struct { - config common.PresetDockerRegistryConfig + config *common.PresetDockerRegistryConfig +} + +func NewPresetDockerRegistryConfigServiceImpl(logger *zap.SugaredLogger) *PresetDockerRegistryConfigServiceImpl { + config, _ := common.NewPresetDockerRegistryConfig(logger) + + return &PresetDockerRegistryConfigServiceImpl{ + config: config, + } } func (configService *PresetDockerRegistryConfigServiceImpl) GetConfig() *common.DockerRegistry { diff --git a/wire_gen.go b/wire_gen.go index c6eb3b2..3f8fb07 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -1,7 +1,8 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate wire -//+build !wireinject +//go:generate go run github.com/google/wire/cmd/wire +//go:build !wireinject +// +build !wireinject package main @@ -27,7 +28,8 @@ func InitializeApp() (*App, error) { } releaseNoteServiceImpl := pkg.NewReleaseNoteServiceImpl(sugaredLogger, gitHubClient, releaseCache, moduleConfig) webhookSecretValidatorImpl := pkg.NewWebhookSecretValidatorImpl(sugaredLogger, gitHubClient) - restHandlerImpl := api.NewRestHandlerImpl(sugaredLogger, releaseNoteServiceImpl, webhookSecretValidatorImpl, gitHubClient) + presetDockerRegistryConfigServiceImpl := pkg.NewPresetDockerRegistryConfigServiceImpl(sugaredLogger) + restHandlerImpl := api.NewRestHandlerImpl(sugaredLogger, releaseNoteServiceImpl, webhookSecretValidatorImpl, gitHubClient, presetDockerRegistryConfigServiceImpl) muxRouter := api.NewMuxRouter(sugaredLogger, restHandlerImpl) app := NewApp(muxRouter, sugaredLogger) return app, nil From d312fc345e151677fafb4b539bed9c88737197c0 Mon Sep 17 00:00:00 2001 From: kripanshdevtron Date: Wed, 3 Aug 2022 13:17:37 +0530 Subject: [PATCH 3/3] presetRepoName and ExpiryTime added --- common/PresetDockerRegistryConfig.go | 26 +++++++++++++----------- common/bean.go | 2 ++ pkg/PresetDockerRegistryConfigService.go | 2 ++ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/common/PresetDockerRegistryConfig.go b/common/PresetDockerRegistryConfig.go index e188c97..1347870 100644 --- a/common/PresetDockerRegistryConfig.go +++ b/common/PresetDockerRegistryConfig.go @@ -6,18 +6,20 @@ import ( ) type PresetDockerRegistryConfig struct { - PluginId string `env:"DOCKER_REGISTRY_PLUGIN_ID" envDefault:"cd.go.artifact.docker.registry"` - RegistryURL string `env:"DOCKER_REGISTRY_URL" envDefault:"ttl.sh"` - RegistryType string `env:"DOCKER_REGISTRY_TYPE" envDefault:"other"` - AWSAccessKeyId string `env:"DOCKER_REGISTRY_AWS_ACCESS_KEY" envDefault:""` - AWSSecretAccessKey string `env:"DOCKER_REGISTRY_AWS_SECRET_KEY" envDefault:""` - AWSRegion string `env:"DOCKER_REGISTRY_AWS_REGION" envDefault:""` - Username string `env:"DOCKER_REGISTRY_USERNAME" envDefault:"a"` - Password string `env:"DOCKER_REGISTRY_PASSWORD" envDefault:"a"` - IsDefault bool `env:"DOCKER_REGISTRY_IS_DEFAULT" envDefault:"false"` - Connection string `env:"DOCKER_REGISTRY_CONNECTION" envDefault:"secure"` - Cert string `env:"DOCKER_REGISTRY_CERT" envDefault:""` - Active bool `env:"DOCKER_REGISTRY_ACTIVE" envDefault:"true"` + PluginId string `env:"PRESET_REGISTRY_PLUGIN_ID" envDefault:"cd.go.artifact.docker.registry"` + RegistryURL string `env:"PRESET_REGISTRY_URL" envDefault:"ttl.sh"` + RegistryType string `env:"PRESET_REGISTRY_TYPE" envDefault:"other"` + AWSAccessKeyId string `env:"PRESET_REGISTRY_AWS_ACCESS_KEY" envDefault:""` + AWSSecretAccessKey string `env:"PRESET_REGISTRY_AWS_SECRET_KEY" envDefault:""` + AWSRegion string `env:"PRESET_REGISTRY_AWS_REGION" envDefault:""` + Username string `env:"PRESET_REGISTRY_USERNAME" envDefault:"a"` + Password string `env:"PRESET_REGISTRY_PASSWORD" envDefault:"a"` + IsDefault bool `env:"PRESET_REGISTRY_IS_DEFAULT" envDefault:"false"` + Connection string `env:"PRESET_REGISTRY_CONNECTION" envDefault:"secure"` + Cert string `env:"PRESET_REGISTRY_CERT" envDefault:""` + Active bool `env:"PRESET_REGISTRY_ACTIVE" envDefault:"true"` + ExpiryTime int `env:"PRESET_REGISTRY_IMAGE_EXPIRY_TIME_SECs" envDefault:"86400"` + PresetRegistryRepoName string `env:"PRESET_REGISTRY_REPO_NAME" envDefault:"devtron-preset-registry-repo"` } func NewPresetDockerRegistryConfig(logger *zap.SugaredLogger) (*PresetDockerRegistryConfig, error) { diff --git a/common/bean.go b/common/bean.go index 63ef844..5a5be77 100644 --- a/common/bean.go +++ b/common/bean.go @@ -56,4 +56,6 @@ type DockerRegistry struct { Connection string `json:"connection,omitempty"` Cert string `json:"cert,omitempty"` Active bool `json:"active"` + PresetRepoName string `json:"presetRepoName"` + ExpiryTimeInSecs int `json:"expiryTimeInSecs"` } diff --git a/pkg/PresetDockerRegistryConfigService.go b/pkg/PresetDockerRegistryConfigService.go index 52ed64c..993599e 100644 --- a/pkg/PresetDockerRegistryConfigService.go +++ b/pkg/PresetDockerRegistryConfigService.go @@ -35,5 +35,7 @@ func (configService *PresetDockerRegistryConfigServiceImpl) GetConfig() *common. Connection: configService.config.Connection, Cert: configService.config.Cert, Active: configService.config.Active, + PresetRepoName: configService.config.PresetRegistryRepoName, + ExpiryTimeInSecs: configService.config.ExpiryTime, } }