code: func (a AzureClient) RegisterResourceProviders(namespaces ...string) error {
  	l, err := a.providersClient().List(nil, "")
  	if err != nil {
  		return err
  	}
  	if l.Value == nil {
  		return errors.New("resource providers list is returned as nil")
  	}
  
  	m := make(map[string]bool)
  	for _, p := range *l.Value {
  		m[strings.ToLower(to.String(p.Namespace))] = to.String(p.RegistrationState) == "Registered"
  	}
  
  	for _, ns := range namespaces {
  		registered, ok := m[strings.ToLower(ns)]
  		if !ok {
  			return fmt.Errorf("unknown resource provider %q", ns)
  		}
  		if registered {
  			log.Debugf("Already registered for %q", ns)
  		} else {
  			log.Info("Registering subscription to resource provider.", logutil.Fields{
  				"ns":   ns,
  				"subs": a.subscriptionID,
  			})
  			if _, err := a.providersClient().Register(ns); err != nil {
  				return err
  			}
  		}
  	}
  	return nil
  }
docs: // RegisterResourceProviders registers current subscription to the specified
  // resource provider namespaces if they are not already registered. Namespaces
  // are case-insensitive.