Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/azure-cli/azure/cli/command_modules/appservice/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -2556,6 +2556,8 @@
examples:
- name: List app settings of the static app.
text: az staticwebapp appsettings list -n MyStaticAppName
- name: List app settings of the static app environment.
text: az staticwebapp appsettings list -n MyStaticAppName --environment-name MyEnvironmentName
"""

helps['staticwebapp appsettings set'] = """
Expand All @@ -2564,6 +2566,8 @@
examples:
- name: Add to or change the app settings of the static app.
text: az staticwebapp appsettings set -n MyStaticAppName --setting-names key1=val1 key2=val2
- name: Add to or change the app settings of the static app environment.
text: az staticwebapp appsettings set -n MyStaticAppName --setting-names key1=val1 key2=val2 --environment-name MyEnvironmentName
"""

helps['staticwebapp appsettings delete'] = """
Expand All @@ -2572,6 +2576,8 @@
examples:
- name: Delete given app settings of the static app.
text: az staticwebapp appsettings delete -n MyStaticAppName --setting-names key1 key2
- name: Delete given app settings of the static app.
text: az staticwebapp appsettings delete -n MyStaticAppName --setting-names key1 key2 --environment-name MyEnvironmentName
"""

helps['staticwebapp identity'] = """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1100,6 +1100,7 @@ def load_arguments(self, _):
help="Validation method for the custom domain.",
arg_type=get_enum_type(["cname-delegation", "dns-txt-token"]))
with self.argument_context('staticwebapp appsettings') as c:
c.argument('environment_name', help="Name of the environment of static site")
c.argument('setting_pairs', options_list=['--setting-names'],
help="Space-separated app settings in 'key=value' format. ",
nargs='*')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,15 +272,18 @@ def list_staticsite_functions(cmd, name, resource_group_name=None, environment_n
return client.list_static_site_build_functions(resource_group_name, name, environment_name)


def list_staticsite_app_settings(cmd, name, resource_group_name=None):
def list_staticsite_app_settings(cmd, name, resource_group_name=None, environment_name=None):
client = _get_staticsites_client_factory(cmd.cli_ctx)
if not resource_group_name:
resource_group_name = _get_resource_group_name_of_staticsite(client, name)

return client.list_static_site_app_settings(resource_group_name, name)
if not environment_name:
return client.list_static_site_app_settings(resource_group_name, name)

return client.list_static_site_build_app_settings(resource_group_name, name, environment_name)

def set_staticsite_app_settings(cmd, name, setting_pairs, resource_group_name=None):

def set_staticsite_app_settings(cmd, name, setting_pairs, resource_group_name=None, environment_name=None):
client = _get_staticsites_client_factory(cmd.cli_ctx)
if not resource_group_name:
resource_group_name = _get_resource_group_name_of_staticsite(client, name)
Expand All @@ -291,29 +294,37 @@ def set_staticsite_app_settings(cmd, name, setting_pairs, resource_group_name=No
setting_dict[key] = value

# fetch current settings to prevent deleting existing app settings
settings = list_staticsite_app_settings(cmd, name, resource_group_name)
app_settings = list_staticsite_app_settings(cmd, name, resource_group_name, environment_name)
for k, v in setting_dict.items():
settings.properties[k] = v
app_settings.properties[k] = v

if not environment_name:
return client.create_or_update_static_site_app_settings(
resource_group_name, name, app_settings=app_settings)

return client.create_or_update_static_site_app_settings(
resource_group_name, name, app_settings=settings)
return client.create_or_update_static_site_build_app_settings(
resource_group_name, name, environment_name, app_settings=app_settings)


def delete_staticsite_app_settings(cmd, name, setting_names, resource_group_name=None):
def delete_staticsite_app_settings(cmd, name, setting_names, resource_group_name=None, environment_name=None):
client = _get_staticsites_client_factory(cmd.cli_ctx)
if not resource_group_name:
resource_group_name = _get_resource_group_name_of_staticsite(client, name)

app_settings = client.list_static_site_app_settings(resource_group_name, name)
app_settings = list_staticsite_app_settings(cmd, name, resource_group_name, environment_name)

for key in setting_names:
if key in app_settings.properties:
app_settings.properties.pop(key)
else:
logger.warning("key '%s' not found in app settings", key)

return client.create_or_update_static_site_app_settings(
resource_group_name, name, app_settings=app_settings)
if not environment_name:
return client.create_or_update_static_site_app_settings(
resource_group_name, name, app_settings=app_settings)

return client.create_or_update_static_site_build_app_settings(
resource_group_name, name, environment_name, app_settings=app_settings)


def list_staticsite_users(cmd, name, resource_group_name=None, authentication_provider='all'):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,39 @@ class AppSettings:
# validate
self.staticapp_client.create_or_update_static_site_app_settings.assert_called_once()

def test_list_staticsite_app_settings_with_resourcegroup_with_environment(self):
list_staticsite_app_settings(self.mock_cmd, self.name1, self.rg1, self.environment1)

self.staticapp_client.list_static_site_build_app_settings.assert_called_once_with(
self.rg1, self.name1, self.environment1)

def test_set_staticsite_app_settings_with_resourcegroup_with_environment(self):
from azure.mgmt.web.models import StringDictionary

app_settings1_input = ['key1=val1', 'key2=val2==', 'key3=val3=']

self.staticapp_client.list_static_site_build_app_settings.return_value = StringDictionary(properties={})

set_staticsite_app_settings(self.mock_cmd, self.name1, app_settings1_input, self.rg1, self.environment1)

self.staticapp_client.create_or_update_static_site_build_app_settings.assert_called_once()

def test_delete_staticsite_app_settings_with_resourcegroup_with_environment(self):
# setup
current_app_settings = {'key1': 'val1', 'key2': 'val2'}
app_settings_keys_to_delete = ['key1']

class AppSettings:
properties = current_app_settings

self.staticapp_client.list_static_site_build_app_settings.return_value = AppSettings

# action
delete_staticsite_app_settings(self.mock_cmd, self.name1, app_settings_keys_to_delete, self.rg1, self.environment1)

# validate
self.staticapp_client.create_or_update_static_site_build_app_settings.assert_called_once()

def test_list_staticsite_users_with_resourcegroup(self):
authentication_provider = 'GitHub'

Expand Down