in mysqloperator/controller/innodbcluster/cluster_api.py [0:0]
def parse(self, spec: dict, prefix: str) -> None:
krFile = dget_dict(spec, "file", "spec.keyring", {})
krEncryptedFile = dget_dict(spec, "encryptedFile", "spec.keyring", {})
krOci = dget_dict(spec, "oci", "spec.keyring", {})
if len([x for x in [krFile, krEncryptedFile, krOci] if x]) > 1:
raise ApiSpecError(
"Only one of file, encryptedFile or oci may be specified in spec.keyring")
if not krFile and not krEncryptedFile and not krOci:
raise ApiSpecError(
"One of file, encryptedFile or oci must be specified in spec.keyring")
if krFile:
self.keyring = KeyringFileSpec(self.namespace, self.global_manifest_name, self.component_config_configmap_name, self.keyring_mount_path)
self.keyring.parse(krFile, "spec.keyring.file")
elif krEncryptedFile:
self.keyring = KeyringEncryptedFileSpec(self.namespace, self.global_manifest_name, self.component_config_configmap_name, self.keyring_mount_path)
self.keyring.parse(krEncryptedFile, "spec.keyring.encryptedFile")
elif krOci:
self.keyring = KeyringOciSpec(self.namespace, self.global_manifest_name, self.component_config_configmap_name, self.keyring_mount_path)
self.keyring.parse(krOci, "spec.keyring.oci")
else:
self.keyring = KeyringNoneSpec()