package main
import (
"encoding/json"
// boshdir "github.com/cloudfoundry/bosh-cli/director"
bosherr "github.com/cloudfoundry/bosh-utils/errors"
boshlog "github.com/cloudfoundry/bosh-utils/logger"
boshsys "github.com/cloudfoundry/bosh-utils/system"
turbulence_director "github.com/cppforlife/turbulence/director"
// alias "github.com/cppforlife/turbulence/main"
"github.com/davecgh/go-spew/spew"
"os"
)
func main() {
logger := boshlog.NewWriterLogger(boshlog.LevelDebug, os.Stderr, os.Stderr)
fs := boshsys.NewOsFileSystem(logger)
config, err := NewConfigFromPath("config.json", fs)
if err != nil {
logger.Error("tag", err.Error())
}
spew.Dump(config)
factory := turbulence_director.NewFactory(config, logger)
director, err := factory.New()
if err != nil {
logger.Error("tag", err.Error())
}
spew.Dump(director.AllInstances())
}
type Config struct {
ListenAddress string
ListenPort int
Username string
Password string
CertificatePath string
PrivateKeyPath string
Director turbulence_director.Config
// Datadog reporter.DatadogConfig
}
func NewConfigFromPath(path string, fs boshsys.FileSystem) (turbulence_director.Config, error) {
var config Config
bytes, err := fs.ReadFile(path)
if err != nil {
return turbulence_director.Config{}, bosherr.WrapErrorf(err, "Reading config %s", path)
}
err = json.Unmarshal(bytes, &config)
if err != nil {
return turbulence_director.Config{}, bosherr.WrapError(err, "Unmarshalling config")
}
return config.Director, nil
}