docs: def apply_cloud_config(overrides, defaults=None):
      '''
      Return a cloud config
      '''
      if defaults is None:
          defaults = DEFAULT_CLOUD_OPTS.copy()
  
      config = defaults.copy()
      if overrides:
          config.update(overrides)
  
      # If the user defined providers in salt cloud's main configuration file, we
      # need to take care for proper and expected format.
      if 'providers' in config:
          # Keep a copy of the defined providers
          providers = config['providers'].copy()
          # Reset the providers dictionary
          config['providers'] = {}
          # Populate the providers dictionary
          for alias, details in six.iteritems(providers):
              if isinstance(details, list):
                  for detail in details:
                      if 'driver' not in detail:
                          raise salt.exceptions.SaltCloudConfigError(
                              'The cloud provider alias \'{0}\' has an entry '
                              'missing the required setting of \'driver\'.'.format(
                                  alias
                              )
                          )
  
                      driver = detail['driver']
  
                      if ':' in driver:
                          # Weird, but...
                          alias, driver = driver.split(':')
  
                      if alias not in config['providers']:
                          config['providers'][alias] = {}
  
                      detail['provider'] = '{0}:{1}'.format(alias, driver)
                      config['providers'][alias][driver] = detail
              elif isinstance(details, dict):
                  if 'driver' not in details:
                      raise salt.exceptions.SaltCloudConfigError(
                          'The cloud provider alias \'{0}\' has an entry '
                          'missing the required setting of \'driver\''.format(
                              alias
                          )
                      )
  
                  driver = details['driver']
  
                  if ':' in driver:
                      # Weird, but...
                      alias, driver = driver.split(':')
                  if alias not in config['providers']:
                      config['providers'][alias] = {}
  
                  details['provider'] = '{0}:{1}'.format(alias, driver)
                  config['providers'][alias][driver] = details
  
      # Migrate old configuration
      config = old_to_new(config)
  
      return config