1# --------------------------------------------------------------------------------------------
2# Copyright (c) Microsoft Corporation. All rights reserved.
3# Licensed under the MIT License. See License.txt in the project root for license information.
4# --------------------------------------------------------------------------------------------
5
6from ._client_factory import web_client_factory
7
8
9MSI_LOCAL_ID = '[system]'
10
11
12def _generic_site_operation(cli_ctx, resource_group_name, name, operation_name, slot=None,
13                            extra_parameter=None, client=None, api_version=None):
14    # api_version was added to support targeting a specific API
15    # Based on get_appconfig_service_client example
16    client = client or web_client_factory(cli_ctx, api_version=api_version)
17    operation = getattr(client.web_apps,
18                        operation_name if slot is None else operation_name + '_slot')
19    if slot is None:
20        return (operation(resource_group_name, name)
21                if extra_parameter is None else operation(resource_group_name,
22                                                          name, extra_parameter))
23    return (operation(resource_group_name, name, slot)
24            if extra_parameter is None else operation(resource_group_name,
25                                                      name, slot, extra_parameter))
26
27
28def _generic_settings_operation(cli_ctx, resource_group_name, name, operation_name,
29                                setting_properties, slot=None, client=None, api_version=None):
30    client = client or web_client_factory(cli_ctx, api_version=api_version)
31    operation = getattr(client.web_apps, operation_name if slot is None else operation_name + '_slot')
32    if slot is None:
33        return operation(resource_group_name, name, setting_properties)
34
35    return operation(resource_group_name, name, slot, setting_properties)
36