Added install / remove edgeapp tasks

pull/6/head
Paulo Truta 2021-03-04 15:06:54 +00:00
parent c42d96bf34
commit 11e9543a87
2 changed files with 142 additions and 11 deletions

View File

@ -43,6 +43,7 @@ type EdgeAppService struct {
const configFilename = "/edgebox-compose.yml"
const envFilename = "/edgebox.env"
const runnableFilename = "/.run"
const myEdgeAppServiceEnvFilename = "/myedgeapp.env"
const defaultContainerOperationSleepTime time.Duration = time.Second * 10
@ -102,6 +103,64 @@ func GetEdgeApp(ID string) MaybeEdgeApp {
}
func IsEdgeAppInstalled(ID string) bool {
result := false
_, err := os.Stat(utils.GetPath("edgeAppsPath") + ID + runnableFilename)
if !os.IsNotExist(err) {
result = true
}
return result
}
func SetEdgeAppInstalled(ID string) bool {
result := true
_, err := os.Stat(utils.GetPath("edgeAppsPath") + ID + runnableFilename)
if os.IsNotExist(err) {
_, err := os.Create(utils.GetPath("edgeAppsPath") + ID + runnableFilename)
result = true
if err != nil {
log.Fatal("Runnable file for EdgeApp could not be created!")
result = false
}
buildFrameworkContainers()
} else {
// Is already installed.
result = false
}
return result
}
func SetEdgeAppNotInstalled(ID string) bool {
result := true
err := os.Remove(utils.GetPath("edgeAppsPath") + ID + runnableFilename)
if err != nil {
result = false
log.Fatal(err)
}
buildFrameworkContainers()
return result
}
// GetEdgeApps : Returns a list of all available EdgeApps in structs filled with information
func GetEdgeApps() []EdgeApp {
@ -142,20 +201,29 @@ func GetEdgeAppStatus(ID string) EdgeAppStatus {
// - No service running = EdgeApp is off
runningServices := 0
status := EdgeAppStatus{0, "off"}
services := GetEdgeAppServices(ID)
for _, edgeAppService := range services {
if edgeAppService.IsRunning {
runningServices++
status := EdgeAppStatus{-1, "not-installed"}
if !IsEdgeAppInstalled(ID) {
status = EdgeAppStatus{0, "off"}
} else {
services := GetEdgeAppServices(ID)
for _, edgeAppService := range services {
if edgeAppService.IsRunning {
runningServices++
}
}
}
if runningServices > 0 && runningServices != len(services) {
status = EdgeAppStatus{2, "error"}
}
if runningServices > 0 && runningServices != len(services) {
status = EdgeAppStatus{2, "error"}
}
if runningServices == len(services) {
status = EdgeAppStatus{1, "on"}
}
if runningServices == len(services) {
status = EdgeAppStatus{1, "on"}
}
return status

View File

@ -35,6 +35,14 @@ type taskStartEdgeAppArgs struct {
ID string `json:"id"`
}
type taskInstallEdgeAppArgs struct {
ID string `json:"id"`
}
type taskRemoveEdgeAppArgs struct {
ID string `json:"id"`
}
type taskStopEdgeAppArgs struct {
ID string `json:"id"`
}
@ -122,6 +130,31 @@ func ExecuteTask(task Task) Task {
task.Result = sql.NullString{String: taskResult, Valid: true}
}
case "install_edgeapp":
log.Println("Installing EdgeApp...")
var args taskInstallEdgeAppArgs
err := json.Unmarshal([]byte(task.Args), &args)
if err != nil {
log.Printf("Error reading arguments of install_edgeapp task: %s", err)
} else {
taskResult := taskInstallEdgeApp(args)
task.Result = sql.NullString{String: taskResult, Valid: true}
}
case "remove_edgeapp":
log.Println("Removing EdgeApp...")
var args taskRemoveEdgeAppArgs
err := json.Unmarshal([]byte(task.Args), &args)
if err != nil {
log.Printf("Error reading arguments of remove_edgeapp task: %s", err)
} else {
taskResult := taskRemoveEdgeApp(args)
task.Result = sql.NullString{String: taskResult, Valid: true}
}
case "start_edgeapp":
log.Println("Starting EdgeApp...")
@ -231,6 +264,36 @@ func taskSetupTunnel(args taskSetupTunnelArgs) string {
}
func taskInstallEdgeApp(args taskInstallEdgeAppArgs) string {
fmt.Println("Executing taskInstallEdgeApp for " + args.ID)
result := edgeapps.SetEdgeAppInstalled(args.ID)
resultJSON, _ := json.Marshal(result)
taskGetEdgeApps()
return string(resultJSON)
}
func taskRemoveEdgeApp(args taskRemoveEdgeAppArgs) string {
fmt.Println("Executing taskRemoveEdgeApp for " + args.ID)
result := edgeapps.SetEdgeAppNotInstalled(args.ID)
resultJSON, _ := json.Marshal(result)
taskGetEdgeApps()
return string(resultJSON)
}
func taskStartEdgeApp(args taskStartEdgeAppArgs) string {
fmt.Println("Executing taskStartEdgeApp for " + args.ID)