feat: add export library

This commit is contained in:
Samuel N Cui
2023-10-06 09:04:10 +08:00
parent b7c075b8a5
commit 030a6d9516
7 changed files with 152 additions and 28 deletions
-38
View File
@@ -1,38 +0,0 @@
# domain used by user interface
domain: http://127.0.0.1:8080
# http service binding
listen: 127.0.0.1:8080
# debug port binding
debug_listen: 127.0.0.1:8081
# database settings, you can use sqlite or mysql (untested)
database:
dialect: sqlite
dsn: ./tapes.db
# usable tape drivers, must have sg device mapping.
# use `sg_map` command (in sg3_utils package) to get corresponding device with sg device mapping.
tape_devices:
- /dev/tape/by-id/scsi-HUJ0000000
# working path settings
paths:
# to save logs and write reports
work: ./
# source in backup job creator
source: ./
# restore job target path
target: ./
# those scripts interact with external software, you may need to change them for your use cases.
scripts:
# enable hardware encryption on tape driver
encrypt: ./scripts/encrypt
# format ltfs on lto tape, may need to be changed for different ltfs software.
mkfs: ./scripts/mkfs
# mount ltfs to specified path, may need to be changed for different ltfs software.
mount: ./scripts/mount
# umount ltfs path
umount: ./scripts/umount
# read tape barcode for restore jobs
read_info: ./scripts/readinfo
+3 -27
View File
@@ -16,6 +16,7 @@ import (
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/samuelncui/yatm/apis"
"github.com/samuelncui/yatm/config"
"github.com/samuelncui/yatm/entity"
"github.com/samuelncui/yatm/executor"
"github.com/samuelncui/yatm/library"
@@ -25,26 +26,10 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"gopkg.in/yaml.v2"
)
type config struct {
Domain string `yaml:"domain"`
Listen string `yaml:"listen"`
DebugListen string `yaml:"debug_listen"`
Database struct {
Dialect string `yaml:"dialect"`
DSN string `yaml:"dsn"`
} `yaml:"database"`
Paths executor.Paths `yaml:"paths"`
TapeDevices []string `yaml:"tape_devices"`
Scripts executor.Scripts `yaml:"scripts"`
}
var (
configPath = flag.String("config", "./config.yaml", "config file path")
configOpt = flag.String("config", "./config.yaml", "config file path")
)
func main() {
@@ -66,16 +51,7 @@ func main() {
))
flag.Parse()
cf, err := os.Open(*configPath)
if err != nil {
panic(err)
}
conf := new(config)
if err := yaml.NewDecoder(cf).Decode(conf); err != nil {
panic(err)
}
logrus.Infof("read config success, conf= '%+v'", conf)
conf := config.GetConfig(*configOpt)
if conf.DebugListen != "" {
go tools.Wrap(context.Background(), func() { tools.NewDebugServer(conf.DebugListen) })