docs: def _set_selinux_context(self):
          """
          Set SELinux context or fields using chcon program. Raises CommandDoesNotExistException
          if the command is not present on the system.
  
          :return: None
          """
          chcon_command_exists()
          # FIXME: do this using python API if possible
          if self.selinux_context:
              logger.debug("setting SELinux context of %s to %s", self.path, self.selinux_context)
              run_cmd(["chcon", self.selinux_context, self.path])
          if any([self.selinux_user, self.selinux_role, self.selinux_type, self.selinux_range]):
              logger.debug("setting SELinux fields of %s", self.path, self.selinux_context)
              # chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
              pairs = [("-u", self.selinux_user), ("-r", self.selinux_role),
                       ("-l", self.selinux_range), ("-t", self.selinux_type)]
              c = ["chcon"]
              for p in pairs:
                  if p[1]:
                      c += p
              c += [self.path]
              run_cmd(c)