func (t *machineCreate) Run(job monsterqueue.Job) { params := job.Parameters() jobId := params["jobId"].(string) vmId := params["vmId"].(string) projectId := params["projectId"].(string) ip, err := t.iaas.waitVMIsCreated(jobId, vmId, projectId) if err != nil { _, qErr := job.Queue().Enqueue(t.iaas.taskName(machineDeleteTaskName), monsterqueue.JobParams{ "vmId": vmId, "projectId": projectId, }) if qErr != nil { job.Error(fmt.Errorf("error trying to enqueue deletion: %s caused by: %s", qErr, err)) return } job.Error(err) return } if tags, ok := params["tags"]; ok { var cloudTags []*cloudstackTag tagList := strings.Split(tags.(string), ",") cloudTags = make([]*cloudstackTag, 0, len(tagList)) for _, tag := range tagList { if strings.Contains(tag, ":") { parts := strings.SplitN(tag, ":", 2) cloudTags = append(cloudTags, &cloudstackTag{ Key: string(parts[0]), Value: string(parts[1]), }) } } if len(cloudTags) > 0 { param := make(map[string]string) param["resourceids"] = vmId param["resourcetype"] = "UserVm" for index, tag := range cloudTags { param["tags["+strconv.Itoa(index+1)+"].key"] = tag.Key param["tags["+strconv.Itoa(index+1)+"].value"] = tag.Value } param["projectId"] = projectId var result CreateTagsResponse err = t.iaas.do("createTags", param, &result) if err != nil { job.Error(err) return } } } notified, _ := job.Success(ip) if !notified { _, err = job.Queue().Enqueue(t.iaas.taskName(machineDeleteTaskName), monsterqueue.JobParams{ "vmId": vmId, "projectId": projectId, }) if err != nil { log.Errorf("could not enqueue delete unnotified vm: %s", err) return } } }
func (t *machineCreate) Run(job monsterqueue.Job) { params := job.Parameters() jobId := params["jobId"].(string) vmId := params["vmId"].(string) projectId := params["projectId"].(string) ip, err := t.iaas.waitVMIsCreated(jobId, vmId, projectId) if err != nil { _, qErr := job.Queue().Enqueue(t.iaas.taskName(machineDeleteTaskName), monsterqueue.JobParams{ "vmId": vmId, "projectId": projectId, }) if qErr != nil { job.Error(fmt.Errorf("error trying to enqueue deletion: %s caused by: %s", qErr, err)) return } job.Error(err) return } notified, _ := job.Success(ip) if !notified { _, err = job.Queue().Enqueue(t.iaas.taskName(machineDeleteTaskName), monsterqueue.JobParams{ "vmId": vmId, "projectId": projectId, }) if err != nil { log.Errorf("could not enqueue delete unnotified vm: %s", err) return } } }