code: func (c *cluster) unprotectedGenerateResizeJob(nodeAction nodeAction) (*resizeJob, error) {
  	c.logger.Printf("generateResizeJob: %v", nodeAction)
  
  	j, err := c.unprotectedGenerateResizeJobByAction(nodeAction)
  	if err != nil {
  		return nil, errors.Wrap(err, "generating job")
  	}
  	c.logger.Printf("generated resizeJob: %d", j.ID)
  
  	// Save job in jobs map for future reference.
  	c.jobs[j.ID] = j
  
  	// Set job as currentJob.
  	if c.currentJob != nil {
  		return nil, fmt.Errorf("there is currently a resize job running")
  	}
  	c.currentJob = j
  
  	return j, nil
  }
docs: // unprotectedGenerateResizeJob creates a new resizeJob based on the new node being
  // added/removed. It also saves a reference to the resizeJob in the `jobs` map
  // for future lookup by JobID.