fix: [CDE-473]: Checking default containerUser from the image. (#3105)

* fix: [CDE-473]: Checking default containerUser from the image.
pull/3597/head
Dhruv Dhruv 2024-12-04 07:24:22 +00:00 committed by Harness
parent aea3067a06
commit ccf7673ee5
3 changed files with 13 additions and 8 deletions

View File

@ -309,21 +309,25 @@ func GetContainerInfo(
return inspectResp.ID, usedPorts, remoteUser, nil
}
func ExtractMetadataFromImage(
func ExtractMetadataAndUserFromImage(
ctx context.Context,
imageName string,
dockerClient *client.Client,
) (map[string]any, error) {
) (map[string]any, string, error) {
imageInspect, _, err := dockerClient.ImageInspectWithRaw(ctx, imageName)
if err != nil {
return nil, fmt.Errorf("error while inspecting image: %w", err)
return nil, "", fmt.Errorf("error while inspecting image: %w", err)
}
imageUser := imageInspect.Config.User
if imageUser == "" {
imageUser = "root"
}
metadataMap := map[string]any{}
if metadata, ok := imageInspect.Config.Labels["devcontainer.metadata"]; ok {
dst := []map[string]any{}
unmarshalErr := json.Unmarshal([]byte(metadata), &dst)
if unmarshalErr != nil {
return nil, fmt.Errorf("error while unmarshalling metadata: %w", err)
return nil, imageUser, fmt.Errorf("error while unmarshalling metadata: %w", err)
}
for _, values := range dst {
for k, v := range values {
@ -331,7 +335,7 @@ func ExtractMetadataFromImage(
}
}
}
return metadataMap, nil
return metadataMap, imageUser, nil
}
func PullImage(

View File

@ -396,7 +396,7 @@ func (e *EmbeddedDockerOrchestrator) runGitspaceSetupSteps(
return err
}
metadataFromImage, err := ExtractMetadataFromImage(ctx, imageName, dockerClient)
metadataFromImage, imageUser, err := ExtractMetadataAndUserFromImage(ctx, imageName, dockerClient)
if err != nil {
return err
}
@ -419,7 +419,7 @@ func (e *EmbeddedDockerOrchestrator) runGitspaceSetupSteps(
gitspaceLogger.Info(fmt.Sprintf("Setting Environment : %v", environment))
}
containerUser := GetContainerUser(runArgsMap, devcontainerConfig, metadataFromImage)
containerUser := GetContainerUser(runArgsMap, devcontainerConfig, metadataFromImage, imageUser)
remoteUser := GetRemoteUser(devcontainerConfig, metadataFromImage, containerUser)
homeDir := GetUserHomeDir(remoteUser)

View File

@ -51,6 +51,7 @@ func GetContainerUser(
runArgsMap map[types.RunArg]*types.RunArgValue,
devcontainerConfig types.DevcontainerConfig,
metadataFromImage map[string]any,
imageUser string,
) string {
if containerUser := getUser(runArgsMap); containerUser != "" {
return containerUser
@ -61,7 +62,7 @@ func GetContainerUser(
if containerUser, ok := metadataFromImage["containerUser"].(string); ok {
return containerUser
}
return ""
return imageUser
}
func ExtractRemoteUserFromLabels(inspectResp types2.ContainerJSON) string {