fix(auth): complete Task 13 deployment review
This commit is contained in:
@@ -394,7 +394,8 @@ type renderedCompose struct {
|
||||
Name string `json:"name"`
|
||||
} `json:"volumes"`
|
||||
Services map[string]struct {
|
||||
Image string `json:"image"`
|
||||
Image string `json:"image"`
|
||||
ContainerName string `json:"container_name"`
|
||||
} `json:"services"`
|
||||
}
|
||||
|
||||
@@ -474,18 +475,13 @@ func imageIdentities(ctx context.Context, installation config.Installation, runn
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
matching := make([]composeImageIdentity, 0, len(inspected))
|
||||
for _, item := range inspected {
|
||||
if item.Service == "" || item.Service == name {
|
||||
matching = append(matching, item)
|
||||
}
|
||||
expectedContainer := rendered.Services[name].ContainerName
|
||||
if expectedContainer == "" {
|
||||
expectedContainer = installation.ProjectName() + "-" + name + "-1"
|
||||
}
|
||||
if len(matching) > 1 {
|
||||
return nil, errors.New("Docker Compose returned invalid image identities")
|
||||
}
|
||||
id := ""
|
||||
if len(matching) == 1 {
|
||||
id = matching[0].ID
|
||||
id, err := selectComposeImageIdentity(name, expectedContainer, inspected)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
images = append(images, ImageIdentity{Service: name, Reference: rendered.Services[name].Image, ID: id})
|
||||
}
|
||||
@@ -500,7 +496,7 @@ type composeImageIdentity struct {
|
||||
|
||||
func decodeComposeImageIdentities(value string) ([]composeImageIdentity, error) {
|
||||
trimmed := strings.TrimSpace(value)
|
||||
if trimmed == "" {
|
||||
if trimmed == "" || trimmed == "null" {
|
||||
return nil, nil
|
||||
}
|
||||
var identities []composeImageIdentity
|
||||
@@ -530,6 +526,22 @@ func decodeComposeImageIdentities(value string) ([]composeImageIdentity, error)
|
||||
return identities, nil
|
||||
}
|
||||
|
||||
func selectComposeImageIdentity(service string, expectedContainer string, identities []composeImageIdentity) (string, error) {
|
||||
if len(identities) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
matching := make([]composeImageIdentity, 0, len(identities))
|
||||
for _, item := range identities {
|
||||
if item.Service == service || item.Service == "" && item.ContainerName == expectedContainer {
|
||||
matching = append(matching, item)
|
||||
}
|
||||
}
|
||||
if len(matching) != 1 {
|
||||
return "", errors.New("Docker Compose returned invalid image identities")
|
||||
}
|
||||
return matching[0].ID, nil
|
||||
}
|
||||
|
||||
func installationRunning(ctx context.Context, installation config.Installation, runner archiveRunner) (bool, error) {
|
||||
result, err := runner.Run(ctx, installation.ComposeArgs("ps", "--all", "--format", "json"), nil)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user