-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
conditional_operation_sample_async.py
71 lines (55 loc) · 2.45 KB
/
conditional_operation_sample_async.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# coding: utf-8
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
"""
FILE: conditional_operation_async_sample.py
DESCRIPTION:
This sample demos conditional set/get/delete operations for app configuration
USAGE: python conditional_operation_async_sample.py
Set the environment variables with your own values before running the sample:
1) APPCONFIGURATION_CONNECTION_STRING: Connection String used to access the Azure App Configuration.
"""
import asyncio
import os
from azure.core import MatchConditions
from azure.core.exceptions import ResourceModifiedError
from azure.appconfiguration import ConfigurationSetting
from azure.appconfiguration.aio import AzureAppConfigurationClient
from util import print_configuration_setting
async def main():
CONNECTION_STRING = os.environ["APPCONFIGURATION_CONNECTION_STRING"]
# Create app config client
client = AzureAppConfigurationClient.from_connection_string(CONNECTION_STRING)
# Unconditional set
config_setting = ConfigurationSetting(
key="MyKey", value="my value", content_type="my content type", tags={"my tag": "my tag value"}
)
await client.set_configuration_setting(config_setting)
# Unconditional get
first_get = await client.get_configuration_setting(key="MyKey")
if first_get is None:
return print("Error, unconditional set failed.")
print_configuration_setting(first_get)
# Conditional get, expect to return None because it is not modified
second_get = await client.get_configuration_setting(
key="MyKey", etag=first_get.etag, match_condition=MatchConditions.IfModified
)
print_configuration_setting(second_get)
# Conditional set
first_get.value = "new value"
await client.set_configuration_setting(
configuration_setting=first_get, match_condition=MatchConditions.IfNotModified
)
# Conditional set, expect to see error because it is modified
try:
await client.set_configuration_setting(
configuration_setting=first_get, match_condition=MatchConditions.IfNotModified
)
except ResourceModifiedError:
pass
await client.delete_configuration_setting(key="MyKey")
if __name__ == "__main__":
asyncio.run(main())