in mysqloperator/controller/innodbcluster/cluster_api.py [0:0]
def update_membership_status(self, member_id: str, role: str, status: str,
view_id: str, version: str,
joined: bool = False) -> None:
now = utils.isotime()
last_probe_time = now
info = self.get_membership_info() or {}
if not info or info.get("role") != role or info.get("status") != status or info.get("groupViewId") != view_id or info.get("memberId") != member_id:
last_transition_time = now
else:
last_transition_time = info.get("lastTransitionTime")
info.update({
"memberId": member_id,
"lastTransitionTime": last_transition_time,
"lastProbeTime": last_probe_time,
"groupViewId": view_id,
"status": status,
"version": version,
"role": role
})
if joined:
info["joinTime"] = now
patch = {
"metadata": {
"labels": {
"mysql.oracle.com/cluster-role": role if status == "ONLINE" else None
},
"annotations": {
"mysql.oracle.com/membership-info": json.dumps(info)
}
}
}
self.pod = cast(api_client.V1Pod, api_core.patch_namespaced_pod(
self.name, self.namespace, patch))