gocron/modules/app/app.go

109 lines
2.6 KiB
Go
Raw Normal View History

2017-03-14 06:31:46 +00:00
package app
import (
2017-04-02 02:38:49 +00:00
"os"
"runtime"
2017-03-23 05:58:42 +00:00
2017-04-02 02:38:49 +00:00
"github.com/ouqiang/cron-scheduler/models"
"github.com/ouqiang/cron-scheduler/modules/ansible"
"github.com/ouqiang/cron-scheduler/modules/crontask"
"github.com/ouqiang/cron-scheduler/modules/utils"
"github.com/ouqiang/cron-scheduler/service"
2017-03-14 06:31:46 +00:00
)
2017-04-02 02:19:52 +00:00
var (
2017-04-02 02:38:49 +00:00
AppDir string // 应用根目录
ConfDir string // 配置目录
LogDir string // 日志目录
DataDir string // 数据目录存放session文件等
AppConfig string // 应用配置文件
AnsibleHosts string // ansible hosts文件
Installed bool // 应用是否安装过
2017-03-14 06:31:46 +00:00
)
2017-03-24 09:55:44 +00:00
func InitEnv() {
2017-04-02 02:38:49 +00:00
CheckEnv()
wd, err := os.Getwd()
if err != nil {
panic(err)
}
AppDir = wd
ConfDir = AppDir + "/conf"
LogDir = AppDir + "/log"
DataDir = AppDir + "/data"
AppConfig = ConfDir + "/app.ini"
AnsibleHosts = ConfDir + "/ansible_hosts.ini"
checkDirExists(ConfDir, LogDir, DataDir)
// ansible配置文件目录
os.Setenv("ANSIBLE_CONFIG", ConfDir)
Installed = IsInstalled()
if Installed {
InitDb()
InitResource()
}
2017-03-14 06:31:46 +00:00
}
// 判断应用是否安装过
func IsInstalled() bool {
2017-04-02 02:38:49 +00:00
_, err := os.Stat(ConfDir + "/install.lock")
if os.IsNotExist(err) {
return false
}
2017-03-14 06:31:46 +00:00
2017-04-02 02:38:49 +00:00
return true
2017-03-14 06:31:46 +00:00
}
// 检测环境
2017-04-02 02:19:52 +00:00
func CheckEnv() {
2017-04-02 02:38:49 +00:00
// ansible不支持安装在windows上, windows只能作为被控机
if runtime.GOOS == "windows" {
panic("不支持在windows上运行")
}
_, err := utils.ExecShell("ansible", "--version")
if err != nil {
panic(err)
}
_, err = utils.ExecShell("ansible-playbook", "--version")
if err != nil {
panic(err)
}
2017-03-14 06:31:46 +00:00
}
// 创建安装锁文件
func CreateInstallLock() error {
2017-04-02 02:38:49 +00:00
_, err := os.Create(ConfDir + "/install.lock")
if err != nil {
utils.RecordLog("创建安装锁文件失败")
}
2017-03-14 06:31:46 +00:00
2017-04-02 02:38:49 +00:00
return err
2017-03-14 06:31:46 +00:00
}
// 初始化资源
2017-03-24 05:06:53 +00:00
func InitResource() {
2017-04-02 02:38:49 +00:00
// 初始化ansible Hosts
ansible.DefaultHosts = ansible.NewHosts(AnsibleHosts)
// 初始化定时任务
crontask.DefaultCronTask = crontask.NewCronTask()
serviceTask := new(service.Task)
serviceTask.Initialize()
2017-03-14 06:31:46 +00:00
}
2017-04-01 09:04:40 +00:00
// 初始化DB
2017-04-02 02:19:52 +00:00
func InitDb() {
2017-04-02 02:38:49 +00:00
models.Db = models.CreateDb(AppConfig)
2017-04-01 09:04:40 +00:00
}
2017-03-14 06:31:46 +00:00
// 检测目录是否存在
2017-04-02 02:19:52 +00:00
func checkDirExists(path ...string) {
2017-04-02 02:38:49 +00:00
for _, value := range path {
_, err := os.Stat(value)
if os.IsNotExist(err) {
panic(value + "目录不存在")
}
if os.IsPermission(err) {
panic(value + "目录无权限操作")
}
}
2017-04-02 02:19:52 +00:00
}