func testDockerRun() { var response cpmserverapi.DockerRunResponse var err error request := &cpmserverapi.DockerRunRequest{} request.CommandPath = "docker-run.sh" request.CPU = "0" request.MEM = "0" request.Image = "cpm-node-os" request.PGDataPath = "/tmp/foo" request.ContainerName = "testpoo" envvars := make(map[string]string) envvars["one"] = "uno" request.EnvVars = envvars response, err = cpmserverapi.DockerRunClient("http://192.168.0.106:10001", request) if err != nil { fmt.Println(err.Error()) } fmt.Println("returned " + response.Output) }
func ProvisionBackupJob(dbConn *sql.DB, args *BackupRequest) error { logit.Info.Println("backup.Provision called") logit.Info.Println("with scheduleid=" + args.ScheduleID) logit.Info.Println("with serverid=" + args.ServerID) logit.Info.Println("with servername=" + args.ServerName) logit.Info.Println("with serverip=" + args.ServerIP) logit.Info.Println("with containername=" + args.ContainerName) logit.Info.Println("with profilename=" + args.ProfileName) params := &cpmserverapi.DockerRunRequest{} params.Image = "crunchydata/cpm-backup-job" params.ServerID = args.ServerID backupcontainername := args.ContainerName + "-backup" params.ContainerName = backupcontainername params.Standalone = "false" //get server info server, err := admindb.GetServer(dbConn, params.ServerID) if err != nil { logit.Error.Println("Provision:" + err.Error()) return err } params.PGDataPath = server.PGDataPath + "/" + backupcontainername + "/" + getFormattedDate() //get the docker profile settings var setting admindb.Setting setting, err = admindb.GetSetting(dbConn, "S-DOCKER-PROFILE-CPU") params.CPU = setting.Value setting, err = admindb.GetSetting(dbConn, "S-DOCKER-PROFILE-MEM") params.MEM = setting.Value params.EnvVars = make(map[string]string) setting, err = admindb.GetSetting(dbConn, "DOMAIN-NAME") if err != nil { logit.Error.Println("Provision:" + err.Error()) return err } var domain = setting.Value params.EnvVars["BACKUP_NAME"] = backupcontainername params.EnvVars["BACKUP_SERVERNAME"] = server.Name params.EnvVars["BACKUP_SERVERIP"] = server.IPAddress params.EnvVars["BACKUP_SCHEDULEID"] = args.ScheduleID params.EnvVars["BACKUP_PROFILENAME"] = args.ProfileName params.EnvVars["BACKUP_CONTAINERNAME"] = args.ContainerName params.EnvVars["BACKUP_PATH"] = params.PGDataPath params.EnvVars["BACKUP_HOST"] = args.ContainerName + "." + setting.Value setting, err = admindb.GetSetting(dbConn, "PG-PORT") if err != nil { logit.Error.Println("Provision:" + err.Error()) return err } params.EnvVars["BACKUP_PORT"] = setting.Value params.EnvVars["BACKUP_USER"] = "******" params.EnvVars["BACKUP_SERVER_URL"] = "cpm-backup" + "." + domain + ":" + "13000" //provision the volume request := &cpmserverapi.DiskProvisionRequest{"/tmp/foo"} request.Path = params.PGDataPath var url = "http://" + server.IPAddress + ":10001" _, err = cpmserverapi.DiskProvisionClient(url, request) if err != nil { logit.Error.Println(err.Error()) return err } //run the container params.CommandPath = "docker-run-backup.sh" var response cpmserverapi.DockerRunResponse url = "http://" + server.IPAddress + ":10001" response, err = cpmserverapi.DockerRunClient(url, params) if err != nil { logit.Error.Println("Provision: " + response.Output) return err } logit.Info.Println("docker-run-backup.sh output=" + response.Output) return nil }