code: func New(name string, strategy string) (CoordinatorConfigUpdater, error) {
  	// filelock expects that the file already exists.
  	// Because this file will never be deleted, just blindly creating it on every
  	// run is safe from racing with any deletions. Just create it, then get
  	// locking.
  	if err := os.MkdirAll(filepath.Dir(UpdateCoordinatorConfPath), 0755); err != nil {
  		return nil, err
  	}
  	if file, err := os.OpenFile(UpdateCoordinatorConfPath, os.O_CREATE, 0644); err != nil {
  		return nil, err
  	} else {
  		file.Close()
  	}
  
  	lock, err := filelock.NewExclusiveLock(UpdateCoordinatorConfPath)
  	if err != nil {
  		return nil, err
  	}
  	coordinator := &coordinator{
  		lock: lock,
  		config: map[string]string{
  			"NAME":     name,
  			"STRATEGY": strategy,
  		},
  	}
  	err = coordinator.UpdateState(CoordinatorStateStarting)
  	return coordinator, err
  }
docs: // New creates a new CoordinatorConfigUpdater. The "name" must be specified.
  // Strategy can safely be left blank if desired.
  // New will implicitly set the update coordinator state to
  // "CoordinatorStateStarting"