code: def validate_config(self, config):
          
  
          try:
              hosts = config['hosts']
          except KeyError:
              raise InvalidConfigurationError('hosts', "",
                                              reason=('hosts configuration '
                                                      'section is required'))
  
          for key in config.keys():
              if key not in default_allowed_keys:
                  raise InvalidConfigurationError(key, config[key])
  
          bucket = False
          # optional configuration
          try:
              for key in config['aws'].keys():
                  if key == 'bucket' and config['aws'][key] is not None:
                      bucket = True
                  if key not in aws_allowed_keys:
                      raise InvalidConfigurationError(key, config['aws'][key])
          except KeyError:
              pass
  
          # optional configuration
          try:
              for key in config['logging'].keys():
                  if key not in logging_allowed_keys:
                      raise InvalidConfigurationError(key, config['logging'][key])
          except KeyError:
              pass
  
          # optional configuration
          try:
              for key in config['repository'].keys():
                  if key not in repository_allowed_keys:
                      raise InvalidConfigurationError(key, config['repository'][key])
          except KeyError:
              pass
  
          # required configuration
          if type(config['hosts']) is not list:
              raise InvalidConfigurationError('hosts', config['hosts'],
                                              reason="hosts must be a list")
          filename = False
          for host in config['hosts']:
              for key in host.keys():
                  if key == 'filename' and host['filename'] is not None:
                      filename = True
                  if key == 'jump_host' and host['jump_host'] is not None:
                      for jump_key in host['jump_host'].keys():
                          if jump_key not in jump_host_allowed_keys:
                              raise InvalidConfigurationError(key, host['jump_host'])
                  if key not in host_allowed_keys:
                      raise InvalidConfigurationError(key, host[key])
  
          if bucket and filename:
              raise InvalidConfigurationError('bucket', config['aws']['bucket'],
                                              reason=('bucket configuration is'
                                                      'incompatible with filename'
                                                      'configuration in hosts'))
docs: Validate configuration dict keys are supported
  
          :type config: dict
          :param config: configuration dictionary