diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 0f82e93..bcb3849 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -5,13 +5,10 @@ import ( "os" ) -var ( - bin_name = os.Args[0] -) - func main() { + bin_name := os.Args[0] fmt.Printf("%s: Start process\n", bin_name) - os.Exit(0) + os.Exit(5) } diff --git a/cmd/db/main.go b/cmd/db/main.go index 765cad0..0c6c1ba 100644 --- a/cmd/db/main.go +++ b/cmd/db/main.go @@ -1,7 +1,6 @@ package main import ( - "flag" "fmt" "os" "strings" @@ -60,7 +59,9 @@ func AddInDB(dbName string, line string) error { func DeleteInDB(dbName, id string) error { key := []byte(dbName + "/" + id + "/bash") - return kv.DeleteInDB(DB, string(key)) + return DB.Update(func(txn *badger.Txn) error { + return txn.Delete(key) + }) } func CountInDB(dbName, id string) int { @@ -124,13 +125,7 @@ func printDB() { } func main() { - conf_file := flag.String("conf", "/etc/two/agent.yml", "configuration file") - - flag.Parse() - - args := flag.Args() - - conf, err := configuration.LoadConfig(*conf_file) + conf, err := configuration.LoadConfig("/etc/two/agent.yml") if err != nil { fmt.Println(err) return @@ -141,53 +136,53 @@ func main() { }) defer DB.Close() - if len(args) < 1 { + if len(os.Args) < 2 { fmt.Println("Usage: db [args...]") return } - cmd := args[0] + cmd := os.Args[1] switch cmd { case "check_in_db": - if len(args) != 3 { + if len(os.Args) != 4 { fmt.Println("Usage: check_in_db ") os.Exit(1) } - ret := CheckInDB(args[1], args[2]) + ret := CheckInDB(os.Args[2], os.Args[3]) os.Exit(ret) case "add_in_db": - if len(args) < 3 { + if len(os.Args) < 4 { fmt.Println("Usage: add_in_db ") os.Exit(1) } - line := strings.Join(args[2:], ";") - if err := AddInDB(args[1], line); err != nil { + line := strings.Join(os.Args[3:], ";") + if err := AddInDB(os.Args[2], line); err != nil { fmt.Println("Error:", err) os.Exit(1) } case "delete_in_db": - if len(args) != 3 { + if len(os.Args) != 4 { fmt.Println("Usage: delete_in_db ") os.Exit(1) } - if err := DeleteInDB(args[1], args[2]); err != nil { + if err := DeleteInDB(os.Args[2], os.Args[3]); err != nil { fmt.Println("Error:", err) os.Exit(1) } case "count_in_db": - if len(args) != 3 { + if len(os.Args) != 4 { fmt.Println("Usage: count_in_db ") os.Exit(1) } - count := CountInDB(args[1], args[2]) + count := CountInDB(os.Args[2], os.Args[3]) fmt.Println(count) case "get_from_db": - if len(args) != 3 { + if len(os.Args) != 4 { fmt.Println("Usage: get_from_db ") os.Exit(1) } - line, _ := GetFromDB(args[1], args[2]) + line, _ := GetFromDB(os.Args[2], os.Args[3]) fmt.Println(line) case "print": printDB() diff --git a/cmd/meta_cli/main.go b/cmd/meta_cli/main.go index 971c370..ce97286 100644 --- a/cmd/meta_cli/main.go +++ b/cmd/meta_cli/main.go @@ -3,12 +3,26 @@ package main import ( "flag" "fmt" + "os" + "strings" configuration "git.g3e.fr/syonad/two/internal/config/agent" - "git.g3e.fr/syonad/two/internal/load_db/nocloud" "git.g3e.fr/syonad/two/pkg/db/kv" + "github.com/dgraph-io/badger/v4" ) +var DB *badger.DB + +func AddInDB(dbName string, line string) error { + // ID = partie avant le premier ';' + id := strings.Split(line, ";")[0] + "/bash" + key := []byte(dbName + "/" + id) + + return DB.Update(func(txn *badger.Txn) error { + return txn.Set(key, []byte(line)) + }) +} + func main() { conf_file := flag.String("conf", "/etc/two/agent.yml", "configuration file") vm_name := flag.String("vm_name", "", "Nom de la vm") @@ -29,21 +43,12 @@ func main() { } fmt.Print(conf) - db := kv.InitDB(kv.Config{ + DB = kv.InitDB(kv.Config{ Path: conf.Database.Path, }) - defer db.Close() + defer DB.Close() - if *start { - nocloud.LoadNcCloudInDB(nocloud.Config{ - VpcName: *vpc, - Name: *vm_name, - BindIP: *bind_ip, - BindPort: *bind_port, - Password: *password, - SSHKEY: *ssh_key, - }, db) - } else if *stop { - nocloud.UnLoadNoCloudInDB(*vm_name, db) - } + fmt.Printf("conf metadata for %s\n - this key %s\n - this password %s\n", *vm_name, *ssh_key, *password) + + os.Exit(0) } diff --git a/pkg/db/kv/deleteInDB.go b/pkg/db/kv/deleteInDB.go index 36d8669..fe8398e 100644 --- a/pkg/db/kv/deleteInDB.go +++ b/pkg/db/kv/deleteInDB.go @@ -1,44 +1,11 @@ package kv import ( - "fmt" - "log" - "github.com/dgraph-io/badger/v4" ) -func deleteKey(db *badger.DB, key string) error { +func DeleteInDB(db *badger.DB, key string) error { return db.Update(func(txn *badger.Txn) error { return txn.Delete([]byte(key)) }) } - -func DeleteInDB(db *badger.DB, key string) error { - - prefix := []byte(key + "/") - - err := db.View(func(txn *badger.Txn) error { - opts := badger.DefaultIteratorOptions - opts.PrefetchValues = false - - it := txn.NewIterator(opts) - defer it.Close() - - for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() { - item := it.Item() - key := item.Key() - - k := append([]byte{}, key...) - fmt.Println(string(k)) - if err := deleteKey(db, string(k)); err != nil { - return err - } - } - return nil - }) - if err != nil { - log.Fatal(err) - } - - return deleteKey(db, key) -}