def parse()

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()