docs: def validate_and_discover(self, context):
          """
          :type context: models.QualiDriverModels.AutoLoadCommandContext
          """
          logger = self._get_logger(context)
          logger.info('Autodiscovery started')
          si = None
          resource = None
  
          with CloudShellSessionContext(context) as cloudshell_session:
              self._check_if_attribute_not_empty(context.resource, ADDRESS)
              resource = context.resource
              si = self._check_if_vcenter_user_pass_valid(context, cloudshell_session, resource.attributes)
  
          resource.attributes = VCenterAutoModelDiscovery._make_attributes_slash_backslash_agnostic(resource.attributes)
  
          auto_attr = []
          if not si:
              error_message = 'Could not connect to the vCenter: {0}, with given credentials'\
                  .format(context.resource.address)
              logger.error(error_message)
              raise ValueError(error_message)
  
          try:
              all_dc = self.pv_service.get_all_items_in_vcenter(si, vim.Datacenter)
              dc = self._validate_datacenter(si, all_dc, auto_attr, resource.attributes)
  
              all_items_in_dc = self.pv_service.get_all_items_in_vcenter(si, None, dc)
              dc_name = dc.name
  
              for key, value in resource.attributes.items():
                  if key in [USER, PASSWORD, DEFAULT_DATACENTER, VM_CLUSTER]:
                      continue
                  validation_method = self._get_validation_method(key)
                  validation_method(si, all_items_in_dc, auto_attr, dc_name, resource.attributes, key)
          except vim.fault.NoPermission:
              logger.exception('Autodiscovery failed due to permissions error:')
              raise Exception("vCenter permissions for configured resource(s) are invalid")
  
          logger.info('Autodiscovery completed')
  
          return AutoLoadDetails([], auto_attr)