code: func (ci *ClusterID) GetID() (string, error) {
  	if err := ci.getOrInitialize(); err != nil {
  		return "", err
  	}
  
  	ci.idLock.RLock()
  	defer ci.idLock.RUnlock()
  	if ci.clusterID == nil {
  		return "", errors.New("Could not retrieve cluster id")
  	}
  
  	// If provider ID is set, (Federation is enabled) use this field
  	if ci.providerID != nil {
  		return *ci.providerID, nil
  	}
  
  	// providerID is not set, use the cluster id
  	return *ci.clusterID, nil
  }
docs: // GetID returns the id which is unique to this cluster
  // if federated, return the provider id (unique to the cluster)
  // if not federated, return the cluster id