Compare commits

...

2 commits

Author SHA1 Message Date
bf00d74a26
f-15: fix: remove lock from db in readonly
All checks were successful
Pre Release Workflow / set-release-target (push) Successful in 1s
Pre Release Workflow / build (agent, amd64, linux) (push) Successful in 1m29s
Pre Release Workflow / build (db, amd64, linux) (push) Successful in 1m29s
Pre Release Workflow / build (dhcp, amd64, linux) (push) Successful in 1m25s
Pre Release Workflow / build (metacli, amd64, linux) (push) Successful in 1m28s
Pre Release Workflow / build (metadata, amd64, linux) (push) Successful in 1m29s
Pre Release Workflow / build (vpc, amd64, linux) (push) Successful in 1m28s
Pre Release Workflow / upload-scripts (run-dnsmasq-in-netns.sh) (push) Successful in 5s
Pre Release Workflow / prerelease (push) Successful in 12s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-04-06 20:17:26 +02:00
825fabb64a
f-15: error: add error handle
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-04-06 20:17:26 +02:00
3 changed files with 29 additions and 10 deletions

View file

@ -35,15 +35,19 @@ func main() {
defer db.Close()
if *start {
metadata.StartMetadata(metadata.NoCloudConfig{
if err := metadata.StartMetadata(metadata.NoCloudConfig{
VpcName: *vpc,
Name: *vm_name,
BindIP: *bind_ip,
BindPort: *bind_port,
Password: *password,
SSHKEY: *ssh_key,
}, db, *dryrun)
}, db, *dryrun); err != nil {
fmt.Println(err)
}
} else if *stop {
metadata.StopMetadata(*vm_name, db, *dryrun)
if err := metadata.StopMetadata(*vm_name, db, *dryrun); err != nil {
fmt.Println(err)
}
}
}

View file

@ -1,26 +1,40 @@
package metadata
import (
"fmt"
"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()
func StartMetadata(config NoCloudConfig, db *badger.DB, dryrun bool) error {
service, err := systemd.New()
if err != nil {
return fmt.Errorf("failed to connect to systemd: %w", err)
}
defer service.Close()
LoadNcCloudInDB(config, db)
if !dryrun {
service.Start("metadata@" + config.Name)
if err := service.Start("metadata@" + config.Name + ".service"); err != nil {
return fmt.Errorf("failed to start metadata@%s: %w", config.Name, err)
}
}
return nil
}
func StopMetadata(vm_name string, db *badger.DB, dryrun bool) {
service, _ := systemd.New()
func StopMetadata(vm_name string, db *badger.DB, dryrun bool) error {
service, err := systemd.New()
if err != nil {
return fmt.Errorf("failed to connect to systemd: %w", err)
}
defer service.Close()
UnLoadNoCloudInDB(vm_name, db)
if !dryrun {
service.Stop("metadata@" + vm_name)
if err := service.Stop("metadata@" + vm_name + ".service"); err != nil {
return fmt.Errorf("failed to stop metadata@%s: %w", vm_name, err)
}
}
return nil
}

View file

@ -6,7 +6,8 @@ import (
func InitDB(conf Config, readonly bool) *badger.DB {
opts := badger.DefaultOptions(conf.Path).
WithReadOnly(readonly)
WithReadOnly(readonly).
WithBypassLockGuard(readonly)
opts.Logger = nil
opts.ValueLogFileSize = 10 << 20 // 10 Mo par fichier vlog
opts.NumMemtables = 1