Skip to content

Commit

Permalink
fix: inducing overridden DockerRegistryId in case docker registry is …
Browse files Browse the repository at this point in the history
…overridden (#4178)

* bug fix for fetching dockerRegistryId of docker config if ci pipeline is overriden

* nil pointer check
  • Loading branch information
prakash100198 committed Oct 30, 2023
1 parent 6770d82 commit 6822926
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 25 deletions.
64 changes: 41 additions & 23 deletions pkg/dockerRegistry/DockerRegistryIpsConfigService.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,20 @@ type DockerRegistryIpsConfigServiceImpl struct {
clusterService cluster.ClusterService
ciPipelineRepository pipelineConfig.CiPipelineRepository
dockerArtifactStoreRepository repository.DockerArtifactStoreRepository
ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository
}

func NewDockerRegistryIpsConfigServiceImpl(logger *zap.SugaredLogger, dockerRegistryIpsConfigRepository repository.DockerRegistryIpsConfigRepository,
k8sUtil *k8s.K8sUtil, clusterService cluster.ClusterService, ciPipelineRepository pipelineConfig.CiPipelineRepository,
dockerArtifactStoreRepository repository.DockerArtifactStoreRepository) *DockerRegistryIpsConfigServiceImpl {
dockerArtifactStoreRepository repository.DockerArtifactStoreRepository, ciTemplateOverrideRepository pipelineConfig.CiTemplateOverrideRepository) *DockerRegistryIpsConfigServiceImpl {
return &DockerRegistryIpsConfigServiceImpl{
logger: logger,
dockerRegistryIpsConfigRepository: dockerRegistryIpsConfigRepository,
k8sUtil: k8sUtil,
clusterService: clusterService,
ciPipelineRepository: ciPipelineRepository,
dockerArtifactStoreRepository: dockerArtifactStoreRepository,
ciTemplateOverrideRepository: ciTemplateOverrideRepository,
}
}

Expand Down Expand Up @@ -83,29 +85,11 @@ func (impl DockerRegistryIpsConfigServiceImpl) HandleImagePullSecretOnApplicatio
return valuesFileContent, nil
}

ciPipeline, err := impl.ciPipelineRepository.FindById(ciPipelineId)
dockerRegistryId, err := impl.getDockerRegistryIdForCiPipeline(ciPipelineId)
if err != nil {
impl.logger.Errorw("error in fetching ciPipeline", "ciPipelineId", ciPipelineId, "error", err)
if err == pg.ErrNoRows {
return valuesFileContent, nil
} else {
return nil, err
}
}

if ciPipeline.IsExternal && ciPipeline.ParentCiPipeline == 0 {
impl.logger.Warn("Ignoring for external ci")
return valuesFileContent, nil
}

if ciPipeline.CiTemplate == nil {
impl.logger.Warn("returning as ciPipeline.CiTemplate is found nil")
return valuesFileContent, nil
}

dockerRegistryId := ciPipeline.CiTemplate.DockerRegistryId
if len(*dockerRegistryId) == 0 {
impl.logger.Warn("returning as dockerRegistryId is found empty")
impl.logger.Errorw("error in getting docker registry", "dockerRegistryId", dockerRegistryId, "error", err)
return valuesFileContent, err
} else if dockerRegistryId == nil {
return valuesFileContent, nil
}

Expand Down Expand Up @@ -154,6 +138,40 @@ func (impl DockerRegistryIpsConfigServiceImpl) HandleImagePullSecretOnApplicatio
return updatedValuesFileContent, nil
}

func (impl DockerRegistryIpsConfigServiceImpl) getDockerRegistryIdForCiPipeline(ciPipelineId int) (*string, error) {
ciPipeline, err := impl.ciPipelineRepository.FindById(ciPipelineId)
if err != nil {
impl.logger.Errorw("error in fetching ciPipeline", "ciPipelineId", ciPipelineId, "error", err)
return nil, err
}

if ciPipeline.IsExternal && ciPipeline.ParentCiPipeline == 0 {
impl.logger.Warn("Ignoring for external ci")
return nil, nil
}

if ciPipeline.CiTemplate == nil {
impl.logger.Warn("returning as ciPipeline.CiTemplate is found nil")
return nil, nil
}

dockerRegistryId := ciPipeline.CiTemplate.DockerRegistryId
if dockerRegistryId != nil && len(*dockerRegistryId) == 0 {
impl.logger.Warn("returning as dockerRegistryId is found empty")
return nil, nil
}

if ciPipeline.IsDockerConfigOverridden {
//set dockerRegistryId value with the DockerRegistryId of the overridden dockerRegistry
ciTemplateOverride, err := impl.ciTemplateOverrideRepository.FindByCiPipelineId(ciPipelineId)
if err != nil {
impl.logger.Errorw("error in getting ciTemplateOverride by ciPipelineId", "ciPipelineId", ciPipelineId, "error", err)
return nil, err
}
dockerRegistryId = &ciTemplateOverride.DockerRegistryId
}
return dockerRegistryId, nil
}
func (impl DockerRegistryIpsConfigServiceImpl) createOrUpdateDockerRegistryImagePullSecret(clusterId int, namespace string, ipsName string, dockerRegistryBean *repository.DockerArtifactStore) error {
impl.logger.Infow("creating/updating ips", "ipsName", ipsName, "clusterId", clusterId)

Expand Down
4 changes: 2 additions & 2 deletions wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6822926

Please sign in to comment.