(cfg *drivers.TaskConfig)
| 569 | } |
| 570 | |
| 571 | func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drivers.DriverNetwork, error) { |
| 572 | d.logger.Info("StartTask", "ID", cfg.ID, "allocID", cfg.AllocID, "jobName", cfg.JobName, "taskName", cfg.Name) |
| 573 | |
| 574 | err := common.ValidateJobName(cfg.JobName) |
| 575 | if err != nil { |
| 576 | return nil, nil, err |
| 577 | } |
| 578 | |
| 579 | if _, ok := d.tasks.Get(cfg.ID); ok { |
| 580 | return nil, nil, fmt.Errorf("task with ID %q already started", cfg.ID) |
| 581 | } |
| 582 | d.logger.Debug("start dtle task 1") |
| 583 | var dtleTaskConfig common.DtleTaskConfig |
| 584 | |
| 585 | if err := cfg.DecodeDriverConfig(&dtleTaskConfig); err != nil { |
| 586 | d.logger.Debug("start dtle task err") |
| 587 | return nil, nil, errors.Wrap(err, "DecodeDriverConfig") |
| 588 | } |
| 589 | |
| 590 | if err := d.verifyDriverConfig(dtleTaskConfig); nil != err { |
| 591 | return nil, nil, fmt.Errorf("invalide driver config, errors: %v", err) |
| 592 | } |
| 593 | dtleTaskConfig.SetDefaultForEmpty() |
| 594 | |
| 595 | handle := drivers.NewTaskHandle(taskHandleVersion) |
| 596 | handle.Config = cfg |
| 597 | driverState := TaskState{ |
| 598 | TaskConfig: cfg, |
| 599 | DtleTaskConfig: &dtleTaskConfig, |
| 600 | StartedAt: time.Now().Round(time.Millisecond), |
| 601 | } |
| 602 | if err := handle.SetDriverState(&driverState); err != nil { |
| 603 | d.logger.Error("failed to start task, error setting driver state", "error", err) |
| 604 | return nil, nil, errors.Wrap(err, "SetDriverState") |
| 605 | } |
| 606 | |
| 607 | h := newDtleTaskHandle(d.ctx, d.logger, cfg, drivers.TaskStateRunning, time.Now().Round(time.Millisecond)) |
| 608 | h.driverConfig = &common.MySQLDriverConfig{DtleTaskConfig: dtleTaskConfig} |
| 609 | d.tasks.Set(cfg.ID, h) |
| 610 | AllocIdTaskNameToTaskHandler.Set(cfg.AllocID, cfg.Name, cfg.ID, h) |
| 611 | |
| 612 | go h.run(d) |
| 613 | |
| 614 | return handle, nil, nil |
| 615 | } |
| 616 | |
| 617 | func (d *Driver) verifyDriverConfig(config common.DtleTaskConfig) error { |
| 618 | errMsgs := []string{} |
nothing calls this directly
no test coverage detected