Files
herolib/examples/threefold/grid/deployment_state.vsh
2025-01-31 15:39:44 +03:00

45 lines
1.2 KiB
GLSL

#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
struct DeploymentStateDB {
secret string // to encrypt symmetric
data map[string]string
}
struct DeploymentState {
name string
vms []VMDeployed
zdbs []ZDBDeployed
}
pub fn (mut db DeploymentStateDB) set(deployment_name string, key string, val string) ! {
// store e.g. \n separated list of all keys per deployment_name
// encrypt
db.data['${deployment_name}_${key}'] = val
}
pub fn (db DeploymentStateDB) get(deployment_name string, key string) !string {
return db.data['${deployment_name}_${key}'] or { return error('key not found') }
}
pub fn (mut db DeploymentStateDB) delete(deployment_name string, key string) ! {
db.data.delete('${deployment_name}_${key}')
}
pub fn (db DeploymentStateDB) keys(deployment_name string) ![]string {
mut keys := []string{}
for k, _ in db.data {
if k.starts_with('${deployment_name}_') {
keys << k.all_after('${deployment_name}_')
}
}
return keys
}
pub fn (db DeploymentStateDB) load(deployment_name string) !DeploymentState {
mut state := DeploymentState{
name: deployment_name
}
// Implementation would need to load VMs and ZDBs based on stored data
return state
}