Added install / remove edgeapp tasks
parent
c42d96bf34
commit
11e9543a87
|
@ -43,6 +43,7 @@ type EdgeAppService struct {
|
||||||
|
|
||||||
const configFilename = "/edgebox-compose.yml"
|
const configFilename = "/edgebox-compose.yml"
|
||||||
const envFilename = "/edgebox.env"
|
const envFilename = "/edgebox.env"
|
||||||
|
const runnableFilename = "/.run"
|
||||||
const myEdgeAppServiceEnvFilename = "/myedgeapp.env"
|
const myEdgeAppServiceEnvFilename = "/myedgeapp.env"
|
||||||
const defaultContainerOperationSleepTime time.Duration = time.Second * 10
|
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
|
// GetEdgeApps : Returns a list of all available EdgeApps in structs filled with information
|
||||||
func GetEdgeApps() []EdgeApp {
|
func GetEdgeApps() []EdgeApp {
|
||||||
|
|
||||||
|
@ -142,20 +201,29 @@ func GetEdgeAppStatus(ID string) EdgeAppStatus {
|
||||||
// - No service running = EdgeApp is off
|
// - No service running = EdgeApp is off
|
||||||
|
|
||||||
runningServices := 0
|
runningServices := 0
|
||||||
status := EdgeAppStatus{0, "off"}
|
status := EdgeAppStatus{-1, "not-installed"}
|
||||||
services := GetEdgeAppServices(ID)
|
|
||||||
for _, edgeAppService := range services {
|
if !IsEdgeAppInstalled(ID) {
|
||||||
if edgeAppService.IsRunning {
|
|
||||||
runningServices++
|
status = EdgeAppStatus{0, "off"}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
services := GetEdgeAppServices(ID)
|
||||||
|
for _, edgeAppService := range services {
|
||||||
|
if edgeAppService.IsRunning {
|
||||||
|
runningServices++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if runningServices > 0 && runningServices != len(services) {
|
if runningServices > 0 && runningServices != len(services) {
|
||||||
status = EdgeAppStatus{2, "error"}
|
status = EdgeAppStatus{2, "error"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if runningServices == len(services) {
|
||||||
|
status = EdgeAppStatus{1, "on"}
|
||||||
|
}
|
||||||
|
|
||||||
if runningServices == len(services) {
|
|
||||||
status = EdgeAppStatus{1, "on"}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status
|
return status
|
||||||
|
|
|
@ -35,6 +35,14 @@ type taskStartEdgeAppArgs struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type taskInstallEdgeAppArgs struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type taskRemoveEdgeAppArgs struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
type taskStopEdgeAppArgs struct {
|
type taskStopEdgeAppArgs struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
}
|
}
|
||||||
|
@ -122,6 +130,31 @@ func ExecuteTask(task Task) Task {
|
||||||
task.Result = sql.NullString{String: taskResult, Valid: true}
|
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":
|
case "start_edgeapp":
|
||||||
|
|
||||||
log.Println("Starting 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 {
|
func taskStartEdgeApp(args taskStartEdgeAppArgs) string {
|
||||||
|
|
||||||
fmt.Println("Executing taskStartEdgeApp for " + args.ID)
|
fmt.Println("Executing taskStartEdgeApp for " + args.ID)
|
||||||
|
|
Loading…
Reference in New Issue