Files
herolib/lib/threefold/tfgrid3deployer/tfgrid3deployer_model.v

64 lines
1.4 KiB
V

module tfgrid3deployer
import freeflowuniverse.herolib.data.paramsparser
import os
pub const version = '1.0.0'
const singleton = false
const default = true
pub fn heroscript_default() !string {
ssh_key := os.getenv_opt('SSH_KEY') or { '' }
mnemonic := os.getenv_opt('TFGRID_MNEMONIC') or { '' }
network := os.getenv_opt('TFGRID_NETWORK') or { 'main' } // main,test,dev,qa
heroscript := "
!!tfgrid3deployer.configure name:'default'
ssh_key: '${ssh_key}'
mnemonic: '${mnemonic}'
network: ${network}
"
if ssh_key.len == 0 || mnemonic.len == 0 || network.len == 0 {
return error('please configure the tfgrid deployer or set SSH_KEY, TFGRID_MNEMONIC, and TFGRID_NETWORK.')
}
return heroscript
}
pub enum Network {
dev
main
test
qa
}
pub struct TFGridDeployer {
pub mut:
name string = 'default'
ssh_key string
mnemonic string
network Network
}
fn cfg_play(p paramsparser.Params) ! {
network_str := p.get_default('network', 'main')!
network := match network_str {
'dev' { Network.dev }
'test' { Network.test }
'qa' { Network.qa }
else { Network.main }
}
mut mycfg := TFGridDeployer{
ssh_key: p.get_default('ssh_key', '')!
mnemonic: p.get_default('mnemonic', '')!
network: network
}
set(mycfg)!
}
fn obj_init(obj_ TFGridDeployer) !TFGridDeployer {
// never call get here, only thing we can do here is work on object itself
mut obj := obj_
return obj
}