code: func New(lockType string, ns string, name string, coreClient corev1.CoreV1Interface, coordinationClient coordinationv1.CoordinationV1Interface, rlc ResourceLockConfig) (Interface, error) {
  	switch lockType {
  	case EndpointsResourceLock:
  		return &EndpointsLock{
  			EndpointsMeta: metav1.ObjectMeta{
  				Namespace: ns,
  				Name:      name,
  			},
  			Client:     coreClient,
  			LockConfig: rlc,
  		}, nil
  	case ConfigMapsResourceLock:
  		return &ConfigMapLock{
  			ConfigMapMeta: metav1.ObjectMeta{
  				Namespace: ns,
  				Name:      name,
  			},
  			Client:     coreClient,
  			LockConfig: rlc,
  		}, nil
  	case LeasesResourceLock:
  		return &LeaseLock{
  			LeaseMeta: metav1.ObjectMeta{
  				Namespace: ns,
  				Name:      name,
  			},
  			Client:     coordinationClient,
  			LockConfig: rlc,
  		}, nil
  	default:
  		return nil, fmt.Errorf("Invalid lock-type %s", lockType)
  	}
  }
docs: // Manufacture will create a lock of a given type according to the input parameters