Skip to content

Commit

Permalink
[Breadth Coverage] logic apps (Azure#1423)
Browse files Browse the repository at this point in the history
* WIP: Add autogen code and customy changes for workflow and integration-account

* WIP: Impliment integration account update properly

* WIP: Update autogen, get test working

* WIP: Update workflow and intergration account names to name, remove unneeded commands

* WIP: update help file to match how commands actually should be used

* Update test cases to make them more robust. Remove test print statement

* Update integration account show test with proper checks

* Update test jsons to match paths of other extensions

* Remove some overlooked useless code, update try catch

* Remove elif since raises are called now

* Remove subscription specfic stuff from workflow.json

* WIP: New code gen and custom code to handle opaque logic objects and update

* Cusomize variouse commands and tests

add import integration account, fix naming, defualt integration account state if not specified, add update json file

* remove debug statements

* update recording

* Fix up help file

* Fix commands based on comments from PR 1428

* Update comments to match dicussion with service team

* Regen with logic service team swagger changes

* Add new yaml recording

* fix flake 8 linter

* More flake 8 fixes

* Fix flake 8 in init

* Fix help files

* Slight change in help file for create integration account

* Fix some help for workflow

* Add codeowner

* add msft to codeowner

* Add github alias

* Fix PR comments

* Update setup.py to read README.md

* Fix bug based on comments

* Custom change to support integration-account-sku correctly

* Flake8

Co-authored-by: bquantump <bquantump@users.noreply.github.com>
Co-authored-by: Jianhui Harold <haroldrandom@gmail.com>
  • Loading branch information
3 people authored Apr 24, 2020
1 parent 85c8cbf commit 4c707a0
Show file tree
Hide file tree
Showing 94 changed files with 38,106 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
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
Expand Down
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.
63 changes: 63 additions & 0 deletions src/logic/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Azure CLI Logic Apps Extension #
This package is for the 'logic app' extension, i.e. 'az logic'.
More info on what is [Logic](https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-overview).

### How to use ###
Install this extension using the below CLI command
```
az extension add --name logic
```

### Getting Help

To see examples of commands and parameters details got commands or command groups, one should run the command of interest with a -h

Examples:
```
az logic workflow create -h
az logic integration-account -h
az logic worflow update -h
```


##### Creating a Logic App

For creating a logic app, one must provide a logic app definition.
A definition is a JSON description of a logic app workflow. It is recommended that the logic app designer be used to create this definition, as these definitions can be very complex depending on a workflow. The designed tool works with VS Code, Visual Studio, and Azure Portal: https://docs.microsoft.com/en-us/azure/logic-apps/.

Access Controls: For a great reference on this see: (https://msftplayground.com/2020/02/managing-access-control-for-logic-apps/)
An example of how an access control would look is:

```json
"accessControl": { "triggers":
{ "allowedCallerIpAddresses":
[{ "addressRange": "10.0.0.0/24" }]},
"actions": { "allowedCallerIpAddresses":
[{ "addressRange": "10.0.0.0/24" }]}
}
```
##### Creating an Integration Account

Integration accounts are a way for Azure Logic Apps to utilize services outside of Azure to integrate into your logic app workflows. See (https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-enterprise-integration-create-integration-account) for more information.

Integration Service enviroments go hand in hand with a integration account. It is enviroment that connects to your azure vnet for seamless flow of data and logic apps services to on premise enviroments and services. See (https://azure.microsoft.com/en-us/blog/announcing-azure-integration-service-environment-for-logic-apps/) for more information


#### Import an Integration Account

You can import an integration account from a JSON file. Run az workflow integration-account import -h to see the parameters.

An example JSON for import could look like:

```json
{"properties": {
"state": "Enabled"
},
"sku": {
"name": "Standard"
},
"location": "centralus"
}
'''
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.isExperimental": true,
"azext.minCliCoreVersion": "2.3.1"
}
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
122 changes: 122 additions & 0 deletions src/logic/azext_logic/generated/_help.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# --------------------------------------------------------------------------------------------
# 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"
- name: List all workflows in a subscription
text: |-
az logic workflow list
"""

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"
"""

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"
"""

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"
"""

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"
"""
Loading

0 comments on commit 4c707a0

Please sign in to comment.