예제 #1
0
    def import_report(
        self,
        report: str,
        *,
        task_id: Optional[str] = None,
        in_assets: Optional[bool] = None,
    ) -> Any:
        """Import a Report from XML

        Arguments:
            report: Report XML as string to import. This XML must contain
                a :code:`<report>` root element.
            task_id: UUID of task to import report to
            in_asset: Whether to create or update assets using the report

        Returns:
            The response. See :py:meth:`send_command` for details.
        """
        if not report:
            raise RequiredArgument(function=self.import_report.__name__,
                                   argument="report")

        cmd = XmlCommand("create_report")

        if task_id:
            cmd.add_element("task", attrs={"id": task_id})
        else:
            raise RequiredArgument(function=self.import_report.__name__,
                                   argument="task_id")

        if in_assets is not None:
            cmd.add_element("in_assets", to_bool(in_assets))

        try:
            cmd.append_xml_str(report)
        except XMLSyntaxError as e:
            raise InvalidArgument(
                f"Invalid xml passed as report to import_report {e}") from None

        return self._send_xml_command(cmd)
예제 #2
0
    def import_scan_config(self, config: str) -> Any:
        """Import a scan config from XML

        Arguments:
            config: Scan Config XML as string to import. This XML must
                contain a :code:`<get_configs_response>` root element.

        Returns:
            The response. See :py:meth:`send_command` for details.
        """
        if not config:
            raise RequiredArgument(function=self.import_scan_config.__name__,
                                   argument="config")

        cmd = XmlCommand("create_config")

        try:
            cmd.append_xml_str(config)
        except XMLSyntaxError as e:
            raise InvalidArgument(function=self.import_scan_config.__name__,
                                  argument="config") from e

        return self._send_xml_command(cmd)