code: def ReadSystemConfigurationArtifact(
        self, system_configuration, session_identifier=CURRENT_SESSION):
      
      if system_configuration.code_page:
        try:
          self.SetCodepage(system_configuration.code_page)
        except ValueError:
          logger.warning(
              'Unsupported codepage: {0:s}, defaulting to {1:s}'.format(
                  system_configuration.code_page, self._codepage))
  
      self._hostnames[session_identifier] = system_configuration.hostname
  
      self.SetValue('keyboard_layout', system_configuration.keyboard_layout)
  
      self.SetValue('operating_system', system_configuration.operating_system)
      self.SetValue(
          'operating_system_product',
          system_configuration.operating_system_product)
      self.SetValue(
          'operating_system_version',
          system_configuration.operating_system_version)
  
      if system_configuration.time_zone:
        try:
          self.SetTimeZone(system_configuration.time_zone)
        except ValueError:
          logger.warning(
              'Unsupported time zone: {0:s}, defaulting to {1:s}'.format(
                  system_configuration.time_zone, self.timezone.zone))
  
      self._user_accounts[session_identifier] = {
          user_account.username: user_account
          for user_account in system_configuration.user_accounts}
docs: Reads the knowledge base values from a system configuration artifact.
  
      Note that this overwrites existing values in the knowledge base.
  
      Args:
        system_configuration (SystemConfigurationArtifact): system configuration
            artifact.
        session_identifier (Optional[str])): session identifier, where
            CURRENT_SESSION represents the active session.