default clients & installs
This commit is contained in:
118
lib/clients/mailclient/mailclient_factory_.v
Normal file
118
lib/clients/mailclient/mailclient_factory_.v
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
|
||||||
|
module mailclient
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
|
__global (
|
||||||
|
mailclient_global map[string]&MailClient
|
||||||
|
mailclient_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
|
mut model:=args_
|
||||||
|
if model.name == ""{
|
||||||
|
model.name = mailclient_default
|
||||||
|
}
|
||||||
|
if model.name == ""{
|
||||||
|
model.name = "default"
|
||||||
|
}
|
||||||
|
return model
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&MailClient {
|
||||||
|
mut model := args_get(args_)
|
||||||
|
if !(model.name in mailclient_global) {
|
||||||
|
if model.name=="default"{
|
||||||
|
if ! config_exists(model){
|
||||||
|
if default{
|
||||||
|
config_save(model)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config_load(model)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mailclient_global[model.name] or {
|
||||||
|
println(mailclient_global)
|
||||||
|
panic("could not get config for mailclient with name:${model.name}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
|
mut model := args_get(args_)
|
||||||
|
mut context:=base.context() or { panic("bug") }
|
||||||
|
return context.hero_config_exists("mailclient",model.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn config_load(args_ ArgsGet) ! {
|
||||||
|
mut model := args_get(args_)
|
||||||
|
mut context:=base.context()!
|
||||||
|
mut heroscript := context.hero_config_get("mailclient",model.name)!
|
||||||
|
play(heroscript:heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
fn config_save(args_ ArgsGet) ! {
|
||||||
|
mut model := args_get(args_)
|
||||||
|
mut context:=base.context()!
|
||||||
|
context.hero_config_set("mailclient",model.name,heroscript_default()!)!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn set(o MailClient)! {
|
||||||
|
mut o2:=obj_init(o)!
|
||||||
|
mailclient_global[o.name] = &o2
|
||||||
|
mailclient_default = o.name
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct PlayArgs {
|
||||||
|
pub mut:
|
||||||
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
|
plbook ?playbook.PlayBook
|
||||||
|
reset bool
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn play(args_ PlayArgs) ! {
|
||||||
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
|
if model.heroscript == "" {
|
||||||
|
model.heroscript = heroscript_default()!
|
||||||
|
}
|
||||||
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'mailclient.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action mailclient.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for mailclient
|
||||||
|
pub fn switch(name string) {
|
||||||
|
mailclient_default = name
|
||||||
|
}
|
||||||
@@ -1,104 +1,118 @@
|
|||||||
|
|
||||||
module meilisearch
|
module meilisearch
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
meilisearch_global map[string]&MeilisearchClient
|
meilisearch_global map[string]&MeilisearchClient
|
||||||
meilisearch_default string
|
meilisearch_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string = 'default'
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
fn args_get(args_ ArgsGet) ArgsGet {
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
mut args := args_
|
mut model:=args_
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = meilisearch_default
|
model.name = meilisearch_default
|
||||||
}
|
}
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = 'default'
|
model.name = "default"
|
||||||
}
|
}
|
||||||
return args
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&MeilisearchClient {
|
pub fn get(args_ ArgsGet) !&MeilisearchClient {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
if args.name !in meilisearch_global {
|
if !(model.name in meilisearch_global) {
|
||||||
if !config_exists() {
|
if model.name=="default"{
|
||||||
if default {
|
if ! config_exists(model){
|
||||||
config_save()!
|
if default{
|
||||||
}
|
config_save(model)!
|
||||||
}
|
}
|
||||||
config_load()!
|
}
|
||||||
}
|
config_load(model)!
|
||||||
return meilisearch_global[args.name] or {
|
}
|
||||||
println(meilisearch_global)
|
}
|
||||||
panic('bug in get from factory: ')
|
return meilisearch_global[model.name] or {
|
||||||
}
|
println(meilisearch_global)
|
||||||
|
panic("could not get config for meilisearch with name:${model.name}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn config_exists(args_ ArgsGet) bool {
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context() or { panic('bug') }
|
mut context:=base.context() or { panic("bug") }
|
||||||
return context.hero_config_exists('meilisearch', args.name)
|
return context.hero_config_exists("meilisearch",model.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_load(args_ ArgsGet) ! {
|
fn config_load(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
mut heroscript := context.hero_config_get('meilisearch', args.name)!
|
mut heroscript := context.hero_config_get("meilisearch",model.name)!
|
||||||
play(heroscript: heroscript)!
|
play(heroscript:heroscript)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_save(args_ ArgsGet) ! {
|
fn config_save(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
context.hero_config_set('meilisearch', args.name, heroscript_default()!)!
|
context.hero_config_set("meilisearch",model.name,heroscript_default()!)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set(o MeilisearchClient) ! {
|
|
||||||
mut o2 := obj_init(o)!
|
fn set(o MeilisearchClient)! {
|
||||||
meilisearch_global['default'] = &o2
|
mut o2:=obj_init(o)!
|
||||||
|
meilisearch_global[o.name] = &o2
|
||||||
|
meilisearch_default = o.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct PlayArgs {
|
pub struct PlayArgs {
|
||||||
pub mut:
|
pub mut:
|
||||||
name string = 'default'
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
heroscript string // if filled in then plbook will be made out of it
|
plbook ?playbook.PlayBook
|
||||||
plbook ?playbook.PlayBook
|
reset bool
|
||||||
reset bool
|
|
||||||
start bool
|
|
||||||
stop bool
|
|
||||||
restart bool
|
|
||||||
delete bool
|
|
||||||
configure bool // make sure there is at least one installed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn play(args_ PlayArgs) ! {
|
pub fn play(args_ PlayArgs) ! {
|
||||||
mut args := args_
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
|
if model.heroscript == "" {
|
||||||
|
model.heroscript = heroscript_default()!
|
||||||
|
}
|
||||||
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'meilisearch.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action meilisearch.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if args.heroscript == '' {
|
|
||||||
args.heroscript = heroscript_default()!
|
|
||||||
}
|
|
||||||
mut plbook := args.plbook or { playbook.new(text: args.heroscript)! }
|
|
||||||
|
|
||||||
mut install_actions := plbook.find(filter: 'meilisearch.configure')!
|
|
||||||
if install_actions.len > 0 {
|
|
||||||
for install_action in install_actions {
|
|
||||||
mut p := install_action.params
|
|
||||||
cfg_play(p)!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for meilisearch
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for meilisearch
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
meilisearch_default = name
|
meilisearch_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
!!hero_code.generate_client
|
||||||
|
name: "openai"
|
||||||
|
classname: "OpenAI"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
|||||||
32
lib/clients/openai/openai_factory_.v
Normal file
32
lib/clients/openai/openai_factory_.v
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
module openai
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
|
__global (
|
||||||
|
openai_global map[string]&OpenAI
|
||||||
|
openai_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&OpenAI {
|
||||||
|
return &OpenAI{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for openai
|
||||||
|
pub fn switch(name string) {
|
||||||
|
openai_default = name
|
||||||
|
}
|
||||||
33
lib/clients/openai/openai_model.v
Normal file
33
lib/clients/openai/openai_model.v
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module openai
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
|
||||||
|
$[heap]
|
||||||
|
pub struct OpenAI {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
mail_from string
|
||||||
|
mail_password string @[secret]
|
||||||
|
mail_port int
|
||||||
|
mail_server string
|
||||||
|
mail_username string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ OpenAI)!OpenAI{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
!!hero_code.generate_client
|
||||||
|
name: "postgres"
|
||||||
|
classname: "PostgresClient"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
|||||||
32
lib/clients/postgres/postgres_factory_.v
Normal file
32
lib/clients/postgres/postgres_factory_.v
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
module postgres
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
|
__global (
|
||||||
|
postgres_global map[string]&PostgresClient
|
||||||
|
postgres_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&PostgresClient {
|
||||||
|
return &PostgresClient{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for postgres
|
||||||
|
pub fn switch(name string) {
|
||||||
|
postgres_default = name
|
||||||
|
}
|
||||||
33
lib/clients/postgres/postgres_model.v
Normal file
33
lib/clients/postgres/postgres_model.v
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module postgres
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
|
||||||
|
$[heap]
|
||||||
|
pub struct PostgresClient {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
mail_from string
|
||||||
|
mail_password string @[secret]
|
||||||
|
mail_port int
|
||||||
|
mail_server string
|
||||||
|
mail_username string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ PostgresClient)!PostgresClient{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
!!hero_code.generate_client
|
||||||
|
name: "sendgrid"
|
||||||
|
classname: "SendGrid"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
|||||||
32
lib/clients/sendgrid/sendgrid_factory_.v
Normal file
32
lib/clients/sendgrid/sendgrid_factory_.v
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
module sendgrid
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
|
__global (
|
||||||
|
sendgrid_global map[string]&SendGrid
|
||||||
|
sendgrid_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&SendGrid {
|
||||||
|
return &SendGrid{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for sendgrid
|
||||||
|
pub fn switch(name string) {
|
||||||
|
sendgrid_default = name
|
||||||
|
}
|
||||||
33
lib/clients/sendgrid/sendgrid_model.v
Normal file
33
lib/clients/sendgrid/sendgrid_model.v
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module sendgrid
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
|
||||||
|
$[heap]
|
||||||
|
pub struct SendGrid {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
mail_from string
|
||||||
|
mail_password string @[secret]
|
||||||
|
mail_port int
|
||||||
|
mail_server string
|
||||||
|
mail_username string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ SendGrid)!SendGrid{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
!!hero_code.generate_client
|
||||||
|
name: "zdb"
|
||||||
|
classname: "ZeroDBClient"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
|||||||
32
lib/clients/zdb/zdb_factory_.v
Normal file
32
lib/clients/zdb/zdb_factory_.v
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
module zdb
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
|
||||||
|
__global (
|
||||||
|
zdb_global map[string]&ZeroDBClient
|
||||||
|
zdb_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&ZeroDBClient {
|
||||||
|
return &ZeroDBClient{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for zdb
|
||||||
|
pub fn switch(name string) {
|
||||||
|
zdb_default = name
|
||||||
|
}
|
||||||
33
lib/clients/zdb/zdb_model.v
Normal file
33
lib/clients/zdb/zdb_model.v
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module zdb
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
|
||||||
|
$[heap]
|
||||||
|
pub struct ZeroDBClient {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
mail_from string
|
||||||
|
mail_password string @[secret]
|
||||||
|
mail_port int
|
||||||
|
mail_server string
|
||||||
|
mail_username string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ ZeroDBClient)!ZeroDBClient{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -13,15 +13,15 @@ pub mut:
|
|||||||
classname string
|
classname string
|
||||||
default bool = true // means user can just get the object and a default will be created
|
default bool = true // means user can just get the object and a default will be created
|
||||||
title string
|
title string
|
||||||
supported_platforms []string // only relevant for installers for now
|
//supported_platforms []string // only relevant for installers for now
|
||||||
singleton bool // means there can only be one
|
singleton bool // means there can only be one
|
||||||
templates bool // means we will use templates in the installer, client doesn't do this'
|
templates bool // means we will use templates in the installer, client doesn't do this'
|
||||||
reset bool // regenerate all, dangerous !!!
|
reset bool // regenerate all, dangerous !!!
|
||||||
interactive bool //if we want to ask
|
interactive bool //if we want to ask
|
||||||
startupmanager bool
|
startupmanager bool = true
|
||||||
build bool
|
build bool = true
|
||||||
hasconfig bool
|
hasconfig bool = true
|
||||||
cat Cat = .client
|
cat Cat //dont' set default
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -68,12 +68,12 @@ pub fn gen_model_get(path string, create bool) !GenModel {
|
|||||||
classname: p.get_default('classname','')!
|
classname: p.get_default('classname','')!
|
||||||
title: p.get_default('title', '')!
|
title: p.get_default('title', '')!
|
||||||
default: p.get_default_true('default')
|
default: p.get_default_true('default')
|
||||||
supported_platforms: p.get_list('supported_platforms')!
|
//supported_platforms: p.get_list('supported_platforms')!
|
||||||
singleton: p.get_default_false('singleton')
|
singleton: p.get_default_false('singleton')
|
||||||
templates: p.get_default_false('templates')
|
templates: p.get_default_false('templates')
|
||||||
startupmanager: p.get_default_true('startupmanager')
|
startupmanager: p.get_default_true('startupmanager')
|
||||||
build: p.get_default_false('build')
|
build: p.get_default_true('build')
|
||||||
hasconfig: p.get_default_false('hasconfig')
|
hasconfig: p.get_default_true('hasconfig')
|
||||||
cat: .installer
|
cat: .installer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,8 +93,7 @@ pub fn gen_model_get(path string, create bool) !GenModel {
|
|||||||
title: p.get_default('title', '')!
|
title: p.get_default('title', '')!
|
||||||
default: p.get_default_true('default')
|
default: p.get_default_true('default')
|
||||||
singleton: p.get_default_false('singleton')
|
singleton: p.get_default_false('singleton')
|
||||||
reset: p.get_default_false('reset')
|
hasconfig: p.get_default_true('hasconfig')
|
||||||
hasconfig: p.get_default_false('hasconfig')
|
|
||||||
cat: .client
|
cat: .client
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,11 +105,6 @@ pub fn gen_model_get(path string, create bool) !GenModel {
|
|||||||
} else {
|
} else {
|
||||||
model.cat = .installer
|
model.cat = .installer
|
||||||
}
|
}
|
||||||
if true{
|
|
||||||
println(path)
|
|
||||||
println(model)
|
|
||||||
panic("ghyui")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if model.name == "" {
|
if model.name == "" {
|
||||||
|
|||||||
@@ -1,271 +1,285 @@
|
|||||||
|
|
||||||
module meilisearchinstaller
|
module meilisearchinstaller
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
meilisearchinstaller_global map[string]&MeilisearchServer
|
meilisearchinstaller_global map[string]&MeilisearchServer
|
||||||
meilisearchinstaller_default string
|
meilisearchinstaller_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
fn args_get(args_ ArgsGet) ArgsGet {
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
mut args := args_
|
mut model:=args_
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = meilisearchinstaller_default
|
model.name = meilisearchinstaller_default
|
||||||
}
|
}
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = 'default'
|
model.name = "default"
|
||||||
}
|
}
|
||||||
return args
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&MeilisearchServer {
|
pub fn get(args_ ArgsGet) !&MeilisearchServer {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
if args.name !in meilisearchinstaller_global {
|
if !(model.name in meilisearchinstaller_global) {
|
||||||
if args.name == 'default' {
|
if model.name=="default"{
|
||||||
if !config_exists(args) {
|
if ! config_exists(model){
|
||||||
if default {
|
if default{
|
||||||
config_save(args)!
|
config_save(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config_load(args)!
|
config_load(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return meilisearchinstaller_global[args.name] or {
|
return meilisearchinstaller_global[model.name] or {
|
||||||
println(meilisearchinstaller_global)
|
println(meilisearchinstaller_global)
|
||||||
panic('could not get config for meilisearchinstaller with name:${args.name}')
|
panic("could not get config for meilisearchinstaller with name:${model.name}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn config_exists(args_ ArgsGet) bool {
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context() or { panic('bug') }
|
mut context:=base.context() or { panic("bug") }
|
||||||
return context.hero_config_exists('meilisearchinstaller', args.name)
|
return context.hero_config_exists("meilisearchinstaller",model.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_load(args_ ArgsGet) ! {
|
fn config_load(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
mut heroscript := context.hero_config_get('meilisearchinstaller', args.name)!
|
mut heroscript := context.hero_config_get("meilisearchinstaller",model.name)!
|
||||||
play(heroscript: heroscript)!
|
play(heroscript:heroscript)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_save(args_ ArgsGet) ! {
|
fn config_save(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
context.hero_config_set('meilisearchinstaller', args.name, heroscript_default()!)!
|
context.hero_config_set("meilisearchinstaller",model.name,heroscript_default()!)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set(o MeilisearchServer) ! {
|
|
||||||
mut o2 := obj_init(o)!
|
fn set(o MeilisearchServer)! {
|
||||||
meilisearchinstaller_global[o.name] = &o2
|
mut o2:=obj_init(o)!
|
||||||
meilisearchinstaller_default = o.name
|
meilisearchinstaller_global[o.name] = &o2
|
||||||
|
meilisearchinstaller_default = o.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct PlayArgs {
|
pub struct PlayArgs {
|
||||||
pub mut:
|
pub mut:
|
||||||
heroscript string // if filled in then plbook will be made out of it
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
plbook ?playbook.PlayBook
|
plbook ?playbook.PlayBook
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn play(args_ PlayArgs) ! {
|
pub fn play(args_ PlayArgs) ! {
|
||||||
mut args := args_
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
if args.heroscript == '' {
|
if model.heroscript == "" {
|
||||||
args.heroscript = heroscript_default()!
|
model.heroscript = heroscript_default()!
|
||||||
}
|
}
|
||||||
mut plbook := args.plbook or { playbook.new(text: args.heroscript)! }
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'meilisearchinstaller.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action meilisearchinstaller.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mut install_actions := plbook.find(filter: 'meilisearchinstaller.configure')!
|
mut other_actions := plbook.find(filter: 'meilisearchinstaller.')!
|
||||||
if install_actions.len > 0 {
|
for other_action in other_actions {
|
||||||
for install_action in install_actions {
|
if other_action.name in ["destroy","install","build"]{
|
||||||
mut p := install_action.params
|
mut p := other_action.params
|
||||||
mycfg := cfg_play(p)!
|
reset:=p.get_default_false("reset")
|
||||||
console.print_debug('install action meilisearchinstaller.configure\n${mycfg}')
|
if other_action.name == "destroy" || reset{
|
||||||
set(mycfg)!
|
console.print_debug("install action meilisearchinstaller.destroy")
|
||||||
}
|
destroy()!
|
||||||
}
|
}
|
||||||
|
if other_action.name == "install"{
|
||||||
|
console.print_debug("install action meilisearchinstaller.install")
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if other_action.name in ["start","stop","restart"]{
|
||||||
|
mut p := other_action.params
|
||||||
|
name := p.get('name')!
|
||||||
|
mut meilisearchinstaller_obj:=get(name:name)!
|
||||||
|
console.print_debug("action object:\n${meilisearchinstaller_obj}")
|
||||||
|
if other_action.name == "start"{
|
||||||
|
console.print_debug("install action meilisearchinstaller.${other_action.name}")
|
||||||
|
meilisearchinstaller_obj.start()!
|
||||||
|
}
|
||||||
|
|
||||||
mut other_actions := plbook.find(filter: 'meilisearchinstaller.')!
|
if other_action.name == "stop"{
|
||||||
for other_action in other_actions {
|
console.print_debug("install action meilisearchinstaller.${other_action.name}")
|
||||||
if other_action.name in ['destroy', 'install', 'build'] {
|
meilisearchinstaller_obj.stop()!
|
||||||
mut p := other_action.params
|
}
|
||||||
reset := p.get_default_false('reset')
|
if other_action.name == "restart"{
|
||||||
if other_action.name == 'destroy' || reset {
|
console.print_debug("install action meilisearchinstaller.${other_action.name}")
|
||||||
console.print_debug('install action meilisearchinstaller.destroy')
|
meilisearchinstaller_obj.restart()!
|
||||||
destroy()!
|
}
|
||||||
}
|
}
|
||||||
if other_action.name == 'install' {
|
}
|
||||||
console.print_debug('install action meilisearchinstaller.install')
|
|
||||||
install()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if other_action.name in ['start', 'stop', 'restart'] {
|
|
||||||
mut p := other_action.params
|
|
||||||
name := p.get('name')!
|
|
||||||
mut meilisearchinstaller_obj := get(name: name)!
|
|
||||||
console.print_debug('action object:\n${meilisearchinstaller_obj}')
|
|
||||||
if other_action.name == 'start' {
|
|
||||||
console.print_debug('install action meilisearchinstaller.${other_action.name}')
|
|
||||||
meilisearchinstaller_obj.start()!
|
|
||||||
}
|
|
||||||
|
|
||||||
if other_action.name == 'stop' {
|
|
||||||
console.print_debug('install action meilisearchinstaller.${other_action.name}')
|
|
||||||
meilisearchinstaller_obj.stop()!
|
|
||||||
}
|
|
||||||
if other_action.name == 'restart' {
|
|
||||||
console.print_debug('install action meilisearchinstaller.${other_action.name}')
|
|
||||||
meilisearchinstaller_obj.restart()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// load from disk and make sure is properly intialized
|
//load from disk and make sure is properly intialized
|
||||||
pub fn (mut self MeilisearchServer) reload() ! {
|
pub fn (mut self MeilisearchServer) reload() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self = obj_init(self)!
|
self=obj_init(self)!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) start() ! {
|
pub fn (mut self MeilisearchServer) start() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if self.running()! {
|
if self.running()!{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.print_header('meilisearchinstaller start')
|
console.print_header('meilisearchinstaller start')
|
||||||
|
|
||||||
if !installed()! {
|
if ! installed()!{
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
|
|
||||||
configure()!
|
configure()!
|
||||||
|
|
||||||
start_pre()!
|
start_pre()!
|
||||||
|
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
console.print_debug('starting meilisearchinstaller with ${zprocess.startuptype}...')
|
console.print_debug('starting meilisearchinstaller with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
sm.new(zprocess)!
|
sm.new(zprocess)!
|
||||||
|
|
||||||
sm.start(zprocess.name)!
|
sm.start(zprocess.name)!
|
||||||
}
|
}
|
||||||
|
|
||||||
start_post()!
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('meilisearchinstaller did not install properly.')
|
||||||
|
|
||||||
for _ in 0 .. 50 {
|
|
||||||
if self.running()! {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
time.sleep(100 * time.millisecond)
|
|
||||||
}
|
|
||||||
return error('meilisearchinstaller did not install properly.')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) install_start(args InstallArgs) ! {
|
pub fn (mut self MeilisearchServer) install_start(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.install(args)!
|
self.install(model)!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) stop() ! {
|
pub fn (mut self MeilisearchServer) stop() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
stop_pre()!
|
stop_pre()!
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
sm.stop(zprocess.name)!
|
sm.stop(zprocess.name)!
|
||||||
}
|
}
|
||||||
stop_post()!
|
stop_post()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) restart() ! {
|
pub fn (mut self MeilisearchServer) restart() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop()!
|
self.stop()!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) running() !bool {
|
pub fn (mut self MeilisearchServer) running() !bool {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
|
|
||||||
// walk over the generic processes, if not running return
|
//walk over the generic processes, if not running return
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
r := sm.running(zprocess.name)!
|
r:=sm.running(zprocess.name)!
|
||||||
if r == false {
|
if r==false{
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return running()!
|
return running()!
|
||||||
}
|
}
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) install(args InstallArgs) ! {
|
pub fn (mut self MeilisearchServer) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) build() ! {
|
pub fn (mut self MeilisearchServer) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self MeilisearchServer) destroy() ! {
|
pub fn (mut self MeilisearchServer) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop() or {}
|
self.stop() or {}
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for meilisearchinstaller
|
|
||||||
|
|
||||||
|
//switch instance to be used for meilisearchinstaller
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
meilisearchinstaller_default = name
|
meilisearchinstaller_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,266 +1,281 @@
|
|||||||
|
|
||||||
module postgresql
|
module postgresql
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
postgresql_global map[string]&Postgresql
|
postgresql_global map[string]&Postgresql
|
||||||
postgresql_default string
|
postgresql_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
fn args_get(args_ ArgsGet) ArgsGet {
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
mut args := args_
|
mut model:=args_
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = postgresql_default
|
model.name = postgresql_default
|
||||||
}
|
}
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = 'default'
|
model.name = "default"
|
||||||
}
|
}
|
||||||
return args
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&Postgresql {
|
pub fn get(args_ ArgsGet) !&Postgresql {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
if args.name !in postgresql_global {
|
if !(model.name in postgresql_global) {
|
||||||
if args.name == 'default' {
|
if model.name=="default"{
|
||||||
if !config_exists(args) {
|
if ! config_exists(model){
|
||||||
if default {
|
if default{
|
||||||
config_save(args)!
|
config_save(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config_load(args)!
|
config_load(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return postgresql_global[args.name] or {
|
return postgresql_global[model.name] or {
|
||||||
println(postgresql_global)
|
println(postgresql_global)
|
||||||
panic('could not get config for postgresql with name:${args.name}')
|
panic("could not get config for postgresql with name:${model.name}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn config_exists(args_ ArgsGet) bool {
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context() or { panic('bug') }
|
mut context:=base.context() or { panic("bug") }
|
||||||
return context.hero_config_exists('postgresql', args.name)
|
return context.hero_config_exists("postgresql",model.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_load(args_ ArgsGet) ! {
|
fn config_load(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
mut heroscript := context.hero_config_get('postgresql', args.name)!
|
mut heroscript := context.hero_config_get("postgresql",model.name)!
|
||||||
play(heroscript: heroscript)!
|
play(heroscript:heroscript)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_save(args_ ArgsGet) ! {
|
fn config_save(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
context.hero_config_set('postgresql', args.name, heroscript_default()!)!
|
context.hero_config_set("postgresql",model.name,heroscript_default()!)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set(o Postgresql) ! {
|
|
||||||
mut o2 := obj_init(o)!
|
fn set(o Postgresql)! {
|
||||||
postgresql_global[o.name] = &o2
|
mut o2:=obj_init(o)!
|
||||||
postgresql_default = o.name
|
postgresql_global[o.name] = &o2
|
||||||
|
postgresql_default = o.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct PlayArgs {
|
pub struct PlayArgs {
|
||||||
pub mut:
|
pub mut:
|
||||||
heroscript string // if filled in then plbook will be made out of it
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
plbook ?playbook.PlayBook
|
plbook ?playbook.PlayBook
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn play(args_ PlayArgs) ! {
|
pub fn play(args_ PlayArgs) ! {
|
||||||
mut args := args_
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
if args.heroscript == '' {
|
if model.heroscript == "" {
|
||||||
args.heroscript = heroscript_default()!
|
model.heroscript = heroscript_default()!
|
||||||
}
|
}
|
||||||
mut plbook := args.plbook or { playbook.new(text: args.heroscript)! }
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'postgresql.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action postgresql.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mut install_actions := plbook.find(filter: 'postgresql.configure')!
|
mut other_actions := plbook.find(filter: 'postgresql.')!
|
||||||
if install_actions.len > 0 {
|
for other_action in other_actions {
|
||||||
for install_action in install_actions {
|
if other_action.name in ["destroy","install","build"]{
|
||||||
mut p := install_action.params
|
mut p := other_action.params
|
||||||
mycfg := cfg_play(p)!
|
reset:=p.get_default_false("reset")
|
||||||
console.print_debug('install action postgresql.configure\n${mycfg}')
|
if other_action.name == "destroy" || reset{
|
||||||
set(mycfg)!
|
console.print_debug("install action postgresql.destroy")
|
||||||
}
|
destroy()!
|
||||||
}
|
}
|
||||||
|
if other_action.name == "install"{
|
||||||
|
console.print_debug("install action postgresql.install")
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if other_action.name in ["start","stop","restart"]{
|
||||||
|
mut p := other_action.params
|
||||||
|
name := p.get('name')!
|
||||||
|
mut postgresql_obj:=get(name:name)!
|
||||||
|
console.print_debug("action object:\n${postgresql_obj}")
|
||||||
|
if other_action.name == "start"{
|
||||||
|
console.print_debug("install action postgresql.${other_action.name}")
|
||||||
|
postgresql_obj.start()!
|
||||||
|
}
|
||||||
|
|
||||||
mut other_actions := plbook.find(filter: 'postgresql.')!
|
if other_action.name == "stop"{
|
||||||
for other_action in other_actions {
|
console.print_debug("install action postgresql.${other_action.name}")
|
||||||
if other_action.name in ['destroy', 'install', 'build'] {
|
postgresql_obj.stop()!
|
||||||
mut p := other_action.params
|
}
|
||||||
reset := p.get_default_false('reset')
|
if other_action.name == "restart"{
|
||||||
if other_action.name == 'destroy' || reset {
|
console.print_debug("install action postgresql.${other_action.name}")
|
||||||
console.print_debug('install action postgresql.destroy')
|
postgresql_obj.restart()!
|
||||||
destroy()!
|
}
|
||||||
}
|
}
|
||||||
if other_action.name == 'install' {
|
}
|
||||||
console.print_debug('install action postgresql.install')
|
|
||||||
install()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if other_action.name in ['start', 'stop', 'restart'] {
|
|
||||||
mut p := other_action.params
|
|
||||||
name := p.get('name')!
|
|
||||||
mut postgresql_obj := get(name: name)!
|
|
||||||
console.print_debug('action object:\n${postgresql_obj}')
|
|
||||||
if other_action.name == 'start' {
|
|
||||||
console.print_debug('install action postgresql.${other_action.name}')
|
|
||||||
postgresql_obj.start()!
|
|
||||||
}
|
|
||||||
|
|
||||||
if other_action.name == 'stop' {
|
|
||||||
console.print_debug('install action postgresql.${other_action.name}')
|
|
||||||
postgresql_obj.stop()!
|
|
||||||
}
|
|
||||||
if other_action.name == 'restart' {
|
|
||||||
console.print_debug('install action postgresql.${other_action.name}')
|
|
||||||
postgresql_obj.restart()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// load from disk and make sure is properly intialized
|
//load from disk and make sure is properly intialized
|
||||||
pub fn (mut self Postgresql) reload() ! {
|
pub fn (mut self Postgresql) reload() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self = obj_init(self)!
|
self=obj_init(self)!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) start() ! {
|
pub fn (mut self Postgresql) start() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if self.running()! {
|
if self.running()!{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.print_header('postgresql start')
|
console.print_header('postgresql start')
|
||||||
|
|
||||||
if !installed()! {
|
if ! installed()!{
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
|
|
||||||
configure()!
|
configure()!
|
||||||
|
|
||||||
start_pre()!
|
start_pre()!
|
||||||
|
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
console.print_debug('starting postgresql with ${zprocess.startuptype}...')
|
console.print_debug('starting postgresql with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
sm.new(zprocess)!
|
sm.new(zprocess)!
|
||||||
|
|
||||||
sm.start(zprocess.name)!
|
sm.start(zprocess.name)!
|
||||||
}
|
}
|
||||||
|
|
||||||
start_post()!
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('postgresql did not install properly.')
|
||||||
|
|
||||||
for _ in 0 .. 50 {
|
|
||||||
if self.running()! {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
time.sleep(100 * time.millisecond)
|
|
||||||
}
|
|
||||||
return error('postgresql did not install properly.')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) install_start(args InstallArgs) ! {
|
pub fn (mut self Postgresql) install_start(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.install(args)!
|
self.install(model)!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) stop() ! {
|
pub fn (mut self Postgresql) stop() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
stop_pre()!
|
stop_pre()!
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
sm.stop(zprocess.name)!
|
sm.stop(zprocess.name)!
|
||||||
}
|
}
|
||||||
stop_post()!
|
stop_post()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) restart() ! {
|
pub fn (mut self Postgresql) restart() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop()!
|
self.stop()!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) running() !bool {
|
pub fn (mut self Postgresql) running() !bool {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
|
|
||||||
// walk over the generic processes, if not running return
|
//walk over the generic processes, if not running return
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
r := sm.running(zprocess.name)!
|
r:=sm.running(zprocess.name)!
|
||||||
if r == false {
|
if r==false{
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return running()!
|
return running()!
|
||||||
}
|
}
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Postgresql) install(args InstallArgs) ! {
|
pub fn (mut self Postgresql) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn (mut self Postgresql) destroy() ! {
|
pub fn (mut self Postgresql) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop() or {}
|
self.stop() or {}
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for postgresql
|
|
||||||
|
|
||||||
|
//switch instance to be used for postgresql
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
postgresql_default = name
|
postgresql_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
!!hero_code.generate_installer
|
||||||
|
name: "zerodb"
|
||||||
|
classname: "ZeroDB"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
templates: false
|
||||||
|
build: true
|
||||||
|
startupmanager: true
|
||||||
|
|
||||||
|
|||||||
202
lib/installers/db/zerodb/zerodb_actions.v
Normal file
202
lib/installers/db/zerodb/zerodb_actions.v
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
module zerodb
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.osal
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
import freeflowuniverse.herolib.core.texttools
|
||||||
|
import freeflowuniverse.herolib.core.pathlib
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.osal.systemd
|
||||||
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.installers.ulist
|
||||||
|
import freeflowuniverse.herolib.installers.lang.golang
|
||||||
|
import freeflowuniverse.herolib.installers.lang.rust
|
||||||
|
import freeflowuniverse.herolib.installers.lang.python
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
fn startupcmd () ![]zinit.ZProcessNewArgs{
|
||||||
|
mut installer := get()!
|
||||||
|
mut res := []zinit.ZProcessNewArgs{}
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// res << zinit.ZProcessNewArgs{
|
||||||
|
// name: 'zerodb'
|
||||||
|
// cmd: 'zerodb server'
|
||||||
|
// env: {
|
||||||
|
// 'HOME': '/root'
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn running() !bool {
|
||||||
|
mut installer := get()!
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// this checks health of zerodb
|
||||||
|
// curl http://localhost:3333/api/v1/s --oauth2-bearer 1234 works
|
||||||
|
// url:='http://127.0.0.1:${cfg.port}/api/v1'
|
||||||
|
// mut conn := httpconnection.new(name: 'zerodb', url: url)!
|
||||||
|
|
||||||
|
// if cfg.secret.len > 0 {
|
||||||
|
// conn.default_header.add(.authorization, 'Bearer ${cfg.secret}')
|
||||||
|
// }
|
||||||
|
// conn.default_header.add(.content_type, 'application/json')
|
||||||
|
// console.print_debug("curl -X 'GET' '${url}'/tags --oauth2-bearer ${cfg.secret}")
|
||||||
|
// r := conn.get_json_dict(prefix: 'tags', debug: false) or {return false}
|
||||||
|
// println(r)
|
||||||
|
// if true{panic("ssss")}
|
||||||
|
// tags := r['Tags'] or { return false }
|
||||||
|
// console.print_debug(tags)
|
||||||
|
// console.print_debug('zerodb is answering.')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
fn start_pre()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn start_post()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn stop_pre()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn stop_post()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////// following actions are not specific to instance of the object
|
||||||
|
|
||||||
|
// checks if a certain version or above is installed
|
||||||
|
fn installed() !bool {
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// res := os.execute('${osal.profile_path_source_and()} zerodb version')
|
||||||
|
// if res.exit_code != 0 {
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
// r := res.output.split_into_lines().filter(it.trim_space().len > 0)
|
||||||
|
// if r.len != 1 {
|
||||||
|
// return error("couldn't parse zerodb version.\n${res.output}")
|
||||||
|
// }
|
||||||
|
// if texttools.version(version) == texttools.version(r[0]) {
|
||||||
|
// return true
|
||||||
|
// }
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//get the Upload List of the files
|
||||||
|
fn ulist_get() !ulist.UList {
|
||||||
|
//optionally build a UList which is all paths which are result of building, is then used e.g. in upload
|
||||||
|
return ulist.UList{}
|
||||||
|
}
|
||||||
|
|
||||||
|
//uploads to S3 server if configured
|
||||||
|
fn upload() ! {
|
||||||
|
// installers.upload(
|
||||||
|
// cmdname: 'zerodb'
|
||||||
|
// source: '${gitpath}/target/x86_64-unknown-linux-musl/release/zerodb'
|
||||||
|
// )!
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn install() ! {
|
||||||
|
console.print_header('install zerodb')
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// mut url := ''
|
||||||
|
// if osal.is_linux_arm() {
|
||||||
|
// url = 'https://github.com/zerodb-dev/zerodb/releases/download/v${version}/zerodb_${version}_linux_arm64.tar.gz'
|
||||||
|
// } else if osal.is_linux_intel() {
|
||||||
|
// url = 'https://github.com/zerodb-dev/zerodb/releases/download/v${version}/zerodb_${version}_linux_amd64.tar.gz'
|
||||||
|
// } else if osal.is_osx_arm() {
|
||||||
|
// url = 'https://github.com/zerodb-dev/zerodb/releases/download/v${version}/zerodb_${version}_darwin_arm64.tar.gz'
|
||||||
|
// } else if osal.is_osx_intel() {
|
||||||
|
// url = 'https://github.com/zerodb-dev/zerodb/releases/download/v${version}/zerodb_${version}_darwin_amd64.tar.gz'
|
||||||
|
// } else {
|
||||||
|
// return error('unsported platform')
|
||||||
|
// }
|
||||||
|
|
||||||
|
// mut dest := osal.download(
|
||||||
|
// url: url
|
||||||
|
// minsize_kb: 9000
|
||||||
|
// expand_dir: '/tmp/zerodb'
|
||||||
|
// )!
|
||||||
|
|
||||||
|
// //dest.moveup_single_subdir()!
|
||||||
|
|
||||||
|
// mut binpath := dest.file_get('zerodb')!
|
||||||
|
// osal.cmd_add(
|
||||||
|
// cmdname: 'zerodb'
|
||||||
|
// source: binpath.path
|
||||||
|
// )!
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build() ! {
|
||||||
|
//url := 'https://github.com/threefoldtech/zerodb'
|
||||||
|
|
||||||
|
// make sure we install base on the node
|
||||||
|
// if osal.platform() != .ubuntu {
|
||||||
|
// return error('only support ubuntu for now')
|
||||||
|
// }
|
||||||
|
// golang.install()!
|
||||||
|
|
||||||
|
// console.print_header('build zerodb')
|
||||||
|
|
||||||
|
// gitpath := gittools.get_repo(coderoot: '/tmp/builder', url: url, reset: true, pull: true)!
|
||||||
|
|
||||||
|
// cmd := '
|
||||||
|
// cd ${gitpath}
|
||||||
|
// source ~/.cargo/env
|
||||||
|
// exit 1 #todo
|
||||||
|
// '
|
||||||
|
// osal.execute_stdout(cmd)!
|
||||||
|
//
|
||||||
|
// //now copy to the default bin path
|
||||||
|
// mut binpath := dest.file_get('...')!
|
||||||
|
// adds it to path
|
||||||
|
// osal.cmd_add(
|
||||||
|
// cmdname: 'griddriver2'
|
||||||
|
// source: binpath.path
|
||||||
|
// )!
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn destroy() ! {
|
||||||
|
|
||||||
|
// mut systemdfactory := systemd.new()!
|
||||||
|
// systemdfactory.destroy("zinit")!
|
||||||
|
|
||||||
|
// osal.process_kill_recursive(name:'zinit')!
|
||||||
|
// osal.cmd_delete('zinit')!
|
||||||
|
|
||||||
|
// osal.package_remove('
|
||||||
|
// podman
|
||||||
|
// conmon
|
||||||
|
// buildah
|
||||||
|
// skopeo
|
||||||
|
// runc
|
||||||
|
// ')!
|
||||||
|
|
||||||
|
// //will remove all paths where go/bin is found
|
||||||
|
// osal.profile_path_add_remove(paths2delete:"go/bin")!
|
||||||
|
|
||||||
|
// osal.rm("
|
||||||
|
// podman
|
||||||
|
// conmon
|
||||||
|
// buildah
|
||||||
|
// skopeo
|
||||||
|
// runc
|
||||||
|
// /var/lib/containers
|
||||||
|
// /var/lib/podman
|
||||||
|
// /var/lib/buildah
|
||||||
|
// /tmp/podman
|
||||||
|
// /tmp/conmon
|
||||||
|
// ")!
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
160
lib/installers/db/zerodb/zerodb_factory_.v
Normal file
160
lib/installers/db/zerodb/zerodb_factory_.v
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
|
||||||
|
module zerodb
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
|
import time
|
||||||
|
|
||||||
|
__global (
|
||||||
|
zerodb_global map[string]&ZeroDB
|
||||||
|
zerodb_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&ZeroDB {
|
||||||
|
return &ZeroDB{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
|
// unknown
|
||||||
|
// screen
|
||||||
|
// zinit
|
||||||
|
// tmux
|
||||||
|
// systemd
|
||||||
|
match cat{
|
||||||
|
.zinit{
|
||||||
|
console.print_debug("startupmanager: zinit")
|
||||||
|
return startupmanager.get(cat:.zinit)!
|
||||||
|
}
|
||||||
|
.systemd{
|
||||||
|
console.print_debug("startupmanager: systemd")
|
||||||
|
return startupmanager.get(cat:.systemd)!
|
||||||
|
}else{
|
||||||
|
console.print_debug("startupmanager: auto")
|
||||||
|
return startupmanager.get()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) start() ! {
|
||||||
|
switch(self.name)
|
||||||
|
if self.running()!{
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
console.print_header('zerodb start')
|
||||||
|
|
||||||
|
if ! installed()!{
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
|
||||||
|
configure()!
|
||||||
|
|
||||||
|
start_pre()!
|
||||||
|
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
|
console.print_debug('starting zerodb with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
|
sm.new(zprocess)!
|
||||||
|
|
||||||
|
sm.start(zprocess.name)!
|
||||||
|
}
|
||||||
|
|
||||||
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('zerodb did not install properly.')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) install_start(model InstallArgs) ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.install(model)!
|
||||||
|
self.start()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) stop() ! {
|
||||||
|
switch(self.name)
|
||||||
|
stop_pre()!
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
sm.stop(zprocess.name)!
|
||||||
|
}
|
||||||
|
stop_post()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) restart() ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.stop()!
|
||||||
|
self.start()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) running() !bool {
|
||||||
|
switch(self.name)
|
||||||
|
|
||||||
|
//walk over the generic processes, if not running return
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
r:=sm.running(zprocess.name)!
|
||||||
|
if r==false{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return running()!
|
||||||
|
}
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct InstallArgs{
|
||||||
|
pub mut:
|
||||||
|
reset bool
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) install(model InstallArgs) ! {
|
||||||
|
switch(self.name)
|
||||||
|
if model.reset || (!installed()!) {
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) build() ! {
|
||||||
|
switch(self.name)
|
||||||
|
build()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroDB) destroy() ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.stop() or {}
|
||||||
|
destroy()!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for zerodb
|
||||||
|
pub fn switch(name string) {
|
||||||
|
zerodb_default = name
|
||||||
|
}
|
||||||
30
lib/installers/db/zerodb/zerodb_model.v
Normal file
30
lib/installers/db/zerodb/zerodb_model.v
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
module zerodb
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
$[heap]
|
||||||
|
pub struct ZeroDB {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ ZeroDB)!ZeroDB{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
//called before start if done
|
||||||
|
fn configure() ! {
|
||||||
|
//mut installer := get()!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
!!hero_code.generate_installer
|
||||||
|
name: "zerofs"
|
||||||
|
classname: "ZeroFS"
|
||||||
|
hasconfig: false
|
||||||
|
singleton: true
|
||||||
|
default: true
|
||||||
|
title: ""
|
||||||
|
templates: false
|
||||||
|
build: true
|
||||||
|
startupmanager: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
# rfs
|
# ZeroFS
|
||||||
|
|
||||||
more info see https://github.com/threefoldtech/rfs
|
more info see https://github.com/threefoldtech/rfs
|
||||||
|
|
||||||
|
//TODO: needs to be implemented
|
||||||
202
lib/installers/db/zerofs/zerofs_actions.v
Normal file
202
lib/installers/db/zerofs/zerofs_actions.v
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
module zerofs
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.osal
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
import freeflowuniverse.herolib.core.texttools
|
||||||
|
import freeflowuniverse.herolib.core.pathlib
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.osal.systemd
|
||||||
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.installers.ulist
|
||||||
|
import freeflowuniverse.herolib.installers.lang.golang
|
||||||
|
import freeflowuniverse.herolib.installers.lang.rust
|
||||||
|
import freeflowuniverse.herolib.installers.lang.python
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
fn startupcmd () ![]zinit.ZProcessNewArgs{
|
||||||
|
mut installer := get()!
|
||||||
|
mut res := []zinit.ZProcessNewArgs{}
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// res << zinit.ZProcessNewArgs{
|
||||||
|
// name: 'zerofs'
|
||||||
|
// cmd: 'zerofs server'
|
||||||
|
// env: {
|
||||||
|
// 'HOME': '/root'
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn running() !bool {
|
||||||
|
mut installer := get()!
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// this checks health of zerofs
|
||||||
|
// curl http://localhost:3333/api/v1/s --oauth2-bearer 1234 works
|
||||||
|
// url:='http://127.0.0.1:${cfg.port}/api/v1'
|
||||||
|
// mut conn := httpconnection.new(name: 'zerofs', url: url)!
|
||||||
|
|
||||||
|
// if cfg.secret.len > 0 {
|
||||||
|
// conn.default_header.add(.authorization, 'Bearer ${cfg.secret}')
|
||||||
|
// }
|
||||||
|
// conn.default_header.add(.content_type, 'application/json')
|
||||||
|
// console.print_debug("curl -X 'GET' '${url}'/tags --oauth2-bearer ${cfg.secret}")
|
||||||
|
// r := conn.get_json_dict(prefix: 'tags', debug: false) or {return false}
|
||||||
|
// println(r)
|
||||||
|
// if true{panic("ssss")}
|
||||||
|
// tags := r['Tags'] or { return false }
|
||||||
|
// console.print_debug(tags)
|
||||||
|
// console.print_debug('zerofs is answering.')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
fn start_pre()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn start_post()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn stop_pre()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn stop_post()!{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////// following actions are not specific to instance of the object
|
||||||
|
|
||||||
|
// checks if a certain version or above is installed
|
||||||
|
fn installed() !bool {
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// res := os.execute('${osal.profile_path_source_and()} zerofs version')
|
||||||
|
// if res.exit_code != 0 {
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
// r := res.output.split_into_lines().filter(it.trim_space().len > 0)
|
||||||
|
// if r.len != 1 {
|
||||||
|
// return error("couldn't parse zerofs version.\n${res.output}")
|
||||||
|
// }
|
||||||
|
// if texttools.version(version) == texttools.version(r[0]) {
|
||||||
|
// return true
|
||||||
|
// }
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
//get the Upload List of the files
|
||||||
|
fn ulist_get() !ulist.UList {
|
||||||
|
//optionally build a UList which is all paths which are result of building, is then used e.g. in upload
|
||||||
|
return ulist.UList{}
|
||||||
|
}
|
||||||
|
|
||||||
|
//uploads to S3 server if configured
|
||||||
|
fn upload() ! {
|
||||||
|
// installers.upload(
|
||||||
|
// cmdname: 'zerofs'
|
||||||
|
// source: '${gitpath}/target/x86_64-unknown-linux-musl/release/zerofs'
|
||||||
|
// )!
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn install() ! {
|
||||||
|
console.print_header('install zerofs')
|
||||||
|
//THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||||
|
// mut url := ''
|
||||||
|
// if osal.is_linux_arm() {
|
||||||
|
// url = 'https://github.com/zerofs-dev/zerofs/releases/download/v${version}/zerofs_${version}_linux_arm64.tar.gz'
|
||||||
|
// } else if osal.is_linux_intel() {
|
||||||
|
// url = 'https://github.com/zerofs-dev/zerofs/releases/download/v${version}/zerofs_${version}_linux_amd64.tar.gz'
|
||||||
|
// } else if osal.is_osx_arm() {
|
||||||
|
// url = 'https://github.com/zerofs-dev/zerofs/releases/download/v${version}/zerofs_${version}_darwin_arm64.tar.gz'
|
||||||
|
// } else if osal.is_osx_intel() {
|
||||||
|
// url = 'https://github.com/zerofs-dev/zerofs/releases/download/v${version}/zerofs_${version}_darwin_amd64.tar.gz'
|
||||||
|
// } else {
|
||||||
|
// return error('unsported platform')
|
||||||
|
// }
|
||||||
|
|
||||||
|
// mut dest := osal.download(
|
||||||
|
// url: url
|
||||||
|
// minsize_kb: 9000
|
||||||
|
// expand_dir: '/tmp/zerofs'
|
||||||
|
// )!
|
||||||
|
|
||||||
|
// //dest.moveup_single_subdir()!
|
||||||
|
|
||||||
|
// mut binpath := dest.file_get('zerofs')!
|
||||||
|
// osal.cmd_add(
|
||||||
|
// cmdname: 'zerofs'
|
||||||
|
// source: binpath.path
|
||||||
|
// )!
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build() ! {
|
||||||
|
//url := 'https://github.com/threefoldtech/zerofs'
|
||||||
|
|
||||||
|
// make sure we install base on the node
|
||||||
|
// if osal.platform() != .ubuntu {
|
||||||
|
// return error('only support ubuntu for now')
|
||||||
|
// }
|
||||||
|
// golang.install()!
|
||||||
|
|
||||||
|
// console.print_header('build zerofs')
|
||||||
|
|
||||||
|
// gitpath := gittools.get_repo(coderoot: '/tmp/builder', url: url, reset: true, pull: true)!
|
||||||
|
|
||||||
|
// cmd := '
|
||||||
|
// cd ${gitpath}
|
||||||
|
// source ~/.cargo/env
|
||||||
|
// exit 1 #todo
|
||||||
|
// '
|
||||||
|
// osal.execute_stdout(cmd)!
|
||||||
|
//
|
||||||
|
// //now copy to the default bin path
|
||||||
|
// mut binpath := dest.file_get('...')!
|
||||||
|
// adds it to path
|
||||||
|
// osal.cmd_add(
|
||||||
|
// cmdname: 'griddriver2'
|
||||||
|
// source: binpath.path
|
||||||
|
// )!
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn destroy() ! {
|
||||||
|
|
||||||
|
// mut systemdfactory := systemd.new()!
|
||||||
|
// systemdfactory.destroy("zinit")!
|
||||||
|
|
||||||
|
// osal.process_kill_recursive(name:'zinit')!
|
||||||
|
// osal.cmd_delete('zinit')!
|
||||||
|
|
||||||
|
// osal.package_remove('
|
||||||
|
// podman
|
||||||
|
// conmon
|
||||||
|
// buildah
|
||||||
|
// skopeo
|
||||||
|
// runc
|
||||||
|
// ')!
|
||||||
|
|
||||||
|
// //will remove all paths where go/bin is found
|
||||||
|
// osal.profile_path_add_remove(paths2delete:"go/bin")!
|
||||||
|
|
||||||
|
// osal.rm("
|
||||||
|
// podman
|
||||||
|
// conmon
|
||||||
|
// buildah
|
||||||
|
// skopeo
|
||||||
|
// runc
|
||||||
|
// /var/lib/containers
|
||||||
|
// /var/lib/podman
|
||||||
|
// /var/lib/buildah
|
||||||
|
// /tmp/podman
|
||||||
|
// /tmp/conmon
|
||||||
|
// ")!
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
160
lib/installers/db/zerofs/zerofs_factory_.v
Normal file
160
lib/installers/db/zerofs/zerofs_factory_.v
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
|
||||||
|
module zerofs
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.core.base
|
||||||
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
|
import time
|
||||||
|
|
||||||
|
__global (
|
||||||
|
zerofs_global map[string]&ZeroFS
|
||||||
|
zerofs_default string
|
||||||
|
)
|
||||||
|
|
||||||
|
/////////FACTORY
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct ArgsGet{
|
||||||
|
pub mut:
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(args_ ArgsGet) !&ZeroFS {
|
||||||
|
return &ZeroFS{}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
|
// unknown
|
||||||
|
// screen
|
||||||
|
// zinit
|
||||||
|
// tmux
|
||||||
|
// systemd
|
||||||
|
match cat{
|
||||||
|
.zinit{
|
||||||
|
console.print_debug("startupmanager: zinit")
|
||||||
|
return startupmanager.get(cat:.zinit)!
|
||||||
|
}
|
||||||
|
.systemd{
|
||||||
|
console.print_debug("startupmanager: systemd")
|
||||||
|
return startupmanager.get(cat:.systemd)!
|
||||||
|
}else{
|
||||||
|
console.print_debug("startupmanager: auto")
|
||||||
|
return startupmanager.get()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) start() ! {
|
||||||
|
switch(self.name)
|
||||||
|
if self.running()!{
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
console.print_header('zerofs start')
|
||||||
|
|
||||||
|
if ! installed()!{
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
|
||||||
|
configure()!
|
||||||
|
|
||||||
|
start_pre()!
|
||||||
|
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
|
console.print_debug('starting zerofs with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
|
sm.new(zprocess)!
|
||||||
|
|
||||||
|
sm.start(zprocess.name)!
|
||||||
|
}
|
||||||
|
|
||||||
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('zerofs did not install properly.')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) install_start(model InstallArgs) ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.install(model)!
|
||||||
|
self.start()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) stop() ! {
|
||||||
|
switch(self.name)
|
||||||
|
stop_pre()!
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
sm.stop(zprocess.name)!
|
||||||
|
}
|
||||||
|
stop_post()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) restart() ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.stop()!
|
||||||
|
self.start()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) running() !bool {
|
||||||
|
switch(self.name)
|
||||||
|
|
||||||
|
//walk over the generic processes, if not running return
|
||||||
|
for zprocess in startupcmd()!{
|
||||||
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
r:=sm.running(zprocess.name)!
|
||||||
|
if r==false{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return running()!
|
||||||
|
}
|
||||||
|
|
||||||
|
@[params]
|
||||||
|
pub struct InstallArgs{
|
||||||
|
pub mut:
|
||||||
|
reset bool
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) install(model InstallArgs) ! {
|
||||||
|
switch(self.name)
|
||||||
|
if model.reset || (!installed()!) {
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) build() ! {
|
||||||
|
switch(self.name)
|
||||||
|
build()!
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self ZeroFS) destroy() ! {
|
||||||
|
switch(self.name)
|
||||||
|
self.stop() or {}
|
||||||
|
destroy()!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//switch instance to be used for zerofs
|
||||||
|
pub fn switch(name string) {
|
||||||
|
zerofs_default = name
|
||||||
|
}
|
||||||
30
lib/installers/db/zerofs/zerofs_model.v
Normal file
30
lib/installers/db/zerofs/zerofs_model.v
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
module zerofs
|
||||||
|
import freeflowuniverse.herolib.data.paramsparser
|
||||||
|
import os
|
||||||
|
|
||||||
|
pub const version = '0.0.0'
|
||||||
|
const singleton = true
|
||||||
|
const default = true
|
||||||
|
|
||||||
|
|
||||||
|
//THIS THE THE SOURCE OF THE INFORMATION OF THIS FILE, HERE WE HAVE THE CONFIG OBJECT CONFIGURED AND MODELLED
|
||||||
|
$[heap]
|
||||||
|
pub struct ZeroFS {
|
||||||
|
pub mut:
|
||||||
|
name string = 'default'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn obj_init(obj_ ZeroFS)!ZeroFS{
|
||||||
|
//never call get here, only thing we can do here is work on object itself
|
||||||
|
mut obj:=obj_
|
||||||
|
panic("implement")
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
|
//called before start if done
|
||||||
|
fn configure() ! {
|
||||||
|
//mut installer := get()!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module golang
|
module golang
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
golang_global map[string]&GolangInstaller
|
golang_global map[string]&GolangInstaller
|
||||||
golang_default string
|
golang_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&GolangInstaller {
|
pub fn get(args_ ArgsGet) !&GolangInstaller {
|
||||||
return &GolangInstaller{}
|
return &GolangInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GolangInstaller) install(args InstallArgs) ! {
|
pub fn (mut self GolangInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GolangInstaller) build() ! {
|
pub fn (mut self GolangInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GolangInstaller) destroy() ! {
|
pub fn (mut self GolangInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for golang
|
|
||||||
|
|
||||||
|
//switch instance to be used for golang
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
golang_default = name
|
golang_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,173 +1,188 @@
|
|||||||
|
|
||||||
module rclone
|
module rclone
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
rclone_global map[string]&RClone
|
rclone_global map[string]&RClone
|
||||||
rclone_default string
|
rclone_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
fn args_get(args_ ArgsGet) ArgsGet {
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
mut args := args_
|
mut model:=args_
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = rclone_default
|
model.name = rclone_default
|
||||||
}
|
}
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = 'default'
|
model.name = "default"
|
||||||
}
|
}
|
||||||
return args
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&RClone {
|
pub fn get(args_ ArgsGet) !&RClone {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
if args.name !in rclone_global {
|
if !(model.name in rclone_global) {
|
||||||
if args.name == 'default' {
|
if model.name=="default"{
|
||||||
if !config_exists(args) {
|
if ! config_exists(model){
|
||||||
if default {
|
if default{
|
||||||
config_save(args)!
|
config_save(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config_load(args)!
|
config_load(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rclone_global[args.name] or {
|
return rclone_global[model.name] or {
|
||||||
println(rclone_global)
|
println(rclone_global)
|
||||||
panic('could not get config for rclone with name:${args.name}')
|
panic("could not get config for rclone with name:${model.name}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn config_exists(args_ ArgsGet) bool {
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context() or { panic('bug') }
|
mut context:=base.context() or { panic("bug") }
|
||||||
return context.hero_config_exists('rclone', args.name)
|
return context.hero_config_exists("rclone",model.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_load(args_ ArgsGet) ! {
|
fn config_load(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
mut heroscript := context.hero_config_get('rclone', args.name)!
|
mut heroscript := context.hero_config_get("rclone",model.name)!
|
||||||
play(heroscript: heroscript)!
|
play(heroscript:heroscript)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_save(args_ ArgsGet) ! {
|
fn config_save(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
context.hero_config_set('rclone', args.name, heroscript_default()!)!
|
context.hero_config_set("rclone",model.name,heroscript_default()!)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set(o RClone) ! {
|
|
||||||
mut o2 := obj_init(o)!
|
fn set(o RClone)! {
|
||||||
rclone_global[o.name] = &o2
|
mut o2:=obj_init(o)!
|
||||||
rclone_default = o.name
|
rclone_global[o.name] = &o2
|
||||||
|
rclone_default = o.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct PlayArgs {
|
pub struct PlayArgs {
|
||||||
pub mut:
|
pub mut:
|
||||||
heroscript string // if filled in then plbook will be made out of it
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
plbook ?playbook.PlayBook
|
plbook ?playbook.PlayBook
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn play(args_ PlayArgs) ! {
|
pub fn play(args_ PlayArgs) ! {
|
||||||
mut args := args_
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
if args.heroscript == '' {
|
if model.heroscript == "" {
|
||||||
args.heroscript = heroscript_default()!
|
model.heroscript = heroscript_default()!
|
||||||
}
|
}
|
||||||
mut plbook := args.plbook or { playbook.new(text: args.heroscript)! }
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'rclone.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action rclone.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mut install_actions := plbook.find(filter: 'rclone.configure')!
|
mut other_actions := plbook.find(filter: 'rclone.')!
|
||||||
if install_actions.len > 0 {
|
for other_action in other_actions {
|
||||||
for install_action in install_actions {
|
if other_action.name in ["destroy","install","build"]{
|
||||||
mut p := install_action.params
|
mut p := other_action.params
|
||||||
mycfg := cfg_play(p)!
|
reset:=p.get_default_false("reset")
|
||||||
console.print_debug('install action rclone.configure\n${mycfg}')
|
if other_action.name == "destroy" || reset{
|
||||||
set(mycfg)!
|
console.print_debug("install action rclone.destroy")
|
||||||
}
|
destroy()!
|
||||||
}
|
}
|
||||||
|
if other_action.name == "install"{
|
||||||
|
console.print_debug("install action rclone.install")
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mut other_actions := plbook.find(filter: 'rclone.')!
|
|
||||||
for other_action in other_actions {
|
|
||||||
if other_action.name in ['destroy', 'install', 'build'] {
|
|
||||||
mut p := other_action.params
|
|
||||||
reset := p.get_default_false('reset')
|
|
||||||
if other_action.name == 'destroy' || reset {
|
|
||||||
console.print_debug('install action rclone.destroy')
|
|
||||||
destroy()!
|
|
||||||
}
|
|
||||||
if other_action.name == 'install' {
|
|
||||||
console.print_debug('install action rclone.install')
|
|
||||||
install()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// load from disk and make sure is properly intialized
|
//load from disk and make sure is properly intialized
|
||||||
pub fn (mut self RClone) reload() ! {
|
pub fn (mut self RClone) reload() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self = obj_init(self)!
|
self=obj_init(self)!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self RClone) install(args InstallArgs) ! {
|
pub fn (mut self RClone) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn (mut self RClone) destroy() ! {
|
pub fn (mut self RClone) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for rclone
|
|
||||||
|
|
||||||
|
//switch instance to be used for rclone
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
rclone_default = name
|
rclone_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,153 +1,160 @@
|
|||||||
|
|
||||||
module zinit
|
module zinit
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
zinit_global map[string]&Zinit
|
zinit_global map[string]&Zinit
|
||||||
zinit_default string
|
zinit_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&Zinit {
|
pub fn get(args_ ArgsGet) !&Zinit {
|
||||||
return &Zinit{}
|
return &Zinit{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn (mut self Zinit) start() ! {
|
pub fn (mut self Zinit) start() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if self.running()! {
|
if self.running()!{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.print_header('zinit start')
|
console.print_header('zinit start')
|
||||||
|
|
||||||
if !installed()! {
|
if ! installed()!{
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
|
|
||||||
configure()!
|
configure()!
|
||||||
|
|
||||||
start_pre()!
|
start_pre()!
|
||||||
|
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
console.print_debug('starting zinit with ${zprocess.startuptype}...')
|
console.print_debug('starting zinit with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
sm.new(zprocess)!
|
sm.new(zprocess)!
|
||||||
|
|
||||||
sm.start(zprocess.name)!
|
sm.start(zprocess.name)!
|
||||||
}
|
}
|
||||||
|
|
||||||
start_post()!
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('zinit did not install properly.')
|
||||||
|
|
||||||
for _ in 0 .. 50 {
|
|
||||||
if self.running()! {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
time.sleep(100 * time.millisecond)
|
|
||||||
}
|
|
||||||
return error('zinit did not install properly.')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) install_start(args InstallArgs) ! {
|
pub fn (mut self Zinit) install_start(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.install(args)!
|
self.install(model)!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) stop() ! {
|
pub fn (mut self Zinit) stop() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
stop_pre()!
|
stop_pre()!
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
sm.stop(zprocess.name)!
|
sm.stop(zprocess.name)!
|
||||||
}
|
}
|
||||||
stop_post()!
|
stop_post()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) restart() ! {
|
pub fn (mut self Zinit) restart() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop()!
|
self.stop()!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) running() !bool {
|
pub fn (mut self Zinit) running() !bool {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
|
|
||||||
// walk over the generic processes, if not running return
|
//walk over the generic processes, if not running return
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
r := sm.running(zprocess.name)!
|
r:=sm.running(zprocess.name)!
|
||||||
if r == false {
|
if r==false{
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return running()!
|
return running()!
|
||||||
}
|
}
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) install(args InstallArgs) ! {
|
pub fn (mut self Zinit) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) build() ! {
|
pub fn (mut self Zinit) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Zinit) destroy() ! {
|
pub fn (mut self Zinit) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop() or {}
|
self.stop() or {}
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for zinit
|
|
||||||
|
|
||||||
|
//switch instance to be used for zinit
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
zinit_default = name
|
zinit_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module griddriver
|
module griddriver
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
griddriver_global map[string]&GridDriverInstaller
|
griddriver_global map[string]&GridDriverInstaller
|
||||||
griddriver_default string
|
griddriver_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&GridDriverInstaller {
|
pub fn get(args_ ArgsGet) !&GridDriverInstaller {
|
||||||
return &GridDriverInstaller{}
|
return &GridDriverInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GridDriverInstaller) install(args InstallArgs) ! {
|
pub fn (mut self GridDriverInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GridDriverInstaller) build() ! {
|
pub fn (mut self GridDriverInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self GridDriverInstaller) destroy() ! {
|
pub fn (mut self GridDriverInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for griddriver
|
|
||||||
|
|
||||||
|
//switch instance to be used for griddriver
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
griddriver_default = name
|
griddriver_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module buildah
|
module buildah
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
buildah_global map[string]&BuildahInstaller
|
buildah_global map[string]&BuildahInstaller
|
||||||
buildah_default string
|
buildah_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&BuildahInstaller {
|
pub fn get(args_ ArgsGet) !&BuildahInstaller {
|
||||||
return &BuildahInstaller{}
|
return &BuildahInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self BuildahInstaller) install(args InstallArgs) ! {
|
pub fn (mut self BuildahInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self BuildahInstaller) build() ! {
|
pub fn (mut self BuildahInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self BuildahInstaller) destroy() ! {
|
pub fn (mut self BuildahInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for buildah
|
|
||||||
|
|
||||||
|
//switch instance to be used for buildah
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
buildah_default = name
|
buildah_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module cloudhypervisor
|
module cloudhypervisor
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
cloudhypervisor_global map[string]&CloudHypervisor
|
cloudhypervisor_global map[string]&CloudHypervisor
|
||||||
cloudhypervisor_default string
|
cloudhypervisor_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&CloudHypervisor {
|
pub fn get(args_ ArgsGet) !&CloudHypervisor {
|
||||||
return &CloudHypervisor{}
|
return &CloudHypervisor{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CloudHypervisor) install(args InstallArgs) ! {
|
pub fn (mut self CloudHypervisor) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CloudHypervisor) build() ! {
|
pub fn (mut self CloudHypervisor) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CloudHypervisor) destroy() ! {
|
pub fn (mut self CloudHypervisor) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for cloudhypervisor
|
|
||||||
|
|
||||||
|
//switch instance to be used for cloudhypervisor
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
cloudhypervisor_default = name
|
cloudhypervisor_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,74 +1,82 @@
|
|||||||
|
|
||||||
module pacman
|
module pacman
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
pacman_global map[string]&PacmanInstaller
|
pacman_global map[string]&PacmanInstaller
|
||||||
pacman_default string
|
pacman_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&PacmanInstaller {
|
pub fn get(args_ ArgsGet) !&PacmanInstaller {
|
||||||
return &PacmanInstaller{}
|
return &PacmanInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self PacmanInstaller) install(args InstallArgs) ! {
|
pub fn (mut self PacmanInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn (mut self PacmanInstaller) destroy() ! {
|
pub fn (mut self PacmanInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for pacman
|
|
||||||
|
|
||||||
|
//switch instance to be used for pacman
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
pacman_default = name
|
pacman_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module podman
|
module podman
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
podman_global map[string]&PodmanInstaller
|
podman_global map[string]&PodmanInstaller
|
||||||
podman_default string
|
podman_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&PodmanInstaller {
|
pub fn get(args_ ArgsGet) !&PodmanInstaller {
|
||||||
return &PodmanInstaller{}
|
return &PodmanInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self PodmanInstaller) install(args InstallArgs) ! {
|
pub fn (mut self PodmanInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self PodmanInstaller) build() ! {
|
pub fn (mut self PodmanInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self PodmanInstaller) destroy() ! {
|
pub fn (mut self PodmanInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for podman
|
|
||||||
|
|
||||||
|
//switch instance to be used for podman
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
podman_default = name
|
podman_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module youki
|
module youki
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
youki_global map[string]&YoukiInstaller
|
youki_global map[string]&YoukiInstaller
|
||||||
youki_default string
|
youki_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&YoukiInstaller {
|
pub fn get(args_ ArgsGet) !&YoukiInstaller {
|
||||||
return &YoukiInstaller{}
|
return &YoukiInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self YoukiInstaller) install(args InstallArgs) ! {
|
pub fn (mut self YoukiInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self YoukiInstaller) build() ! {
|
pub fn (mut self YoukiInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self YoukiInstaller) destroy() ! {
|
pub fn (mut self YoukiInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for youki
|
|
||||||
|
|
||||||
|
//switch instance to be used for youki
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
youki_default = name
|
youki_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,266 +1,285 @@
|
|||||||
|
|
||||||
module caddy
|
module caddy
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
caddy_global map[string]&CaddyServer
|
caddy_global map[string]&CaddyServer
|
||||||
caddy_default string
|
caddy_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
fn args_get(args_ ArgsGet) ArgsGet {
|
fn args_get (args_ ArgsGet) ArgsGet {
|
||||||
mut args := args_
|
mut model:=args_
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = caddy_default
|
model.name = caddy_default
|
||||||
}
|
}
|
||||||
if args.name == '' {
|
if model.name == ""{
|
||||||
args.name = 'default'
|
model.name = "default"
|
||||||
}
|
}
|
||||||
return args
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&CaddyServer {
|
pub fn get(args_ ArgsGet) !&CaddyServer {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
if args.name !in caddy_global {
|
if !(model.name in caddy_global) {
|
||||||
if args.name == 'default' {
|
if model.name=="default"{
|
||||||
if !config_exists(args) {
|
if ! config_exists(model){
|
||||||
if default {
|
if default{
|
||||||
config_save(args)!
|
config_save(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config_load(args)!
|
config_load(model)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return caddy_global[args.name] or {
|
return caddy_global[model.name] or {
|
||||||
println(caddy_global)
|
println(caddy_global)
|
||||||
panic('could not get config for caddy with name:${args.name}')
|
panic("could not get config for caddy with name:${model.name}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fn config_exists(args_ ArgsGet) bool {
|
fn config_exists(args_ ArgsGet) bool {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context() or { panic('bug') }
|
mut context:=base.context() or { panic("bug") }
|
||||||
return context.hero_config_exists('caddy', args.name)
|
return context.hero_config_exists("caddy",model.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_load(args_ ArgsGet) ! {
|
fn config_load(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
mut heroscript := context.hero_config_get('caddy', args.name)!
|
mut heroscript := context.hero_config_get("caddy",model.name)!
|
||||||
play(heroscript: heroscript)!
|
play(heroscript:heroscript)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn config_save(args_ ArgsGet) ! {
|
fn config_save(args_ ArgsGet) ! {
|
||||||
mut args := args_get(args_)
|
mut model := args_get(args_)
|
||||||
mut context := base.context()!
|
mut context:=base.context()!
|
||||||
context.hero_config_set('caddy', args.name, heroscript_default()!)!
|
context.hero_config_set("caddy",model.name,heroscript_default()!)!
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set(o CaddyServer) ! {
|
|
||||||
mut o2 := obj_init(o)!
|
fn set(o CaddyServer)! {
|
||||||
caddy_global[o.name] = &o2
|
mut o2:=obj_init(o)!
|
||||||
caddy_default = o.name
|
caddy_global[o.name] = &o2
|
||||||
|
caddy_default = o.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct PlayArgs {
|
pub struct PlayArgs {
|
||||||
pub mut:
|
pub mut:
|
||||||
heroscript string // if filled in then plbook will be made out of it
|
heroscript string //if filled in then plbook will be made out of it
|
||||||
plbook ?playbook.PlayBook
|
plbook ?playbook.PlayBook
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn play(args_ PlayArgs) ! {
|
pub fn play(args_ PlayArgs) ! {
|
||||||
mut args := args_
|
|
||||||
|
mut model:=args_
|
||||||
|
|
||||||
if args.heroscript == '' {
|
if model.heroscript == "" {
|
||||||
args.heroscript = heroscript_default()!
|
model.heroscript = heroscript_default()!
|
||||||
}
|
}
|
||||||
mut plbook := args.plbook or { playbook.new(text: args.heroscript)! }
|
mut plbook := model.plbook or {
|
||||||
|
playbook.new(text: model.heroscript)!
|
||||||
|
}
|
||||||
|
|
||||||
|
mut install_actions := plbook.find(filter: 'caddy.configure')!
|
||||||
|
if install_actions.len > 0 {
|
||||||
|
for install_action in install_actions {
|
||||||
|
mut p := install_action.params
|
||||||
|
mycfg:=cfg_play(p)!
|
||||||
|
console.print_debug("install action caddy.configure\n${mycfg}")
|
||||||
|
set(mycfg)!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mut install_actions := plbook.find(filter: 'caddy.configure')!
|
mut other_actions := plbook.find(filter: 'caddy.')!
|
||||||
if install_actions.len > 0 {
|
for other_action in other_actions {
|
||||||
for install_action in install_actions {
|
if other_action.name in ["destroy","install","build"]{
|
||||||
mut p := install_action.params
|
mut p := other_action.params
|
||||||
mycfg := cfg_play(p)!
|
reset:=p.get_default_false("reset")
|
||||||
console.print_debug('install action caddy.configure\n${mycfg}')
|
if other_action.name == "destroy" || reset{
|
||||||
set(mycfg)!
|
console.print_debug("install action caddy.destroy")
|
||||||
}
|
destroy()!
|
||||||
}
|
}
|
||||||
|
if other_action.name == "install"{
|
||||||
|
console.print_debug("install action caddy.install")
|
||||||
|
install()!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if other_action.name in ["start","stop","restart"]{
|
||||||
|
mut p := other_action.params
|
||||||
|
name := p.get('name')!
|
||||||
|
mut caddy_obj:=get(name:name)!
|
||||||
|
console.print_debug("action object:\n${caddy_obj}")
|
||||||
|
if other_action.name == "start"{
|
||||||
|
console.print_debug("install action caddy.${other_action.name}")
|
||||||
|
caddy_obj.start()!
|
||||||
|
}
|
||||||
|
|
||||||
mut other_actions := plbook.find(filter: 'caddy.')!
|
if other_action.name == "stop"{
|
||||||
for other_action in other_actions {
|
console.print_debug("install action caddy.${other_action.name}")
|
||||||
if other_action.name in ['destroy', 'install', 'build'] {
|
caddy_obj.stop()!
|
||||||
mut p := other_action.params
|
}
|
||||||
reset := p.get_default_false('reset')
|
if other_action.name == "restart"{
|
||||||
if other_action.name == 'destroy' || reset {
|
console.print_debug("install action caddy.${other_action.name}")
|
||||||
console.print_debug('install action caddy.destroy')
|
caddy_obj.restart()!
|
||||||
destroy()!
|
}
|
||||||
}
|
}
|
||||||
if other_action.name == 'install' {
|
}
|
||||||
console.print_debug('install action caddy.install')
|
|
||||||
install()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if other_action.name in ['start', 'stop', 'restart'] {
|
|
||||||
mut p := other_action.params
|
|
||||||
name := p.get('name')!
|
|
||||||
mut caddy_obj := get(name: name)!
|
|
||||||
console.print_debug('action object:\n${caddy_obj}')
|
|
||||||
if other_action.name == 'start' {
|
|
||||||
console.print_debug('install action caddy.${other_action.name}')
|
|
||||||
caddy_obj.start()!
|
|
||||||
}
|
|
||||||
|
|
||||||
if other_action.name == 'stop' {
|
|
||||||
console.print_debug('install action caddy.${other_action.name}')
|
|
||||||
caddy_obj.stop()!
|
|
||||||
}
|
|
||||||
if other_action.name == 'restart' {
|
|
||||||
console.print_debug('install action caddy.${other_action.name}')
|
|
||||||
caddy_obj.restart()!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// load from disk and make sure is properly intialized
|
//load from disk and make sure is properly intialized
|
||||||
pub fn (mut self CaddyServer) reload() ! {
|
pub fn (mut self CaddyServer) reload() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self = obj_init(self)!
|
self=obj_init(self)!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) start() ! {
|
pub fn (mut self CaddyServer) start() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if self.running()! {
|
if self.running()!{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.print_header('caddy start')
|
console.print_header('caddy start')
|
||||||
|
|
||||||
if !installed()! {
|
if ! installed()!{
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
|
|
||||||
configure()!
|
configure()!
|
||||||
|
|
||||||
start_pre()!
|
start_pre()!
|
||||||
|
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
|
|
||||||
console.print_debug('starting caddy with ${zprocess.startuptype}...')
|
console.print_debug('starting caddy with ${zprocess.startuptype}...')
|
||||||
|
|
||||||
sm.new(zprocess)!
|
sm.new(zprocess)!
|
||||||
|
|
||||||
sm.start(zprocess.name)!
|
sm.start(zprocess.name)!
|
||||||
}
|
}
|
||||||
|
|
||||||
start_post()!
|
start_post()!
|
||||||
|
|
||||||
|
for _ in 0 .. 50 {
|
||||||
|
if self.running()! {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.sleep(100 * time.millisecond)
|
||||||
|
}
|
||||||
|
return error('caddy did not install properly.')
|
||||||
|
|
||||||
for _ in 0 .. 50 {
|
|
||||||
if self.running()! {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
time.sleep(100 * time.millisecond)
|
|
||||||
}
|
|
||||||
return error('caddy did not install properly.')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) install_start(args InstallArgs) ! {
|
pub fn (mut self CaddyServer) install_start(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.install(args)!
|
self.install(model)!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) stop() ! {
|
pub fn (mut self CaddyServer) stop() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
stop_pre()!
|
stop_pre()!
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
sm.stop(zprocess.name)!
|
sm.stop(zprocess.name)!
|
||||||
}
|
}
|
||||||
stop_post()!
|
stop_post()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) restart() ! {
|
pub fn (mut self CaddyServer) restart() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop()!
|
self.stop()!
|
||||||
self.start()!
|
self.start()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) running() !bool {
|
pub fn (mut self CaddyServer) running() !bool {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
|
|
||||||
// walk over the generic processes, if not running return
|
//walk over the generic processes, if not running return
|
||||||
for zprocess in startupcmd()! {
|
for zprocess in startupcmd()!{
|
||||||
mut sm := startupmanager_get(zprocess.startuptype)!
|
mut sm:=startupmanager_get(zprocess.startuptype)!
|
||||||
r := sm.running(zprocess.name)!
|
r:=sm.running(zprocess.name)!
|
||||||
if r == false {
|
if r==false{
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return running()!
|
return running()!
|
||||||
}
|
}
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) install(args InstallArgs) ! {
|
pub fn (mut self CaddyServer) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut self CaddyServer) build() ! {
|
||||||
|
switch(self.name)
|
||||||
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self CaddyServer) destroy() ! {
|
pub fn (mut self CaddyServer) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
self.stop() or {}
|
self.stop() or {}
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for caddy
|
|
||||||
|
|
||||||
|
//switch instance to be used for caddy
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
caddy_default = name
|
caddy_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,74 +1,82 @@
|
|||||||
|
|
||||||
module tailwind
|
module tailwind
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
tailwind_global map[string]&Tailwind
|
tailwind_global map[string]&Tailwind
|
||||||
tailwind_default string
|
tailwind_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&Tailwind {
|
pub fn get(args_ ArgsGet) !&Tailwind {
|
||||||
return &Tailwind{}
|
return &Tailwind{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self Tailwind) install(args InstallArgs) ! {
|
pub fn (mut self Tailwind) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn (mut self Tailwind) destroy() ! {
|
pub fn (mut self Tailwind) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for tailwind
|
|
||||||
|
|
||||||
|
//switch instance to be used for tailwind
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
tailwind_default = name
|
tailwind_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +1,86 @@
|
|||||||
|
|
||||||
module zola
|
module zola
|
||||||
|
|
||||||
import freeflowuniverse.herolib.core.base
|
import freeflowuniverse.herolib.core.base
|
||||||
import freeflowuniverse.herolib.core.playbook
|
import freeflowuniverse.herolib.core.playbook
|
||||||
|
import freeflowuniverse.herolib.ui.console
|
||||||
|
|
||||||
import freeflowuniverse.herolib.sysadmin.startupmanager
|
import freeflowuniverse.herolib.sysadmin.startupmanager
|
||||||
import freeflowuniverse.herolib.osal.zinit
|
import freeflowuniverse.herolib.osal.zinit
|
||||||
import freeflowuniverse.herolib.ui.console
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
__global (
|
__global (
|
||||||
zola_global map[string]&ZolaInstaller
|
zola_global map[string]&ZolaInstaller
|
||||||
zola_default string
|
zola_default string
|
||||||
)
|
)
|
||||||
|
|
||||||
/////////FACTORY
|
/////////FACTORY
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct ArgsGet {
|
pub struct ArgsGet{
|
||||||
pub mut:
|
pub mut:
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(args_ ArgsGet) !&ZolaInstaller {
|
pub fn get(args_ ArgsGet) !&ZolaInstaller {
|
||||||
return &ZolaInstaller{}
|
return &ZolaInstaller{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
//////////////////////////# LIVE CYCLE MANAGEMENT FOR INSTALLERS ///////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
fn startupmanager_get(cat zinit.StartupManagerType) !startupmanager.StartupManager {
|
||||||
// unknown
|
// unknown
|
||||||
// screen
|
// screen
|
||||||
// zinit
|
// zinit
|
||||||
// tmux
|
// tmux
|
||||||
// systemd
|
// systemd
|
||||||
match cat {
|
match cat{
|
||||||
.zinit {
|
.zinit{
|
||||||
console.print_debug('startupmanager: zinit')
|
console.print_debug("startupmanager: zinit")
|
||||||
return startupmanager.get(cat: .zinit)!
|
return startupmanager.get(cat:.zinit)!
|
||||||
}
|
}
|
||||||
.systemd {
|
.systemd{
|
||||||
console.print_debug('startupmanager: systemd')
|
console.print_debug("startupmanager: systemd")
|
||||||
return startupmanager.get(cat: .systemd)!
|
return startupmanager.get(cat:.systemd)!
|
||||||
}
|
}else{
|
||||||
else {
|
console.print_debug("startupmanager: auto")
|
||||||
console.print_debug('startupmanager: auto')
|
return startupmanager.get()!
|
||||||
return startupmanager.get()!
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@[params]
|
@[params]
|
||||||
pub struct InstallArgs {
|
pub struct InstallArgs{
|
||||||
pub mut:
|
pub mut:
|
||||||
reset bool
|
reset bool
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self ZolaInstaller) install(args InstallArgs) ! {
|
pub fn (mut self ZolaInstaller) install(model InstallArgs) ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
if args.reset || (!installed()!) {
|
if model.reset || (!installed()!) {
|
||||||
install()!
|
install()!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self ZolaInstaller) build() ! {
|
pub fn (mut self ZolaInstaller) build() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
build()!
|
build()!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut self ZolaInstaller) destroy() ! {
|
pub fn (mut self ZolaInstaller) destroy() ! {
|
||||||
switch(self.name)
|
switch(self.name)
|
||||||
destroy()!
|
destroy()!
|
||||||
}
|
}
|
||||||
|
|
||||||
// switch instance to be used for zola
|
|
||||||
|
|
||||||
|
//switch instance to be used for zola
|
||||||
pub fn switch(name string) {
|
pub fn switch(name string) {
|
||||||
zola_default = name
|
zola_default = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub fn (mut c UIConsole) ask_question(args QuestionArgs) !string {
|
|||||||
cprintln(foreground: .red, text: args.warning + '\n')
|
cprintln(foreground: .red, text: args.warning + '\n')
|
||||||
}
|
}
|
||||||
if question == '' {
|
if question == '' {
|
||||||
question = 'Please provide answer'
|
question = 'Please provide answer default: ${args.default}'
|
||||||
}
|
}
|
||||||
if args.default.len > 0 {
|
if args.default.len > 0 {
|
||||||
question += ' (${args.default}) '
|
question += ' (${args.default}) '
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ pub fn (mut c UIConsole) ask_yesno(args YesNoArgs) !bool {
|
|||||||
cprintln(foreground: .red, text: args.warning + '\n')
|
cprintln(foreground: .red, text: args.warning + '\n')
|
||||||
}
|
}
|
||||||
if question == '' {
|
if question == '' {
|
||||||
question = 'Yes or No, default is Yes (just press enter).'
|
question = 'Yes or No, default is ${args.default} (just press enter).'
|
||||||
}
|
}
|
||||||
print_debug('${question} (y/n) : ')
|
print_debug('${question} (y/n) : ')
|
||||||
choice := os.get_raw_line().trim(' \n').to_lower()
|
choice := os.get_raw_line().trim(' \n').to_lower()
|
||||||
|
|||||||
Reference in New Issue
Block a user