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
7 changes: 7 additions & 0 deletions linter_exclusions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3611,3 +3611,10 @@ confcom containers from_image:
image:
rule_exclusions:
- no_positional_parameters

relationship dependency-of create:
rule_exclusions:
- missing_command_example
relationship service-group-member create:
rule_exclusions:
- missing_command_example
8 changes: 8 additions & 0 deletions src/relationship/HISTORY.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.. :changelog:

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

1.0.0b1
+++++++
* Initial release.
4 changes: 4 additions & 0 deletions src/relationship/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include README.md
include HISTORY.rst
include azext_relationship/azext_metadata.json
recursive-include azext_relationship *.py
68 changes: 68 additions & 0 deletions src/relationship/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Azure CLI Relationship Extension #
This is an extension to Azure CLI to manage Relationship resources.

Relationships are ARM extension resources that create semantic associations
between a source resource and a target resource. Two relationship types are supported:

- **dependencyOf** — creates dependency links between ARM resources
- **serviceGroupMember** — associates resources with Service Groups

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

### Included Features

#### Create a dependencyOf relationship from a resource group to a service group
```
az relationship dependency-of create \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myDependency \
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
```

#### Create a dependencyOf relationship from a subscription to a service group
```
az relationship dependency-of create \
--resource-uri "/subscriptions/{sub}" \
--name subDep \
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
```

#### Show a dependencyOf relationship
```
az relationship dependency-of show \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myDependency
```

#### Delete a dependencyOf relationship
```
az relationship dependency-of delete \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myDependency --yes
```

#### Create a serviceGroupMember relationship
```
az relationship service-group-member create \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myMembership \
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
```

#### Show a serviceGroupMember relationship
```
az relationship service-group-member show \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myMembership
```

#### Delete a serviceGroupMember relationship
```
az relationship service-group-member delete \
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}" \
--name myMembership --yes
```
39 changes: 39 additions & 0 deletions src/relationship/azext_relationship/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# --------------------------------------------------------------------------------------------
# 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_relationship._help import helps # pylint: disable=unused-import


class RelationshipCommandsLoader(AzCommandsLoader):

def __init__(self, cli_ctx=None):
from azure.cli.core.commands import CliCommandType
relationship_custom = CliCommandType(
operations_tmpl='azext_relationship.custom#{}')
super().__init__(cli_ctx=cli_ctx, custom_command_type=relationship_custom)

def load_command_table(self, args):
from azext_relationship.commands import load_command_table
from azure.cli.core.aaz import load_aaz_command_table
try:
from . import aaz
except ImportError:
aaz = None
if aaz:
load_aaz_command_table(
loader=self,
aaz_pkg_name=aaz.__name__,
args=args
)
load_command_table(self, args)
return self.command_table

def load_arguments(self, command):
from azext_relationship._params import load_arguments
load_arguments(self, command)


COMMAND_LOADER_CLS = RelationshipCommandsLoader
123 changes: 123 additions & 0 deletions src/relationship/azext_relationship/_help.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# --------------------------------------------------------------------------------------------
# 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 # pylint: disable=unused-import


helps['relationship'] = """
type: group
short-summary: Manage Azure Relationships.
long-summary: |
Relationships are ARM extension resources that create semantic associations between
a source resource and a target resource. Two relationship types are supported:
dependencyOf (dependency links) and serviceGroupMember (service group membership).

NOTE: This command group is in preview and under development.
"""

helps['relationship dependency-of'] = """
type: group
short-summary: Manage dependencyOf relationships.
long-summary: |
DependencyOf relationships create dependency links between ARM resources.
Valid sources: Management Groups, Service Groups, Subscriptions, Resource Groups, Resources.
Valid targets: Management Groups, Service Groups, Resources.
"""

helps['relationship dependency-of create'] = """
type: command
short-summary: Create a dependencyOf relationship.
long-summary: Create or update a dependencyOf relationship. This is a long-running operation.
examples:
- name: Create a dependency from a resource group to a service group
text: >
az relationship dependency-of create
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myDependency
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
- name: Create a dependency from a subscription to a service group
text: >
az relationship dependency-of create
--resource-uri "/subscriptions/{sub}"
--name subDep
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
"""

helps['relationship dependency-of show'] = """
type: command
short-summary: Get the details of a dependencyOf relationship.
examples:
- name: Show a dependencyOf relationship
text: >
az relationship dependency-of show
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myDependency
"""

helps['relationship dependency-of delete'] = """
type: command
short-summary: Delete a dependencyOf relationship.
long-summary: Delete a dependencyOf relationship. This is a long-running operation.
examples:
- name: Delete a dependencyOf relationship
text: >
az relationship dependency-of delete
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myDependency --yes
"""

helps['relationship service-group-member'] = """
type: group
short-summary: Manage serviceGroupMember relationships.
long-summary: |
ServiceGroupMember relationships associate resources with Service Groups.
Valid sources: Service Groups, Subscriptions, Resource Groups, Resources.
Valid targets: Service Groups ONLY.
"""

helps['relationship service-group-member create'] = """
type: command
short-summary: Create a serviceGroupMember relationship.
long-summary: Create or update a serviceGroupMember relationship. This is a long-running operation.
examples:
- name: Create a service group membership from a resource group
text: >
az relationship service-group-member create
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myMembership
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
- name: Create a service group membership from a subscription
text: >
az relationship service-group-member create
--resource-uri "/subscriptions/{sub}"
--name subMembership
--target-id "/providers/Microsoft.Management/serviceGroups/mySG"
"""

helps['relationship service-group-member show'] = """
type: command
short-summary: Get the details of a serviceGroupMember relationship.
examples:
- name: Show a serviceGroupMember relationship
text: >
az relationship service-group-member show
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myMembership
"""

helps['relationship service-group-member delete'] = """
type: command
short-summary: Delete a serviceGroupMember relationship.
long-summary: Delete a serviceGroupMember relationship. This is a long-running operation.
examples:
- name: Delete a serviceGroupMember relationship
text: >
az relationship service-group-member delete
--resource-uri "/subscriptions/{sub}/resourceGroups/{rg}"
--name myMembership --yes
"""
8 changes: 8 additions & 0 deletions src/relationship/azext_relationship/_params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------


def load_arguments(self, _): # pylint: disable=unused-argument
pass
6 changes: 6 additions & 0 deletions src/relationship/azext_relationship/aaz/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------
10 changes: 10 additions & 0 deletions src/relationship/azext_relationship/aaz/latest/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------

# pylint: skip-file
# flake8: noqa

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------

# pylint: skip-file
# flake8: noqa

from azure.cli.core.aaz import *


@register_command_group(
"relationship",
)
class __CMDGroup(AAZCommandGroup):
"""Manage Relationships
"""
pass


__all__ = ["__CMDGroup"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------

# pylint: skip-file
# flake8: noqa

from .__cmd_group import *
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------

# pylint: skip-file
# flake8: noqa

from azure.cli.core.aaz import *


@register_command_group(
"relationship dependency-of",
)
class __CMDGroup(AAZCommandGroup):
"""Manage Dependency Of
"""
pass


__all__ = ["__CMDGroup"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# --------------------------------------------------------------------------------------------
# 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 aaz-dev-tools
# --------------------------------------------------------------------------------------------

# pylint: skip-file
# flake8: noqa

from .__cmd_group import *
from ._create import *
from ._delete import *
from ._show import *
Loading
Loading