def get_add_to_svc_cb()

in mysqloperator/controller/innodbcluster/cluster_api.py [0:0]


    def get_add_to_svc_cb(self) -> Optional[AddToSvcHandler]:
        def cb(svc: Union[dict, api_client.V1Service], logger: Logger) -> None:
            patch = {
                "ports" : [
                    {
                        "name" : self.svc_port_name,
                        "port": self.port, # ToDo : should be cluster.mysql_metrics_port
                        "targetPort": self.port, # ToDo : should be cluster.mysql_metrics_port
                    }
                ]
            }

            svc_name = "n/a"
            my_port_names = [port["name"] for port in patch["ports"]]
            if isinstance(svc, dict):
                svc_name = svc["metadata"]["name"]
                # first filter out the old `port`
                svc["spec"]["ports"] = [port for port in svc["spec"]["ports"] if port and get_object_name(port) not in my_port_names]
                # Then add, if needed
                if self.enable:
                    utils.merge_patch_object(svc["spec"], patch)
            elif isinstance(svc, api_client.V1Service):
                svc_name = svc.metadata.name
                # first filter out the old `port`
                svc.spec.ports = [port for port in svc.spec.ports if port and get_object_name(port) not in my_port_names]
                # Then add, if needed
                if self.enable:
                    svc.spec.ports += patch["ports"]
            print(f"\t\t\t{'A' if self.enable else 'Not a'}dding port {self.svc_port_name} to Service {svc_name}")

        return cb