Skip to content

Commit

Permalink
add get image source registry check
Browse files Browse the repository at this point in the history
Signed-off-by: Patrick Zhao <[email protected]>
  • Loading branch information
PetrusZ committed Jun 20, 2024
1 parent ae972ee commit f68ba86
Showing 1 changed file with 38 additions and 17 deletions.
55 changes: 38 additions & 17 deletions pkg/microservice/aslan/core/delivery/service/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -1698,6 +1698,18 @@ func CreateNewK8SDeliveryVersion(args *CreateK8SDeliveryVersionArgs, logger *zap
}
}

for _, yamlData := range args.YamlDatas {
for _, imageData := range yamlData.ImageDatas {
if !imageData.Selected {
continue
}
_, err := getImageSourceRegistry(imageData, registryMap)
if err != nil {
return fmt.Errorf("failed to check registry, err: %v", err)
}
}
}

productInfo.ID, _ = primitive.ObjectIDFromHex("")

workflowName := generateDeliveryWorkflowName(args.ProductName)
Expand Down Expand Up @@ -2228,24 +2240,11 @@ func generateCustomWorkflowFromDeliveryVersion(productInfo *commonmodels.Product
if !imageData.Selected {
continue
}
sourceImageTag := ""
registryURL := strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s", imageData.ImageName))
tmpArr := strings.Split(imageData.Image, ":")
if len(tmpArr) == 2 {
sourceImageTag = tmpArr[1]
registryURL = strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s:%s", imageData.ImageName, sourceImageTag))
} else if len(tmpArr) == 3 {
sourceImageTag = tmpArr[2]
registryURL = strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s:%s", imageData.ImageName, sourceImageTag))
} else if len(tmpArr) == 1 {
// no need to trim
} else {
return nil, fmt.Errorf("invalid image: %s", imageData.Image)
}
sourceRegistry, ok := registryMap[registryURL]
if !ok {
return nil, fmt.Errorf("can't find source registry for image: %s", imageData.Image)
sourceRegistry, err := getImageSourceRegistry(imageData, registryMap)
if err != nil {
return nil, fmt.Errorf("failed to check registry, err: %v", err)
}

if registryDatasMap[sourceRegistry] == nil {
registryDatasMap[sourceRegistry] = map[string][]*ImageData{yamlData.ServiceName: {}}
}
Expand Down Expand Up @@ -2333,6 +2332,28 @@ func generateCustomWorkflowFromDeliveryVersion(productInfo *commonmodels.Product
return resp, nil
}

func getImageSourceRegistry(imageData *ImageData, registryMap map[string]*commonmodels.RegistryNamespace) (*commonmodels.RegistryNamespace, error) {
sourceImageTag := ""
registryURL := strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s", imageData.ImageName))
tmpArr := strings.Split(imageData.Image, ":")
if len(tmpArr) == 2 {
sourceImageTag = tmpArr[1]
registryURL = strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s:%s", imageData.ImageName, sourceImageTag))
} else if len(tmpArr) == 3 {
sourceImageTag = tmpArr[2]
registryURL = strings.TrimSuffix(imageData.Image, fmt.Sprintf("/%s:%s", imageData.ImageName, sourceImageTag))
} else if len(tmpArr) == 1 {
// no need to trim
} else {
return nil, fmt.Errorf("invalid image: %s", imageData.Image)
}
sourceRegistry, ok := registryMap[registryURL]
if !ok {
return nil, fmt.Errorf("can't find source registry for image: %s", imageData.Image)
}
return sourceRegistry, nil
}

func generateDeliveryWorkflowName(productName string) string {
return fmt.Sprintf(deliveryVersionWorkflowV4NamingConvention, productName)
}

0 comments on commit f68ba86

Please sign in to comment.