forked from Ivasoft/objectivefs-docker-volume
Improved logging fields and std redirection.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
41
main.go
41
main.go
@@ -46,7 +46,7 @@ type ofsDriver struct {
|
||||
var version = "1.0"
|
||||
|
||||
func (d ofsDriver) Create(r *volume.CreateRequest) error {
|
||||
log.Info("Create ObjectiveFS Volume '%s'", r.Name)
|
||||
log.WithFields(log.Fields{"name": r.Name}).Info("Create ObjectiveFS Volume")
|
||||
d.Lock()
|
||||
defer d.Unlock()
|
||||
|
||||
@@ -97,7 +97,7 @@ func (d ofsDriver) Get(r *volume.GetRequest) (*volume.GetResponse, error) {
|
||||
}
|
||||
|
||||
func umount(v *ofsVolume) error {
|
||||
log.Info("Unmount ObjectiveFS Volume '%s'", v.volume.Name)
|
||||
log.WithFields(log.Fields{"name": v.volume.Name}).Info("Unmount ObjectiveFS Volume")
|
||||
if !v.mounted {
|
||||
return nil
|
||||
}
|
||||
@@ -148,16 +148,19 @@ func (d ofsDriver) Mount(r *volume.MountRequest) (*volume.MountResponse, error)
|
||||
if !ok {
|
||||
return &volume.MountResponse{}, fmt.Errorf("volume '%s' not found", r.Name)
|
||||
}
|
||||
log.Info("Attach ObjectiveFS Volume '%s' to '%s'", r.Name, r.ID)
|
||||
log.WithFields(log.Fields{"name": r.Name, "id": r.ID}).Info("Attach ObjectiveFS Volume")
|
||||
if !v.mounted {
|
||||
if err := os.MkdirAll(v.volume.Mountpoint, 0755); err != nil {
|
||||
return &volume.MountResponse{}, err
|
||||
}
|
||||
cmd := exec.Command("/sbin/mount.objectivefs", "-o"+v.opts, v.fs, v.volume.Mountpoint)
|
||||
cmd.Env = v.env
|
||||
cmd.Stdout = log.StandardLogger().Out
|
||||
cmd.Stderr = log.StandardLogger().Out
|
||||
log.Info("Mount ObjectiveFS Volume '%s': '%s'", r.Name, cmd)
|
||||
cmd.Stdout = NewLogWriter()
|
||||
cmd.Stderr = NewLogWriter()
|
||||
log.WithFields(log.Fields{
|
||||
"name": r.Name,
|
||||
"cmd": cmd,
|
||||
}).Info("Mount ObjectiveFS Volume")
|
||||
if err := cmd.Run(); err != nil {
|
||||
return &volume.MountResponse{}, fmt.Errorf("unexpected error mounting '%s' check log (/var/log/syslog or /var/log/messages): %s", r.Name, err.Error())
|
||||
}
|
||||
@@ -175,7 +178,7 @@ func (d ofsDriver) Unmount(r *volume.UnmountRequest) error {
|
||||
if !ok {
|
||||
return fmt.Errorf("volume '%s' not found", r.Name)
|
||||
}
|
||||
log.Info("Detach ObjectiveFS Volume '%s' from '%s'", r.Name, r.ID)
|
||||
log.WithFields(log.Fields{"name": r.Name, "id": r.ID}).Info("Detach ObjectiveFS Volume")
|
||||
delete(v.use, r.ID)
|
||||
if len(v.use) == 0 && v.asap {
|
||||
if err := umount(v); err != nil {
|
||||
@@ -193,13 +196,11 @@ func (d ofsDriver) Capabilities() *volume.CapabilitiesResponse {
|
||||
}
|
||||
|
||||
var (
|
||||
logLevel = flag.String("log", "", "log level")
|
||||
logFile = flag.String("logfile", "", "log file")
|
||||
logLevel = flag.String("log", "", "log level")
|
||||
logFilePath = flag.String("logfile", "", "log file")
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Info("Starting ObjectiveFS Volume Driver, version " + version)
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if *logLevel == "" {
|
||||
@@ -214,8 +215,8 @@ func main() {
|
||||
}
|
||||
log.SetLevel(level)
|
||||
|
||||
if *logFile != "" {
|
||||
f, err := os.OpenFile(*logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if *logFilePath != "" {
|
||||
f, err := os.OpenFile(*logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
log.WithError(err).Fatal("Failed to open log file for writing")
|
||||
}
|
||||
@@ -223,6 +224,7 @@ func main() {
|
||||
|
||||
log.StandardLogger().Out = f
|
||||
}
|
||||
log.Info("Starting ObjectiveFS Volume Driver, version " + version)
|
||||
|
||||
d := ofsDriver{volumes: make(map[string]*ofsVolume)}
|
||||
h := volume.NewHandler(d)
|
||||
@@ -232,3 +234,16 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
type LogWriter struct {
|
||||
}
|
||||
|
||||
func NewLogWriter() *LogWriter {
|
||||
lw := &LogWriter{}
|
||||
return lw
|
||||
}
|
||||
|
||||
func (lw LogWriter) Write(p []byte) (n int, err error) {
|
||||
log.Infoln(p)
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user