cmdb/internal/arangodb/arangodb.go

71 lines
1.4 KiB
Go
Raw Normal View History

2023-01-25 13:40:44 +03:00
// Copyright 2022 Listware
package arangodb
import (
"context"
"crypto/tls"
"net/http"
"os"
driver "github.com/arangodb/go-driver"
arangohttp "github.com/arangodb/go-driver/http"
)
const (
cmdbName = "CMDB"
systemGraphName = "system"
)
var (
arangoAddr string
arangoUser string
arangoPassword string
)
func init() {
if value, ok := os.LookupEnv("ARANGO_ADDR"); ok {
arangoAddr = value
}
if value, ok := os.LookupEnv("ARANGO_USER"); ok {
arangoUser = value
}
if value, ok := os.LookupEnv("ARANGO_PASSWORD"); ok {
arangoPassword = value
}
}
func Connect() (client driver.Client, err error) {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
// Open a client connection
conn, err := arangohttp.NewConnection(arangohttp.ConnectionConfig{
Transport: tr,
Endpoints: []string{arangoAddr},
})
if err != nil {
return
}
return driver.NewClient(driver.ClientConfig{
Connection: conn,
Authentication: driver.BasicAuthentication(arangoUser, arangoPassword),
})
}
func Database(ctx context.Context, client driver.Client) (driver.Database, error) {
return client.Database(ctx, cmdbName)
}
func Graph(ctx context.Context, client driver.Client) (graph driver.Graph, err error) {
db, err := client.Database(ctx, cmdbName)
if err != nil {
return
}
return db.Graph(ctx, systemGraphName)
}