def check_indexserver()

in src/modules/check_indexserver.py [0:0]


    def check_indexserver(self) -> None:
        """
        Checks if the indexserver is configured.
        """
        expected_properties = {
            "redhat": [
                {
                    "[ha_dr_provider_chksrv]": {
                        "provider": "ChkSrv",
                        "path": "/usr/share/SAPHanaSR/srHook",
                    }
                },
                {
                    "[ha_dr_provider_chksrv]": {
                        "provider": "ChkSrv",
                        "path": "/hana/shared/myHooks",
                    }
                },
            ],
            "suse": [
                {
                    "[ha_dr_provider_suschksrv]": {
                        "provider": "susChkSrv",
                        "path": "/usr/share/SAPHanaSR",
                    },
                },
                {
                    "[ha_dr_provider_suschksrv]": {
                        "provider": "susChkSrv",
                        "path": "/hana/shared/myHooks",
                    }
                },
            ],
        }

        os_props_list = expected_properties.get(self.os_distribution)
        if not os_props_list:
            self.result.update(
                {
                    "status": TestStatus.ERROR.value,
                    "message": f"Unsupported OS distribution: {self.os_distribution}",
                    "details": {},
                    "indexserver_enabled": "no",
                }
            )
            return

        global_ini_path = f"/usr/sap/{self.database_sid}/SYS/global/hdb/custom/config/global.ini"
        global_ini = []
        try:
            with open(global_ini_path, "r", encoding="utf-8") as file:
                global_ini = [line.strip() for line in file.readlines()]

            self.log(
                logging.INFO,
                f"Successfully read the global.ini file: {global_ini}",
            )

            for os_props in os_props_list if isinstance(os_props_list, list) else [os_props_list]:
                section_title = list(os_props.keys())[0]
                if section_title in global_ini:
                    section_start = global_ini.index(section_title)
                    properties_slice = global_ini[section_start + 1 : section_start + 4]

                    self.log(
                        logging.INFO,
                        f"Extracted properties: {properties_slice}",
                    )

                    extracted_properties = {
                        prop.split("=")[0].strip(): prop.split("=")[1].strip()
                        for prop in properties_slice
                    }

                    if all(
                        extracted_properties.get(key) == value
                        for key, value in os_props[section_title].items()
                    ):
                        self.result.update(
                            {
                                "status": TestStatus.SUCCESS.value,
                                "message": "Indexserver is configured.",
                                "details": extracted_properties,
                                "indexserver_enabled": "yes",
                            }
                        )
                        return

            self.result.update(
                {
                    "status": TestStatus.ERROR.value,
                    "message": "Indexserver is not configured.",
                    "details": {},
                    "indexserver_enabled": "no",
                }
            )
        except Exception as ex:
            self.result.update(
                {
                    "status": TestStatus.ERROR.value,
                    "message": f"Exception occurred while checking indexserver configuration: {ex}",
                    "details": {},
                    "indexserver_enabled": "no",
                }
            )