Skip to content

Commit

Permalink
feat: add uncontrolled to apply setting (#167)
Browse files Browse the repository at this point in the history
  • Loading branch information
CorrectRoadH committed Mar 19, 2024
1 parent d495fbd commit 00f6464
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 14 deletions.
1 change: 1 addition & 0 deletions api/app_management/openapi.yaml
Expand Up @@ -440,6 +440,7 @@ paths:
- $ref: "#/components/parameters/ComposeAppID"
- $ref: "#/components/parameters/DryRun"
- $ref: "#/components/parameters/CheckPortConflict"
- $ref: "#/components/parameters/Uncontrolled"
requestBody:
$ref: "#/components/requestBodies/RequestComposeApp"
responses:
Expand Down
56 changes: 45 additions & 11 deletions route/v2/compose_app.go
Expand Up @@ -134,6 +134,29 @@ func (a *AppManagement) ApplyComposeAppSettings(ctx echo.Context, id codegen.Com
Message: &message,
})
}

if params.Uncontrolled != nil && *params.Uncontrolled {
// set to uncontrolled app
xcasaos := composeApp.Extensions[common.ComposeExtensionNameXCasaOS]
xcasaosMap, ok := xcasaos.(map[string]interface{})
if !ok {
logger.Error("failed to get map compose app extensions", zap.String("composeAppID", composeApp.Name))
} else {
xcasaosMap[common.ComposeExtensionPropertyNameIsUncontrolled] = true
composeApp.Extensions[common.ComposeExtensionNameXCasaOS] = xcasaosMap
}
} else {
// set to controlled app
xcasaos := composeApp.Extensions[common.ComposeExtensionNameXCasaOS]
xcasaosMap, ok := xcasaos.(map[string]interface{})
if !ok {
logger.Error("failed to get map compose app extensions", zap.String("composeAppID", composeApp.Name))
} else {
xcasaosMap[common.ComposeExtensionPropertyNameIsUncontrolled] = false
composeApp.Extensions[common.ComposeExtensionNameXCasaOS] = xcasaosMap
}
}

if params.CheckPortConflict == nil || *params.CheckPortConflict {

// validation 1 - check if there are ports in use
Expand Down Expand Up @@ -230,6 +253,28 @@ func (a *AppManagement) InstallComposeApp(ctx echo.Context, params codegen.Insta
})
}

if params.Uncontrolled != nil && *params.Uncontrolled {
// set to uncontrolled app
xcasaos := composeApp.Extensions[common.ComposeExtensionNameXCasaOS]
xcasaosMap, ok := xcasaos.(map[string]interface{})
if !ok {
logger.Error("failed to get map compose app extensions", zap.String("composeAppID", composeApp.Name))
} else {
xcasaosMap[common.ComposeExtensionPropertyNameIsUncontrolled] = true
composeApp.Extensions[common.ComposeExtensionNameXCasaOS] = xcasaosMap
}
} else {
// set to controlled app
xcasaos := composeApp.Extensions[common.ComposeExtensionNameXCasaOS]
xcasaosMap, ok := xcasaos.(map[string]interface{})
if !ok {
logger.Error("failed to get map compose app extensions", zap.String("composeAppID", composeApp.Name))
} else {
xcasaosMap[common.ComposeExtensionPropertyNameIsUncontrolled] = false
composeApp.Extensions[common.ComposeExtensionNameXCasaOS] = xcasaosMap
}
}

if params.CheckPortConflict == nil || *params.CheckPortConflict {
// validation 1 - check if there are ports in use
validation, err := composeApp.GetPortsInUse()
Expand Down Expand Up @@ -263,17 +308,6 @@ func (a *AppManagement) InstallComposeApp(ctx echo.Context, params codegen.Insta
})
}

if params.Uncontrolled != nil && *params.Uncontrolled {
xcasaos := composeApp.Extensions[common.ComposeExtensionNameXCasaOS]
xcasaosMap, ok := xcasaos.(map[string]interface{})
if !ok {
logger.Error("failed to get map compose app extensions", zap.String("composeAppID", composeApp.Name))
} else {
xcasaosMap[common.ComposeExtensionPropertyNameIsUncontrolled] = true
composeApp.Extensions[common.ComposeExtensionNameXCasaOS] = xcasaosMap
}
}

if service.MyService.Compose().IsInstalling(composeApp.Name) {
message := fmt.Sprintf("compose app `%s` is already being installed", composeApp.Name)
return ctx.JSON(http.StatusConflict, codegen.ComposeAppBadRequest{Message: &message})
Expand Down
7 changes: 4 additions & 3 deletions service/service.go
Expand Up @@ -151,8 +151,9 @@ func PublishEventWrapper(ctx context.Context, eventType message_bus.EventType, p
if response.StatusCode() != http.StatusOK {
logger.Error("failed to publish event", zap.String("status code", response.Status()))
}
}
if resp.StatusCode != http.StatusOK {
logger.Error("failed to publish event", zap.String("status code", resp.Status))
} else {
if resp.StatusCode != http.StatusOK {
logger.Error("failed to publish event", zap.String("status code", resp.Status))
}
}
}

0 comments on commit 00f6464

Please sign in to comment.