Various polishments, now validating that ws is ready to run for every command
parent
ac9376686c
commit
01dc4943b1
|
@ -19,8 +19,8 @@ const defaultNotReadySleepTime time.Duration = time.Second * 60
|
|||
const defaultSleepTime time.Duration = time.Second
|
||||
|
||||
var errorMissingApplicationSlug = colorstring.Color("[red]Error: [white]Missing application slug")
|
||||
var errorUnexpected = colorstring.Color("[red]An unexpected error ocurring and the application crashed")
|
||||
var notYetImplemented = colorstring.Color("[yellow]This feature is not yet implemented, this command is only a stub.")
|
||||
var errorSystemNotReady = colorstring.Color("[red]Eror: [white]The system is not ready to run. \n[white]Please run 'cd /home/system/components/ws/ && ./ws -b' first.")
|
||||
var errorNotYetImplemented = colorstring.Color("[yellow]This feature is not yet implemented, this command is only a stub.")
|
||||
|
||||
func main() {
|
||||
|
||||
|
@ -37,8 +37,7 @@ func main() {
|
|||
Aliases: []string{"b"},
|
||||
Usage: "Sets up initial structure and dependencies for the edgebox system",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Edgebox Setup")
|
||||
return nil
|
||||
return cli.Exit(errorNotYetImplemented, 1)
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -50,6 +49,7 @@ func main() {
|
|||
Name: "setup",
|
||||
Aliases: []string{"s"},
|
||||
Usage: "Sets up an encrypted secure connection to a tunnel",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 4)
|
||||
|
@ -76,16 +76,18 @@ func main() {
|
|||
Name: "enable",
|
||||
Aliases: []string{"e"},
|
||||
Usage: "enables the public tunnel (when configured)",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
return cli.Exit(notYetImplemented, 1)
|
||||
return cli.Exit(errorNotYetImplemented, 1)
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "disable",
|
||||
Aliases: []string{"d"},
|
||||
Usage: "disables the public tunnel (when online)",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
return cli.Exit(notYetImplemented, 1)
|
||||
return cli.Exit(errorNotYetImplemented, 1)
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -99,6 +101,7 @@ func main() {
|
|||
Name: "list",
|
||||
Aliases: []string{"l"},
|
||||
Usage: "list currently installed apps and their status",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
task := getCommandTask("list_edgeapps", "", true)
|
||||
// return cli.Exit(utils.ColorJsonString(task.Result.String), 0)
|
||||
|
@ -109,6 +112,7 @@ func main() {
|
|||
Name: "install",
|
||||
Aliases: []string{"i"},
|
||||
Usage: "install the specified app (slug or package file)",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -125,6 +129,7 @@ func main() {
|
|||
Name: "remove",
|
||||
Aliases: []string{"r"},
|
||||
Usage: "remove the specified app",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -141,6 +146,7 @@ func main() {
|
|||
Name: "start",
|
||||
Aliases: []string{"s"},
|
||||
Usage: "start the specified app",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -157,6 +163,7 @@ func main() {
|
|||
Name: "stop",
|
||||
Aliases: []string{"k"},
|
||||
Usage: "stop the specified app",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -178,6 +185,7 @@ func main() {
|
|||
Name: "enable",
|
||||
Aliases: []string{"e"},
|
||||
Usage: "set an app as accessible online",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 2)
|
||||
|
@ -202,6 +210,7 @@ func main() {
|
|||
Name: "disable",
|
||||
Aliases: []string{"d"},
|
||||
Usage: "set an app as local-network private",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -227,6 +236,7 @@ func main() {
|
|||
Name: "enable",
|
||||
Aliases: []string{"e"},
|
||||
Usage: "enable dashboard access",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
if argumentError != nil {
|
||||
|
@ -241,6 +251,7 @@ func main() {
|
|||
Name: "disable",
|
||||
Aliases: []string{"d"},
|
||||
Usage: "disable dashboard access",
|
||||
Before: canRunCommands,
|
||||
Action: func(c *cli.Context) error {
|
||||
|
||||
argumentError := checkArgumentsPresence(c, 1)
|
||||
|
@ -264,6 +275,14 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
func canRunCommands(c *cli.Context) error {
|
||||
if !utils.IsSystemReady() {
|
||||
return cli.Exit(errorSystemNotReady, 1)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkArgumentsPresence(c *cli.Context, count int) error {
|
||||
if count != 0 {
|
||||
for i := 0; i < count; i++ {
|
||||
|
@ -309,7 +328,6 @@ func startService() {
|
|||
}()
|
||||
|
||||
printVersion()
|
||||
|
||||
printDbDetails()
|
||||
|
||||
tick := 0
|
||||
|
@ -317,7 +335,7 @@ func startService() {
|
|||
// infinite loop
|
||||
for {
|
||||
|
||||
if isSystemReady() {
|
||||
if utils.IsSystemReady() {
|
||||
tick++ // Tick is an int, so eventually will "go out of ticks?" Maybe we want to reset the ticks every once in a while, to avoid working with big numbers...
|
||||
systemIterator(tick)
|
||||
} else {
|
||||
|
@ -348,17 +366,6 @@ func printDbDetails() {
|
|||
)
|
||||
}
|
||||
|
||||
// IsSystemReady : Checks hability of the service to execute commands (Only after "edgebox --build" is ran at least once via SSH, or if built for distribution)
|
||||
func isSystemReady() bool {
|
||||
_, err := os.Stat("/home/system/components/ws/.ready")
|
||||
return !os.IsNotExist(err)
|
||||
}
|
||||
|
||||
// IsDatabaseReady : Checks is it can successfully connect to the task queue db
|
||||
func isDatabaseReady() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func systemIterator(tick int) {
|
||||
|
||||
log.Printf("Tick is %d", tick)
|
||||
|
@ -376,7 +383,7 @@ func systemIterator(tick int) {
|
|||
log.Printf("No tasks to execute.")
|
||||
}
|
||||
|
||||
// Wait about 1 second before resumming operations.
|
||||
// Wait about 1 second before resuming operations.
|
||||
log.Printf("Next instruction will be executed 1 second")
|
||||
time.Sleep(defaultSleepTime)
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ func GetSQLiteDbConnectionDetails() string {
|
|||
|
||||
}
|
||||
|
||||
// GetFormattedDateTime: Given a Time, Returns a string that is formatted ready to be inserted into an SQLite Datetime field using sql.Prepare.
|
||||
// GetFormattedDateTime: Given a Time, Returns a string that is formatted to be passed around the application, including correctly inserting SQLite Datetime field using sql.Prepare.
|
||||
func GetFormattedDateTime(t time.Time) string {
|
||||
// This date is used to indicate the layout.
|
||||
const datetimeLayout = "2006-01-02 15:04:05"
|
||||
|
@ -189,6 +189,17 @@ func WriteOption(optionKey string, optionValue string) {
|
|||
db.Close()
|
||||
}
|
||||
|
||||
// IsSystemReady : Checks hability of the service to execute commands (Only after "edgebox --build" is ran at least once via SSH, or if built for distribution)
|
||||
func IsSystemReady() bool {
|
||||
_, err := os.Stat("/home/system/components/ws/.ready")
|
||||
return !os.IsNotExist(err)
|
||||
}
|
||||
|
||||
// IsDatabaseReady : Checks is it can successfully connect to the task queue db
|
||||
func IsDatabaseReady() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func ColorJsonString(jsonString string) string {
|
||||
var obj map[string]interface{}
|
||||
json.Unmarshal([]byte(jsonString), &obj)
|
||||
|
|
Loading…
Reference in New Issue