added an option to use preparers as a back up plan for powershell preparer
@@ -18,6 +18,7 @@ class PowerShellPreparer(AzureMgmtPreparer):
client_kwargs=None,
random_name_enabled=False,
use_cache=True,
+ preparers=None,
**kwargs
):
super(PowerShellPreparer, self).__init__(
@@ -29,6 +30,7 @@ class PowerShellPreparer(AzureMgmtPreparer):
self.fake_values = {}
self.real_values = {}
self._set_secrets(**kwargs)
+ self._backup_preparers=preparers
def _set_secrets(self, **kwargs):
keys = kwargs.keys()
@@ -52,6 +54,7 @@ class PowerShellPreparer(AzureMgmtPreparer):
if self.is_live:
self._set_mgmt_settings_real_values()
+ try:
for key in self.needed_keys:
scrubbed_value = self.fake_values[key]
@@ -66,6 +69,19 @@ class PowerShellPreparer(AzureMgmtPreparer):
prevent secrets from being written to files. {} was not given. For example: \
@PowerShellPreparer("schemaregistry", schemaregistry_endpoint="fake_endpoint.servicebus.windows.net")'
raise AzureTestError(template.format(key))
+ except KeyError as key_error:
+ if not self._backup_preparers:
+ raise
+
+ self.real_values = {}
+ create_kwargs = {}
+ for preparer in self._backup_preparers:
+ resource_name, vals = preparer._prepare_create_resource(self.test_class_instance, **create_kwargs)
+ # vals = preparer.create_resource(name, **create_kwargs)
+ self.real_values.update(vals)
+ if 'resource_group' in self.real_values.keys():
+ create_kwargs['resource_group'] = self.real_values['resource_group']
+
return self.real_values
else:
