in mysqloperator/controller/innodbcluster/cluster_objects.py [0:0]
def update_mysql_image(sts: api_client.V1StatefulSet, cluster: InnoDBCluster,
spec: AbstractServerSetSpec,
patcher,
logger: Logger) -> None:
"""Update MySQL Server image
This will also update the sidecar container to the current operator version,
so that a single rolling upgrade covers both and we don't require a restart
for upgrading sidecar.
"""
logger.info("update_mysql_image")
# Operators <= 8.0.32-2.0.8 don't set this environment variable, we have to make sure it is there
cluster_domain_env = [{
"name": "MYSQL_OPERATOR_K8S_CLUSTER_DOMAIN",
"value": k8s_cluster_domain(logger)
}]
patch = {"spec": {"template":
{"spec": {
"containers": [
{"name": "sidecar",
"image": spec.operator_image,
"env": cluster_domain_env
},
{"name": "mysql",
"image": spec.mysql_image,
"env": cluster_domain_env
},
],
"initContainers": [
{"name": "fixdatadir",
"image": spec.operator_image,
"env": cluster_domain_env
},
{"name": "initconf",
"image": spec.operator_image,
"env": cluster_domain_env
},
{"name": "initmysql",
"image": spec.mysql_image,
"env": cluster_domain_env
},
]}
}}}
# TODO [compat8.3.0] remove this when compatibility pre 8.3.0 isn't needed anymore
keyring_update = spec.keyring.upgrade_to_component(sts, spec, logger)
if keyring_update:
logger.info("Need to upgrade keyring from plugin to component")
(cm, key_sts_patch) = keyring_update
utils.merge_patch_object(patch["spec"]["template"], key_sts_patch)
kopf.adopt(cm)
patcher.create_configmap(spec.namespace, cm["metadata"]["name"], cm, on_apiexception_generic_handler)
#api_core.create_namespaced_config_map(spec.namespace, cm)
initconf_patch = [{"op": "remove", "path": "/data/03-keyring-oci.cnf"}]
#try:
# api_core.patch_namespaced_config_map(f"{spec.cluster_name}-initconf",
# spec.namespace, initconf_patch)
#except ApiException as exc:
# # This might happen during a retry or some other case where it was
# # removed already
# logger.info(f"Failed to remove keyring config from initconf, ignoring: {exc}")
patcher.patch_configmap(spec.namespace, f"{spec.cluster_name}-initconf", initconf_patch, on_apiexception_404_handler)
cm = prepare_initconf(cluster, spec, logger)
patcher.patch_configmap(spec.namespace, cm['metadata']['name'], cm, on_apiexception_generic_handler)
#api_core.patch_namespaced_config_map(
# cm['metadata']['name'], sts.metadata.namespace, body=cm)
patcher.patch_sts(patch)