Skip to content

Commit f3522cd

Browse files
Add set_delete_after_tag as a parameter on ResourceGroupPreparer (#11749)
* Add set_delete_after_tag as a parameter on ResourceGroupPreparer so that test-prepared RGs can be automatically cleaned up by engsys. * Populate this into the two "default helper RG preparers" (randomized/cached) to implicitly opt-in the tests consuming those into the best practice. (Currently this is a very limited set of SDKs) * Make delete_after_tag take a timespan and be enabled by default.
1 parent 18f13aa commit f3522cd

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

tools/azure-sdk-tools/devtools_testutils/resource_testcase.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from collections import namedtuple
77
import functools
88
import os
9+
import datetime
910
from functools import partial
1011

1112
from azure_devtools.scenario_tests import AzureTestError, ReservedResourceNameError
@@ -33,7 +34,8 @@ def __init__(self, name_prefix='',
3334
parameter_name_for_location='location', location='westus',
3435
disable_recording=True, playback_fake_resource=None,
3536
client_kwargs=None,
36-
random_name_enabled=False):
37+
random_name_enabled=False,
38+
delete_after_tag_timedelta=datetime.timedelta(days=1)):
3739
super(ResourceGroupPreparer, self).__init__(name_prefix, random_name_length,
3840
disable_recording=disable_recording,
3941
playback_fake_resource=playback_fake_resource,
@@ -50,13 +52,18 @@ def __init__(self, name_prefix='',
5052
if self.random_name_enabled:
5153
self.resource_moniker = self.name_prefix + "rgname"
5254
self.set_cache(use_cache, parameter_name)
55+
self.delete_after_tag_timedelta = delete_after_tag_timedelta
5356

5457
def create_resource(self, name, **kwargs):
5558
if self.is_live and self._need_creation:
5659
self.client = self.create_mgmt_client(ResourceManagementClient)
60+
parameters = {'location': self.location}
61+
if self.delete_after_tag_timedelta:
62+
expiry = datetime.datetime.utcnow() + self.delete_after_tag_timedelta
63+
parameters['tags'] = {'DeleteAfter': expiry.isoformat()}
5764
try:
5865
self.resource = self.client.resource_groups.create_or_update(
59-
name, {'location': self.location}
66+
name, parameters
6067
)
6168
except Exception as ex:
6269
if "ReservedResourceName" in str(ex):
@@ -92,4 +99,4 @@ def remove_resource(self, name, **kwargs):
9299
pass
93100

94101
RandomNameResourceGroupPreparer = partial(ResourceGroupPreparer, random_name_enabled=True)
95-
CachedResourceGroupPreparer = functools.partial(ResourceGroupPreparer, use_cache=True, random_name_enabled=True)
102+
CachedResourceGroupPreparer = partial(ResourceGroupPreparer, use_cache=True, random_name_enabled=True)

0 commit comments

Comments
 (0)