Azure / autorest.az

Azure CLI Code Generator
MIT License
22 stars 20 forks source link

[Custom] Optimize custom function #872

Closed kairu-ms closed 3 years ago

kairu-ms commented 3 years ago

Closed #860

Add if clause for optional parameters.

If the argument is optional, it will be assigned as parameter property when it is not None.

Previous Code

def videoanalyzer_video_create(client,
                               resource_group_name,
                               account_name,
                               video_name,
                               title=None,
                               description=None):
    parameters = {}
    parameters['title'] = title
    parameters['description'] = description
    return client.create_or_update(resource_group_name=resource_group_name,
                                   account_name=account_name,
                                   video_name=video_name,
                                   parameters=parameters)

Current Code

def videoanalyzer_video_create(client,
                               resource_group_name,
                               account_name,
                               video_name,
                               title=None,
                               description=None):
    parameters = {}
    if title is not None:
        parameters['title'] = title
    if description is not None:
        parameters['description'] = description
    return client.create_or_update(resource_group_name=resource_group_name,
                                   account_name=account_name,
                                   video_name=video_name,
                                   parameters=parameters)

Add logic to remove empty property of parameter.

If a property of parameter is optional and it is an empty dict, it will be removed from parameter.

Previous Code

def videoanalyzer_video_analyzer_create(client,
                                        resource_group_name,
                                        account_name,
                                        type_=None,
                                        user_assigned_identity=None,
                                        key_identifier=None,
                                        video_analyzer_identity_type=None,
                                        user_assigned_identities=None):
    parameters = {}

    parameters['encryption'] = {}
    parameters['encryption']['type'] = type_
    parameters['encryption']['identity'] = {}
    parameters['encryption']['identity']['user_assigned_identity'] = user_assigned_identity
    parameters['encryption']['key_vault_properties'] = {}
    parameters['encryption']['key_vault_properties']['key_identifier'] = key_identifier
    parameters['identity'] = {}
    parameters['identity']['type'] = video_analyzer_identity_type
    parameters['identity']['user_assigned_identities'] = user_assigned_identities
    return client.create_or_update(resource_group_name=resource_group_name,
                                   account_name=account_name,
                                   parameters=parameters)

Current Code

def videoanalyzer_video_analyzer_create(client,
                                        resource_group_name,
                                        account_name,
                                        type_=None,
                                        user_assigned_identity=None,
                                        key_identifier=None,
                                        video_analyzer_identity_type=None,
                                        user_assigned_identities=None):
    parameters = {}

    parameters['encryption'] = {}
    if type_ is not None:
        parameters['encryption']['type'] = type_
    parameters['encryption']['identity'] = {}
    if user_assigned_identity is not None:
        parameters['encryption']['identity']['user_assigned_identity'] = user_assigned_identity
    if len(parameters['encryption']['identity']) == 0:
        del parameters['encryption']['identity']
    parameters['encryption']['key_vault_properties'] = {}
    if key_identifier is not None:
        parameters['encryption']['key_vault_properties']['key_identifier'] = key_identifier
    if len(parameters['encryption']['key_vault_properties']) == 0:
        del parameters['encryption']['key_vault_properties']
    if len(parameters['encryption']) == 0:
        del parameters['encryption']

    parameters['identity'] = {}
    if video_analyzer_identity_type is not None:
        parameters['identity']['type'] = video_analyzer_identity_type
    if user_assigned_identities is not None:
        parameters['identity']['user_assigned_identities'] = user_assigned_identities
    if len(parameters['identity']) == 0:
        del parameters['identity']

    return client.create_or_update(resource_group_name=resource_group_name,
                                   account_name=account_name,
                                   parameters=parameters)