Skip to content
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
57d3896
WIP: Add autogen code and customy changes for workflow and integratio…
bquantump Mar 15, 2020
eef64c8
WIP: Impliment integration account update properly
bquantump Mar 16, 2020
1824ffe
WIP: Update autogen, get test working
bquantump Mar 19, 2020
96ec237
WIP: Update workflow and intergration account names to name, remove u…
bquantump Mar 19, 2020
ec74b58
WIP: update help file to match how commands actually should be used
bquantump Mar 19, 2020
d8b93e9
Merge branch 'master' into master
bquantump Mar 19, 2020
8c9eb5e
Update test cases to make them more robust. Remove test print statement
bquantump Mar 20, 2020
a65912c
Merge branch 'master' into master
bquantump Mar 20, 2020
dc7c9b5
Update integration account show test with proper checks
bquantump Mar 20, 2020
7539b43
Merge branch 'master' of https://github.com/bquantump/azure-cli-exten…
bquantump Mar 20, 2020
ea4fa96
Update test jsons to match paths of other extensions
bquantump Mar 20, 2020
784634a
Remove some overlooked useless code, update try catch
bquantump Mar 20, 2020
6d4bc1e
Remove elif since raises are called now
bquantump Mar 20, 2020
83aeabc
Remove subscription specfic stuff from workflow.json
bquantump Mar 20, 2020
7dfe858
WIP: New code gen and custom code to handle opaque logic objects and …
bquantump Mar 31, 2020
325ffc3
Cusomize variouse commands and tests
bquantump Mar 31, 2020
8185c5a
remove debug statements
bquantump Mar 31, 2020
a9259fe
update recording
bquantump Mar 31, 2020
414165d
Fix up help file
bquantump Mar 31, 2020
b5121f6
Merge branch 'master' into master
bquantump Mar 31, 2020
0dd4e11
Fix commands based on comments from PR 1428
bquantump Mar 31, 2020
68fd993
Merge branch 'master' of https://github.com/bquantump/azure-cli-exten…
bquantump Mar 31, 2020
6abf027
Update comments to match dicussion with service team
bquantump Apr 9, 2020
3ff3a91
Regen with logic service team swagger changes
bquantump Apr 10, 2020
8e1b9b6
Add new yaml recording
bquantump Apr 10, 2020
4603792
fix flake 8 linter
bquantump Apr 14, 2020
746c558
More flake 8 fixes
bquantump Apr 14, 2020
292ee02
Fix flake 8 in init
bquantump Apr 14, 2020
aa55b10
Fix help files
bquantump Apr 14, 2020
fb0ed48
Slight change in help file for create integration account
bquantump Apr 14, 2020
98adc7f
Fix some help for workflow
bquantump Apr 14, 2020
00be4f2
Add codeowner
bquantump Apr 14, 2020
2c3bafe
add msft to codeowner
bquantump Apr 14, 2020
8a2c089
Add github alias
bquantump Apr 14, 2020
5633d6f
Merge branch 'master' into master
Apr 15, 2020
7547ee2
Fix PR comments
bquantump Apr 16, 2020
0b684fe
Update setup.py to read README.md
bquantump Apr 16, 2020
a4e8b5d
Merge https://github.com/Azure/azure-cli-extensions
bquantump Apr 22, 2020
dd767e6
Fix bug based on comments
bquantump Apr 22, 2020
bf6df85
Merge branch 'master' of https://github.com/bquantump/azure-cli-exten…
bquantump Apr 22, 2020
343044d
Custom change to support integration-account-sku correctly
bquantump Apr 23, 2020
2d97a78
Flake8
bquantump Apr 23, 2020
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
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@

/src/blueprint/ @fengzhou-msft

/src/logic/ @bquantump

/src/databox/ @jsntcy

/src/hpc-cache/ @qianwens
8 changes: 8 additions & 0 deletions src/logic/HISTORY.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.. :changelog:

Release History
===============

0.1.0
++++++
* Initial release.
5 changes: 5 additions & 0 deletions src/logic/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Microsoft Azure CLI 'logic' Extension
==========================================

This package is for the 'logic' extension.
i.e. 'az logic'
Comment thread
bquantump marked this conversation as resolved.
Outdated
41 changes: 41 additions & 0 deletions src/logic/azext_logic/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from azure.cli.core import AzCommandsLoader
from azext_logic.generated._help import helps # pylint: disable=unused-import


class LogicManagementClientCommandsLoader(AzCommandsLoader):

def __init__(self, cli_ctx=None):
from azure.cli.core.commands import CliCommandType
from azext_logic.generated._client_factory import cf_logic
logic_custom = CliCommandType(
operations_tmpl='azext_logic.custom#{}',
client_factory=cf_logic)
super(LogicManagementClientCommandsLoader, self).__init__(cli_ctx=cli_ctx,
custom_command_type=logic_custom)

def load_command_table(self, args):
from azext_logic.generated.commands import load_command_table
load_command_table(self, args)
try:
from azext_logic.manual.commands import load_command_table as load_command_table_manual
load_command_table_manual(self, args)
except ImportError:
pass
return self.command_table

def load_arguments(self, command):
from azext_logic.generated._params import load_arguments
load_arguments(self, command)
try:
from azext_logic.manual._params import load_arguments as load_arguments_manual
load_arguments_manual(self, command)
except ImportError:
pass


COMMAND_LOADER_CLS = LogicManagementClientCommandsLoader
12 changes: 12 additions & 0 deletions src/logic/azext_logic/action.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# pylint: disable=wildcard-import
# pylint: disable=unused-wildcard-import

from .generated.action import * # noqa: F403
try:
from .manual.action import * # noqa: F403
except ImportError:
pass
4 changes: 4 additions & 0 deletions src/logic/azext_logic/azext_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"azext.isPreview": true,
"azext.minCliCoreVersion": "2.0.67"
Comment thread
bquantump marked this conversation as resolved.
Outdated
}
12 changes: 12 additions & 0 deletions src/logic/azext_logic/commands.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# pylint: disable=wildcard-import
# pylint: disable=unused-wildcard-import

from .generated.commands import * # noqa: F403
try:
from .manual.commands import * # noqa: F403
except ImportError:
pass
12 changes: 12 additions & 0 deletions src/logic/azext_logic/custom.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# pylint: disable=wildcard-import
# pylint: disable=unused-wildcard-import

from .generated.custom import * # noqa: F403
try:
from .manual.custom import * # noqa: F403
except ImportError:
pass
12 changes: 12 additions & 0 deletions src/logic/azext_logic/generated/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 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.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

__path__ = __import__('pkgutil').extend_path(__path__, __name__)
18 changes: 18 additions & 0 deletions src/logic/azext_logic/generated/_client_factory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------


def cf_logic(cli_ctx, *_):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from ..vendored_sdks.logic import LogicManagementClient
return get_mgmt_service_client(cli_ctx, LogicManagementClient)


def cf_workflow(cli_ctx, *_):
return cf_logic(cli_ctx).workflow


def cf_integration_account(cli_ctx, *_):
return cf_logic(cli_ctx).integration_account
119 changes: 119 additions & 0 deletions src/logic/azext_logic/generated/_help.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# pylint: disable=line-too-long
# pylint: disable=too-many-lines

from knack.help_files import helps


helps['logic workflow'] = """
type: group
short-summary: logic workflow
"""

helps['logic workflow list'] = """
type: command
short-summary: Gets a list of workflows by subscription.
examples:
- name: List all workflows in a resource group
text: |-
az logic workflow list --resource-group "test_resource_group"
Comment thread
bquantump marked this conversation as resolved.
"""

helps['logic workflow show'] = """
type: command
short-summary: Gets a workflow.
examples:
- name: Get a workflow
text: |-
az logic workflow show --resource-group "test_resource_group" --name "test_workflow"
"""

helps['logic workflow create'] = """
type: command
short-summary: Creates or updates a workflow using a JSON file for the defintion.
examples:
- name: Create or update a workflow
text: |-
az logic workflow create --resource-group "test_resource_group" --location "centralus" --name "test_workflow" --definition "workflow.json"
Comment thread
bquantump marked this conversation as resolved.
"""

helps['logic workflow update'] = """
type: command
short-summary: Updates a workflow.
examples:
- name: Patch a workflow
text: |-
az logic workflow update --resource-group "test_resource_group" --definition workflow.json --name "test_workflow"
"""

helps['logic workflow delete'] = """
type: command
short-summary: Deletes a workflow.
examples:
- name: Delete a workflow
text: |-
az logic workflow delete --resource-group "test_resource_group" --name "test_workflow"
"""

helps['logic integration-account'] = """
type: group
short-summary: logic integration-account
"""

helps['logic integration-account list'] = """
type: command
short-summary: Gets a list of integration accounts by subscription.
examples:
- name: List integration accounts by resource group name
text: |-
az logic integration-account list --resource-group "test_resource_group"
"""

helps['logic integration-account show'] = """
type: command
short-summary: Gets an integration account.
examples:
- name: Get integration account by name
text: |-
az logic integration-account show --name "test_integration_account" --resource-group "test_resource_group"
"""

helps['logic integration-account create'] = """
type: command
short-summary: Creates or updates an integration account.
examples:
- name: Create or update an integration account
text: |-
az logic integration-account create --location "centralus" --sku name=Standard --name "test_integration_account" --resource-group "test_resource_group"
Comment thread
bquantump marked this conversation as resolved.
"""

helps['logic integration-account update'] = """
type: command
short-summary: Updates an integration account.
examples:
- name: Patch an integration account
text: |-
az logic integration-account update --sku name=Basic --tag atag=123 --name "test_integration_account" --resource-group "test_resource_group"
"""


helps['logic integration-account import'] = """
type: command
short-summary: Import an integration account from a JSON file.
examples:
- name: Import an integration account.
text: |-
az logic integration-account import --name "test_integration_account" --resource-group "test_resource_group" --input-path "integration.json"
Comment thread
bquantump marked this conversation as resolved.
"""

helps['logic integration-account delete'] = """
type: command
short-summary: Deletes an integration account.
examples:
- name: Delete an integration account
text: |-
az logic integration-account delete --name "test_integration_account" --resource-group "test_resource_group"
"""
132 changes: 132 additions & 0 deletions src/logic/azext_logic/generated/_params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# pylint: disable=too-many-lines
# pylint: disable=too-many-statements

from argcomplete.completers import FilesCompleter
from knack.arguments import CLIArgumentType
from azure.cli.core.commands.parameters import (
file_type,
tags_type,
get_enum_type,
resource_group_name_type,
get_location_type
)
from azext_logic.action import (
AddIntegrationAccount,
AddSku,
AddKeyVault
)


def load_arguments(self, _):

with self.argument_context('logic workflow list') as c:
c.argument('resource_group_name', resource_group_name_type,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the argument name is defined as resource_group_name, we could skip this definition here, the framework will help to do it automatically.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you suggesting to just remove the resource_group_name argument? That seems odd, because other developers can’t just glean from the code what arguments are part of a command. Maybe this is not the suggestion, though?

help='The resource group name.')
c.argument(
'top', help='The number of items to be included in the result.')
c.argument('filter', help='The filter to apply on the operation. Options for filters include: State, Trigger, a'
Comment thread
bquantump marked this conversation as resolved.
'nd ReferencedResourceId.')

with self.argument_context('logic workflow show') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The workflow name.')

with self.argument_context('logic workflow create') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The workflow name.')
c.argument('definition', type=file_type, help='Path to a workflow JSON file. ' +
'This JSON format should match what the logic app design tool exports', completer=FilesCompleter())
c.argument('location', arg_type=get_location_type(
self.cli_ctx), help='The resource location.')
Comment thread
bquantump marked this conversation as resolved.
Outdated
c.argument('integration_account', action=AddIntegrationAccount,
nargs='+', help='The integration account.')
c.argument('integration_service_environment', action=AddIntegrationAccount, nargs='+', help='The integration se'
'rvice environment.')
c.argument('endpoints_configuration', arg_type=CLIArgumentType(options_list=['--endpoints-configuration'],
help='The endpoints configuration.'))
c.argument('access_control', arg_type=CLIArgumentType(options_list=['--access-control'], help='The access contr'
'ol configuration.'))
c.argument('state', arg_type=get_enum_type(['NotSpecified', 'Completed', 'Enabled', 'Disabled', 'Deleted', 'Sus'
'pended']), help='The state.')
c.argument('tags', tags_type, help='The resource tags.')

with self.argument_context('logic workflow update') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The workflow name.')
c.argument('state', arg_type=get_enum_type(['NotSpecified', 'Completed', 'Enabled', 'Disabled', 'Deleted', 'Sus'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these values defined in an Enum type? If yes (take XXXState for example), we'd better to use get_enum_type(XXXState) in case the enum definition changes in the future.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RodgeFu Should the codgen handle this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@arrownj , i am not quite get the issue here. looks like the get_emum_type has already been used. could you provide more details?

'pended']), help='The state.')
c.argument('definition', type=file_type, help='Path to a workflow JSON file. ' +
'This JSON format should match what the logic app design tool exports', completer=FilesCompleter())
c.argument('tags', tags_type, help='The resource tags.')

with self.argument_context('logic workflow delete') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The workflow name.')

with self.argument_context('logic integration-account list') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument(
'top', help='The number of items to be included in the result.')

with self.argument_context('logic integration-account show') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The integration account name.')

with self.argument_context('logic integration-account create') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The integration account name.')
c.argument('location', arg_type=get_location_type(
Comment thread
bquantump marked this conversation as resolved.
self.cli_ctx), help='The resource location.')
c.argument('tags', tags_type, help='The resource tags.')
c.argument('sku', action=AddSku, nargs='+', help='The sku.')
c.argument('integration_service_environment', arg_type=CLIArgumentType(options_list=['--integration-service-env'
'ironment'], help='The integration service environment.'))
c.argument('state', arg_type=get_enum_type(['NotSpecified', 'Completed', 'Enabled', 'Disabled', 'Deleted', 'Sus'
'pended']), help='The workflow state.')

with self.argument_context('logic integration-account update') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The integration account name.')
c.argument('tags', tags_type, help='The resource tags.')
c.argument('sku', action=AddSku, nargs='+', help='The sku.')
c.argument('integration_service_environment', arg_type=CLIArgumentType(options_list=['--integration-service-env'
'ironment'], help='The integration service environment.'))
c.argument('state', arg_type=get_enum_type(['NotSpecified', 'Completed', 'Enabled', 'Disabled', 'Deleted', 'Sus'
'pended']), help='The workflow state.')

with self.argument_context('logic integration-account delete') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The integration account name.')

with self.argument_context('logic integration-account import') as c:
c.argument('resource_group_name', resource_group_name_type,
help='The resource group name.')
c.argument('name', options_list=[
'--name', '-n'], help='The integration account name.')
c.argument('input_path', type=file_type,
help='Path to a intergration-account JSON file', completer=FilesCompleter())
c.argument('location', arg_type=get_location_type(
self.cli_ctx), help='The resource location.')
c.argument('tags', tags_type, help='The resource tags.')
c.argument('sku', type=str, help='The integration account sku.')
Comment thread
bquantump marked this conversation as resolved.
Loading