def extract_products_from_vulnerability(
        self, alert_index, vulnerabilities, log_type
    ):
        """Extract products data from vulnerabilities and ingested in seperate log analytics table.

        Args:
            alert_index (str): alert_id of alert data.
            vulnerabilities (list): vulnerabilities list of alert data.
            log_type (str): Table name in which vulnerability_products data will be ingested.

        Raises:
            DataminrPulseException: raises DataminrPulseException when any error occurs.

        Returns:
            list: returns updated vulnerabilities list.
        """
        __method_name = inspect.currentframe().f_code.co_name
        try:
            for vulnerability in vulnerabilities:
                vuln_id = vulnerability.get("id")
                products = vulnerability.get("products")
                if products:
                    data = {
                        "index": alert_index,
                        "vulnerabilities_id": vuln_id,
                        "vulnerabilities_products": products,
                    }
                    body = json.dumps(data)
                    status_code = self.microsoftsentinel.post_data(body, log_type)
                    if status_code >= 200 and status_code <= 299:
                        applogger.debug(
                            "{}(method={}) products for vulnerability id={}, alert id={} posted successfully.".format(
                                self.logs_starts_with,
                                __method_name,
                                vuln_id,
                                alert_index,
                            )
                        )
                    vulnerability.pop("products")
            return vulnerabilities
        except KeyError as err:
            applogger.error(
                "{}".format(
                    self.error_logs.format(self.logs_starts_with, __method_name, err)
                )
            )
            raise DataminrPulseException(err)
        except Exception as err:
            applogger.error(
                "{}".format(
                    self.error_logs.format(self.logs_starts_with, __method_name, err)
                )
            )
            raise DataminrPulseException(err)
Extract products data from vulnerabilities and ingested in seperate log analytics table.

        Args:
            alert_index (str): alert_id of alert data.
            vulnerabilities (list): vulnerabilities list of alert data.
            log_type (str): Table name in which vulnerability_products data will be ingested.

        Raises:
            DataminrPulseException: raises DataminrPulseException when any error occurs.

        Returns:
            list: returns updated vulnerabilities list.
        
Solutions/Dataminr Pulse/Data Connectors/DataminrPulseAlerts/DataminrPulseAlertsSentinelActivity/dataminr_pulse.py