Compare commits
No commits in common. "473e1d01087dfd811b7159928817024d57bffbd1" and "c1c93f96181a1b88f27549a3635f1c8214fc7205" have entirely different histories.
473e1d0108
...
c1c93f9618
14 changed files with 77 additions and 91 deletions
|
|
@ -32,7 +32,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
goos: [linux]
|
goos: [linux]
|
||||||
goarch: [amd64]
|
goarch: [amd64]
|
||||||
binaries: [db, metadata, metacli, agent]
|
binaries: [db, metadata, meta_cli, agent]
|
||||||
uses: ./.forgejo/workflows/build.yml
|
uses: ./.forgejo/workflows/build.yml
|
||||||
with:
|
with:
|
||||||
tag: ${{ needs.set-release-target.outputs.release_cible }}
|
tag: ${{ needs.set-release-target.outputs.release_cible }}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,9 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
configuration "git.g3e.fr/syonad/two/internal/config/agent"
|
configuration "git.g3e.fr/syonad/two/internal/config/agent"
|
||||||
"git.g3e.fr/syonad/two/internal/metadata"
|
"git.g3e.fr/syonad/two/internal/load_db/nocloud"
|
||||||
"git.g3e.fr/syonad/two/pkg/db/kv"
|
"git.g3e.fr/syonad/two/pkg/db/kv"
|
||||||
|
"git.g3e.fr/syonad/two/pkg/systemd"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
@ -19,15 +20,17 @@ func main() {
|
||||||
password := flag.String("pass", "", "password user")
|
password := flag.String("pass", "", "password user")
|
||||||
start := flag.Bool("start", false, "start metadata server")
|
start := flag.Bool("start", false, "start metadata server")
|
||||||
stop := flag.Bool("stop", false, "stop metadata server")
|
stop := flag.Bool("stop", false, "stop metadata server")
|
||||||
dryrun := flag.Bool("dryrun", false, "launch in dry node")
|
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
service, _ := systemd.New()
|
||||||
|
|
||||||
conf, err := configuration.LoadConfig(*conf_file)
|
conf, err := configuration.LoadConfig(*conf_file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
fmt.Print(conf)
|
||||||
|
|
||||||
db := kv.InitDB(kv.Config{
|
db := kv.InitDB(kv.Config{
|
||||||
Path: conf.Database.Path,
|
Path: conf.Database.Path,
|
||||||
|
|
@ -35,15 +38,17 @@ func main() {
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
if *start {
|
if *start {
|
||||||
metadata.StartMetadata(metadata.NoCloudConfig{
|
nocloud.LoadNcCloudInDB(nocloud.Config{
|
||||||
VpcName: *vpc,
|
VpcName: *vpc,
|
||||||
Name: *vm_name,
|
Name: *vm_name,
|
||||||
BindIP: *bind_ip,
|
BindIP: *bind_ip,
|
||||||
BindPort: *bind_port,
|
BindPort: *bind_port,
|
||||||
Password: *password,
|
Password: *password,
|
||||||
SSHKEY: *ssh_key,
|
SSHKEY: *ssh_key,
|
||||||
}, db, *dryrun)
|
}, db)
|
||||||
|
service.Start("metadata@" + *vm_name)
|
||||||
} else if *stop {
|
} else if *stop {
|
||||||
metadata.StopMetadata(*vm_name, db, *dryrun)
|
nocloud.UnLoadNoCloudInDB(*vm_name, db)
|
||||||
|
service.Stop("metadata@" + *vm_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -17,7 +17,7 @@ var (
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
metadata.StartServer(metadata.ServerConfig{
|
metadata.StartServer(metadata.Config{
|
||||||
Netns: *netns_name,
|
Netns: *netns_name,
|
||||||
Iface: *iface,
|
Iface: *iface,
|
||||||
Port: *port,
|
Port: *port,
|
||||||
|
|
|
||||||
50
internal/load_db/nocloud/render.go
Normal file
50
internal/load_db/nocloud/render.go
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
package nocloud
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"embed"
|
||||||
|
"text/template"
|
||||||
|
|
||||||
|
"git.g3e.fr/syonad/two/pkg/db/kv"
|
||||||
|
"github.com/dgraph-io/badger/v4"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed templates/*.tmpl
|
||||||
|
var templateFS embed.FS
|
||||||
|
|
||||||
|
func renderConfig(path string, cfg Config) (string, error) {
|
||||||
|
tpl, err := template.ParseFS(templateFS, path)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if err := tpl.Execute(&buf, cfg); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var DB *badger.DB
|
||||||
|
|
||||||
|
func LoadNcCloudInDB(config Config, db *badger.DB) {
|
||||||
|
meta_data, _ := renderConfig("templates/meta-data.tmpl", config)
|
||||||
|
user_data, _ := renderConfig("templates/user-data.tmpl", config)
|
||||||
|
network_config, _ := renderConfig("templates/network-config.tmpl", config)
|
||||||
|
vendor_data, _ := renderConfig("templates/vendor-data.tmpl", config)
|
||||||
|
|
||||||
|
DB = db
|
||||||
|
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/meta-data", meta_data)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/user-data", user_data)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/network-config", network_config)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/vendor-data", vendor_data)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/vpc", config.VpcName)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/bind_ip", config.BindIP)
|
||||||
|
kv.AddInDB(DB, "metadata/"+config.Name+"/bind_port", config.BindPort)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnLoadNoCloudInDB(vm_name string, db *badger.DB) {
|
||||||
|
kv.DeleteInDB(DB, "metadata/"+vm_name)
|
||||||
|
}
|
||||||
10
internal/load_db/nocloud/struct.go
Normal file
10
internal/load_db/nocloud/struct.go
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
package nocloud
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
VpcName string
|
||||||
|
BindIP string
|
||||||
|
BindPort string
|
||||||
|
Name string
|
||||||
|
Password string
|
||||||
|
SSHKEY string
|
||||||
|
}
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
package metadata
|
|
||||||
|
|
||||||
import (
|
|
||||||
"git.g3e.fr/syonad/two/pkg/systemd"
|
|
||||||
"github.com/dgraph-io/badger/v4"
|
|
||||||
)
|
|
||||||
|
|
||||||
func StartMetadata(config NoCloudConfig, db *badger.DB, dryrun bool) {
|
|
||||||
service, _ := systemd.New()
|
|
||||||
defer service.Close()
|
|
||||||
|
|
||||||
LoadNcCloudInDB(config, db)
|
|
||||||
if !dryrun {
|
|
||||||
service.Start("metadata@" + config.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func StopMetadata(vm_name string, db *badger.DB, dryrun bool) {
|
|
||||||
service, _ := systemd.New()
|
|
||||||
defer service.Close()
|
|
||||||
|
|
||||||
UnLoadNoCloudInDB(vm_name, db)
|
|
||||||
if !dryrun {
|
|
||||||
service.Stop("metadata@" + vm_name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
package metadata
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"embed"
|
|
||||||
"text/template"
|
|
||||||
|
|
||||||
"git.g3e.fr/syonad/two/pkg/db/kv"
|
|
||||||
"github.com/dgraph-io/badger/v4"
|
|
||||||
)
|
|
||||||
|
|
||||||
//go:embed templates/*.tmpl
|
|
||||||
var templateFS embed.FS
|
|
||||||
|
|
||||||
func RenderConfig(path string, cfg NoCloudConfig) (string, error) {
|
|
||||||
tpl, err := template.ParseFS(templateFS, path)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
var buf bytes.Buffer
|
|
||||||
if err := tpl.Execute(&buf, cfg); err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf.String(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func LoadNcCloudInDB(config NoCloudConfig, db *badger.DB) {
|
|
||||||
meta_data, _ := RenderConfig("templates/meta-data.tmpl", config)
|
|
||||||
user_data, _ := RenderConfig("templates/user-data.tmpl", config)
|
|
||||||
network_config, _ := RenderConfig("templates/network-config.tmpl", config)
|
|
||||||
vendor_data, _ := RenderConfig("templates/vendor-data.tmpl", config)
|
|
||||||
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/meta-data", meta_data)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/user-data", user_data)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/network-config", network_config)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/vendor-data", vendor_data)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/vpc", config.VpcName)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/bind_ip", config.BindIP)
|
|
||||||
kv.AddInDB(db, "metadata/"+config.Name+"/bind_port", config.BindPort)
|
|
||||||
}
|
|
||||||
|
|
||||||
func UnLoadNoCloudInDB(vm_name string, db *badger.DB) {
|
|
||||||
kv.DeleteInDB(db, "metadata/"+vm_name)
|
|
||||||
}
|
|
||||||
|
|
@ -23,7 +23,7 @@ func getIP(r *http.Request) string {
|
||||||
return ip
|
return ip
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFromDB(config ServerConfig) NoCloudData {
|
func getFromDB(config Config) NoCloudData {
|
||||||
var netns_name string
|
var netns_name string
|
||||||
var port int
|
var port int
|
||||||
var iface string
|
var iface string
|
||||||
|
|
@ -92,7 +92,7 @@ func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartServer(config ServerConfig) {
|
func StartServer(config Config) {
|
||||||
data = getFromDB(config)
|
data = getFromDB(config)
|
||||||
|
|
||||||
if data.NetNs != "" {
|
if data.NetNs != "" {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ type NoCloudData struct {
|
||||||
Port int
|
Port int
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServerConfig struct {
|
type Config struct {
|
||||||
Netns string
|
Netns string
|
||||||
File string
|
File string
|
||||||
Iface string
|
Iface string
|
||||||
|
|
@ -18,12 +18,3 @@ type ServerConfig struct {
|
||||||
ConfFile string
|
ConfFile string
|
||||||
VmName string
|
VmName string
|
||||||
}
|
}
|
||||||
|
|
||||||
type NoCloudConfig struct {
|
|
||||||
VpcName string
|
|
||||||
BindIP string
|
|
||||||
BindPort string
|
|
||||||
Name string
|
|
||||||
Password string
|
|
||||||
SSHKEY string
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package kv
|
package kv
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/dgraph-io/badger/v4"
|
"github.com/dgraph-io/badger/v4"
|
||||||
|
|
@ -28,6 +29,7 @@ func DeleteInDB(db *badger.DB, key string) error {
|
||||||
key := item.Key()
|
key := item.Key()
|
||||||
|
|
||||||
k := append([]byte{}, key...)
|
k := append([]byte{}, key...)
|
||||||
|
fmt.Println(string(k))
|
||||||
if err := deleteKey(db, string(k)); err != nil {
|
if err := deleteKey(db, string(k)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue