From 77a28e3e044b5fb2c39e08f98f9f6b65c9957305 Mon Sep 17 00:00:00 2001 From: FumingZhang <81607949+FumingZhang@users.noreply.github.com> Date: Wed, 23 Mar 2022 14:11:57 +0800 Subject: [PATCH] fix validation for kms options (#4560) --- src/aks-preview/azext_aks_preview/decorator.py | 7 +++++-- .../azext_aks_preview/tests/latest/test_decorator.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/aks-preview/azext_aks_preview/decorator.py b/src/aks-preview/azext_aks_preview/decorator.py index 5ad75d95def..c65e6dbb830 100644 --- a/src/aks-preview/azext_aks_preview/decorator.py +++ b/src/aks-preview/azext_aks_preview/decorator.py @@ -1597,6 +1597,7 @@ def _get_enable_azure_keyvault_kms(self, enable_validation: bool = False) -> boo :return: bool """ # read the original value passed by the command + # TODO: set default value as False after the get function of AKSParamDict accepts parameter `default` enable_azure_keyvault_kms = self.raw_param.get("enable_azure_keyvault_kms") # In create mode, try to read the property value corresponding to the parameter from the `mc` object. if self.decorator_mode == DecoratorMode.CREATE: @@ -1610,8 +1611,10 @@ def _get_enable_azure_keyvault_kms(self, enable_validation: bool = False) -> boo # this parameter does not need dynamic completion # validation if enable_validation: - if enable_azure_keyvault_kms and self._get_azure_keyvault_kms_key_id(enable_validation=False) is None: - raise RequiredArgumentMissingError('"--enable-azure-keyvault-kms" requires "--azure-keyvault-kms-key-id".') + if bool(enable_azure_keyvault_kms) != bool(self._get_azure_keyvault_kms_key_id(enable_validation=False)): + raise RequiredArgumentMissingError( + 'You must set "--enable-azure-keyvault-kms" and "--azure-keyvault-kms-key-id" at the same time.' + ) return enable_azure_keyvault_kms diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py b/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py index 9b4f9658a44..96dacbece67 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_decorator.py @@ -1746,6 +1746,17 @@ def test_get_enable_azure_keyvault_kms(self): with self.assertRaises(RequiredArgumentMissingError): ctx_4.get_enable_azure_keyvault_kms() + ctx_5 = AKSPreviewContext( + self.cmd, + { + "azure_keyvault_kms_key_id": "test_azure_keyvault_kms_key_id", + }, + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + with self.assertRaises(RequiredArgumentMissingError): + ctx_5.get_enable_azure_keyvault_kms() + def test_get_azure_keyvault_kms_key_id(self): ctx_0 = AKSPreviewContext( self.cmd,