Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

achurchard/robustness #6473

Closed
wants to merge 156 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
b0119b3
initial commit of azdev generated files and code
jddarby Apr 18, 2023
b3d8ebc
add SDK generated with autorest tool
jddarby Apr 24, 2023
af1accc
Add missing file
jddarby Apr 24, 2023
d4ee4e6
Commit changes
jddarby Apr 26, 2023
cff0186
VNF NFD generator
sunnycarter Apr 26, 2023
b761cac
Merge pull request #1 from jddarby/sunny/vnf-definition
sunnycarter Apr 26, 2023
5cdd0d8
Draft create NFDV using python SDK
sunnycarter Apr 26, 2023
8cdf766
Add deployer class
jddarby Apr 27, 2023
105c809
pushing this but then moving on to delete
sunnycarter Apr 27, 2023
a2de28e
Merge branch 'add-aosm-extension' into sunny/bicep-deployer
sunnycarter Apr 27, 2023
9baaeb3
start to move to bicep deployer
sunnycarter Apr 28, 2023
4fa8b8a
VNF generate and deploy bare bones, not working
sunnycarter Apr 28, 2023
4ea921a
predeployer maybe working
sunnycarter May 2, 2023
27a2597
Fix up VNF generate and deploy
sunnycarter May 2, 2023
c19920e
printing
sunnycarter May 2, 2023
8bbe2b7
artifact upload half broken
sunnycarter May 3, 2023
91cfe36
Artifact manifest stuff over to SDK
sunnycarter May 3, 2023
a2410b4
delete NFD function
sunnycarter May 3, 2023
bfadbeb
linting
sunnycarter May 3, 2023
1625852
add psudo code for CNF generation
jddarby May 4, 2023
18d00d0
Fix up json config -> VNFConfiguration
sunnycarter May 4, 2023
1b77c7e
add psudo code for CNF generation
jddarby May 4, 2023
0d15355
Add CNFConfiguration
jddarby May 5, 2023
fb0a3d3
Merge branch 'add-cnf-generation' of https://github.com/jddarby/azure…
May 5, 2023
bf0a29f
artifact manifests separate
sunnycarter May 5, 2023
c741773
style
sunnycarter May 5, 2023
a956ce6
renames
sunnycarter May 5, 2023
7088b06
style
sunnycarter May 5, 2023
3e224a2
lint and reverse some renames
sunnycarter May 5, 2023
155c533
dev instructions
sunnycarter May 5, 2023
edd5d10
oops. bad find and replace work.
sunnycarter May 5, 2023
d2e19c2
undo friday afternoon bad changes
sunnycarter May 5, 2023
1aaa00a
manifest optional
sunnycarter May 5, 2023
1c598cb
Basic README
sunnycarter May 5, 2023
985ceb2
delete publisher definition
sunnycarter May 5, 2023
eb83c78
unwanted constant
sunnycarter May 5, 2023
fe87a11
d
sunnycarter May 5, 2023
cb51f0a
fill in init function
jddarby May 9, 2023
5d3bc12
Merge remote-tracking branch 'origin/sunny/bicep-deployer' into add-c…
jddarby May 9, 2023
08cbca0
Add more boilerplate
jddarby May 10, 2023
c94535e
Merge branch 'add-cnf-generation' of https://github.com/jddarby/azure…
May 11, 2023
b69aa14
initial commit; will remove input.json after testing done
May 12, 2023
057ef05
Sunny/bicep deployer (#3)
sunnycarter May 12, 2023
9f2136f
tried a few functions
May 12, 2023
da317e8
up to generate nf application
May 15, 2023
e1e8c67
tidied + fixed helmconfig as dict issue
May 15, 2023
80f9a32
fixed merge conflicts
May 15, 2023
1eaa34f
removed deploy with sdk
May 15, 2023
21809b2
added artifact list
May 16, 2023
89636e5
push example cnf bicep
jddarby May 16, 2023
715c925
Add temporary build workflow for AOSM extension (#4)
PerfectChaos May 16, 2023
0f50403
added output dir; fixing getchartmappingschema
May 16, 2023
fbba297
Merge branch 'jl/add-cnf-generation' of github.com:jddarby/azure-cli-…
May 16, 2023
f92435c
Add empty init files to inner modules so setuptools recognises them a…
PerfectChaos May 16, 2023
0b1266f
Merge pull request #5 from jddarby/chaos/fixpackages
PerfectChaos May 16, 2023
599ac38
Use latest RG model to remove unnecessary dependency on version
PerfectChaos May 16, 2023
5437fac
Merge pull request #6 from jddarby/chaos/generalrgmodel
PerfectChaos May 16, 2023
2efdba6
Use latest deployment model to remove unnecessary dependency on version
PerfectChaos May 16, 2023
c80ced8
Merge pull request #7 from jddarby/chaos/generaldeploymodel
PerfectChaos May 16, 2023
dfd5790
fixed parameter mappings + copied needed files to output folder
May 17, 2023
4747224
jinja2 and find value paths
jddarby May 17, 2023
58d525d
Merge branch 'jl/add-cnf-generation' of github.com:jddarby/azure-cli-…
jddarby May 17, 2023
3188399
fixed typos + self.aritfacts only has unique artifacts
May 17, 2023
30921b8
use regex instead of string to find deploy params
jddarby May 18, 2023
3501b82
delete accidentaly commited input.json
jddarby May 18, 2023
7064890
fixed deploy params; added indent to mapping file
May 18, 2023
ae4f8fe
Merge branch 'jl/add-cnf-generation' of github.com:jddarby/azure-cli-…
May 18, 2023
2604a71
Update readme with install/bug reporting instructions
PerfectChaos May 18, 2023
961daad
Adjust headers so rendered readme looks nicer
PerfectChaos May 18, 2023
8274996
renamed values.nondef + added cli errors
May 18, 2023
d4fbc16
Split help command example lines
PerfectChaos May 18, 2023
671fb64
Clarify that bug process is internal
PerfectChaos May 18, 2023
b3573e8
Merge pull request #9 from jddarby/chaos/installinstructions
PerfectChaos May 18, 2023
eb3c1a5
fixed parameter vals not updating
May 18, 2023
1a29b43
delete unuseed temoplate and update jinja2 templates
jddarby May 18, 2023
13f72f4
Merge pull request #8 from jddarby/jl/add-cnf-generation
jordlay May 19, 2023
6099b7a
Update README.md
jordlay May 22, 2023
3c52481
Update README.md
jordlay May 22, 2023
8c94905
added docstrings; added basic error catching with file handling
May 22, 2023
aa0b061
small refactor of generate nfd
May 23, 2023
c988938
Merge pull request #11 from jddarby/jl/tidy-up
jordlay May 23, 2023
9d15f95
fixed j2 template captions; added create_nfd to cnf; edited error mes…
May 24, 2023
1853cba
fixed file not found erroe
May 24, 2023
c6d6680
Refactor commands to az aosm nfd|nsd build (#10)
sunnycarter May 24, 2023
13c27cc
fixed most style errors; ran static checks and azdev style
May 24, 2023
ff1793c
pre merge commit
May 24, 2023
651ba78
Merge branch 'add-aosm-extension' of github.com:jddarby/azure-cli-ext…
May 24, 2023
5bde597
more style changes; renamed vnfbicepnfd to vnfnfd
May 24, 2023
a79ef57
Update readme with workflow
sunnycarter May 24, 2023
168c265
added configfile validation
May 24, 2023
e43cb92
added temp dir to vnf; renamed shared constants
May 25, 2023
9694c9b
sunny markups
sunnycarter May 25, 2023
9efa296
removed create_nfd_folder; added schema prefix to constant
May 25, 2023
2d19e34
fixed merge conflicts
May 25, 2023
a40cc3d
added deploymentparams to constants.py
May 25, 2023
e63f199
added error catching for get chart name and version
May 25, 2023
c26369a
Merge pull request #12 from jddarby/jl/post-review-fixes
jordlay May 25, 2023
2dee8c4
added meaningful logs; prevent auto overwriting input.json
May 25, 2023
bb6302a
edited vnf schema to have accepted types
May 26, 2023
d5b03c6
added templates to setup.py
May 26, 2023
f43f313
Merge pull request #14 from jddarby/jl/fix-python-wheel
jordlay May 26, 2023
276d3ca
Merge pull request #13 from jddarby/jl/first-round-feedback
jordlay May 26, 2023
d7f1b7a
added location from input file not resourceGroup().location
May 26, 2023
938b02e
Merge pull request #16 from jddarby/jl/manifest-location-bug
jordlay May 26, 2023
ab95a7c
added path_to_mappings to input.json; added logic to take mappings fr…
Jun 2, 2023
65ac401
renamed non_def_values to mappings_path
Jun 2, 2023
371a1ea
Merge pull request #18 from jddarby/jl/change-value-mappings
jordlay Jun 2, 2023
dda5957
Pk5/add nsd cli (#15)
patrykkulik-microsoft Jun 2, 2023
cdfde0f
fix CNF depends on
jddarby Jun 6, 2023
25d05b1
Merge pull request #19 from jddarby/jdd/fix-depends-on
jddarby Jun 6, 2023
6ed8ffa
Merge remote-tracking branch 'origin/main' into add-aosm-extension
jddarby Jun 6, 2023
5b1e3aa
initial commit; ran python static checks fmt (except on vendored sdks…
Jun 6, 2023
a1035f7
Name uploaded VHD correctly
Jamieparsons Jun 6, 2023
77e2e95
Self review markups
Jamieparsons Jun 6, 2023
b557b7f
fixed up configuration.py
Jun 6, 2023
a7d7574
fixed cnf generator styling
Jun 6, 2023
6d0520d
fixed styling for cnf generator
Jun 6, 2023
4c1a2ee
fixed up nfd generator base and deploy with arm
Jun 6, 2023
8e8db34
fixed styling for artifact.py
Jun 6, 2023
44299e6
fixed styling for atrifact manifest .py
Jun 6, 2023
e38d425
Code review markups
Jamieparsons Jun 6, 2023
6cda523
Merge pull request #20 from jddarby/JDP/bug-735056
jamiedparsons Jun 6, 2023
d0f1276
fixed more linting
Jun 7, 2023
a6c292c
fixed merge conflicts
Jun 7, 2023
649ace6
Merge pull request #21 from jddarby/jl/fix-style
jordlay Jun 7, 2023
5f7b608
first attempt at regex
Jun 9, 2023
09be248
Sunny/choose deploy parameters (#23)
sunnycarter Jun 9, 2023
e680931
Fix for oras target string with erroneous spaces
Jun 14, 2023
a087421
Merge pull request #26 from jddarby/achurchard/fix_oras_target_string
Cyclam Jun 14, 2023
4c54367
fixed regex; tested on existing charts and sas charts; committing to …
Jun 15, 2023
70c7346
changed regex constants + tidied
Jun 15, 2023
126c68c
fixed blankspace
Jun 15, 2023
cbf8f67
fix merge conflicts
Jun 15, 2023
93fb6af
markups
Jun 15, 2023
b19dcc3
Merge pull request #28 from jddarby/jl/edit-image-secrets-paths
jordlay Jun 15, 2023
c57e4c5
initial commit
Jun 16, 2023
63b4346
tidied code and added comments
Jun 16, 2023
9e67219
Merge branch 'Azure:main' into add-aosm-extension
jddarby Jun 17, 2023
93840e8
Add style and lint check
jddarby Jun 17, 2023
6c9a478
added logic for handling deployparams within lists
Jun 19, 2023
3adcb80
one line fix from review
Jun 19, 2023
1c0dbe1
Merge pull request #29 from jddarby/jl/refactor-deploy-params
jordlay Jun 19, 2023
85ae247
removing print statement
Jun 19, 2023
0f2fb35
Merge pull request #31 from jddarby/jl/refactor-deploy-params
jordlay Jun 19, 2023
9419ef9
Merge branch 'main' of https://github.com/Azure/azure-cli-extensions …
sunnycarter Jun 20, 2023
4013895
Nsd for cnfs (#33)
sunnycarter Jun 22, 2023
689acf4
Add Publish command to the CNF azure CLI (#24)
patrykkulik-microsoft Jun 23, 2023
a403856
Expose NFD version and managed identities (#34)
jamiedparsons Jun 27, 2023
f06efc3
achurchard/style fixes (#35)
Cyclam Jun 29, 2023
3b125df
Use constants directly, no need to assign to instance variables
Jun 30, 2023
3455460
Refactor VNF file creation and copying
Jun 30, 2023
532d859
Sundry fixes for CNF quickstart
sunnycarter Jun 30, 2023
f4bd00c
merge add-aosm-ext in (#37)
sunnycarter Jun 30, 2023
cc4e38f
Merge branch 'add-aosm-extension' into sunny/fix-identities
sunnycarter Jun 30, 2023
7531e28
Merge branch 'sunny/fix-identities' into achurchard/robustness
Jul 3, 2023
79956e7
cnf-changes
Jul 4, 2023
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
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,8 @@

/src/alb/ @jaishals

/src/azext_aosm/ @jddarby

/src/managedccfs/ @msftsettiy

/src/acrquery/ @CarolineNB
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/BuildAOSMWheel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
on:
push:
branches:
- add-aosm-extension

jobs:
build_aosm:
runs-on: ubuntu-latest
container: mcr.microsoft.com/azure-cli/tools:latest
permissions: write-all
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build AOSM Wheel
run: |
# Pretend we have a valid git repo to satisfy azdev.
mkdir .git
azdev setup -r .
azdev extension build aosm
- name: Upload AOSM Wheel
uses: actions/upload-artifact@v3
with:
name: aosm-extension
path: dist/*.whl
- name: Update Release
uses: pyTooling/Actions/releaser@r0
with:
token: ${{ secrets.GITHUB_TOKEN }}
files: |
dist/*.whl
tag: aosm-extension
18 changes: 18 additions & 0 deletions .github/workflows/CheckStyleAndLinting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Style and Lint Check

on:
pull_request:
types: [opened]

jobs:
build_aosm:
runs-on: ubuntu-latest
container: mcr.microsoft.com/azure-cli/tools:latest
permissions: write-all
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Check Style
run: azdev style aosm
- name: Check Linting
run: azdev linter aosm
30 changes: 30 additions & 0 deletions src/aosm/HISTORY.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
.. :changelog:

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

unreleased
++++++++++
* `az aosm nfd build` options `--order-params` and `--interactive` to help users choose which NF parameters to expose as deployParameters. Feature added that allows CNF value mappings file to be generated if none is supplied.
* NFDV version exposed as a CGV on an SNS.
* `az aosm nfd publish` option added for `--definition-type cnf` to publish the CNF bicep templates, upload helm charts from disk to the ACR and copy the images from a source ACR to the target ACR.
* Managed Identity added to VNF NF templates - requires subscription to be registered for the feature flag.
* Various fixes to NFD build of deployParameters schema and interactive mode create of deployParameters mappings file.
* Fix CNF NFD publish so that it doesn't render the ACR unuseable for future Artifact publishing.
* Allow CNF NFD image copy from a source ACR using a namespace.
* Fix - Add new CGSchema parameters not from the NFD to the `required` section of the schema.
* Add the ability to skip bicep publish or artifact upload during publish commands.
* Fix Manifest name for NSDs so it isn't the same as that for NFDs
* Add validation of source_registry_id format for CNF configuration

0.2.0
++++++
Breaking change to commands - now use `nfd` instead of `definition`. Publish option removed from build.
* `az aosm nfd generate-config` for vnf and cnf. This is for NFDVs
* `az aosm nfd build|publish|delete --definition-type vnf|cnf` for vnf and `build` only for cnf. This is for NFDVs

0.1.0
++++++
* Initial release - alpha quality
* `az aosm definition generate-config` for vnf and cnf. This is for NFDVs
* `az aosm definition build|publish|delete` for vnf and `build` only for cnf. This is for NFDVs
177 changes: 177 additions & 0 deletions src/aosm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# Microsoft Azure CLI 'aosm' Extension

This package is for the 'aosm' extension to support Azure Operator Service Manager
functions.
i.e. `az aosm`

## Background

The `az aosm` extension is intended to provide support for working with AOSM
resources and definitions. Currently it only implements commands which aid the
process of publishing Network Function Definitions and Network Service Designs to
use with Azure Operator Service Manager or Network Function Manager.

## Installation

Eventually the extension will be published through the usual process and it will be
installed as usual, via `az extension add --name aosm`

Until then, the latest development version can be found here:
https://github.com/jddarby/azure-cli-extensions/releases/download/aosm-extension/aosm-0.2.0-py2.py3-none-any.whl

To install, download this wheel and run:
`az extension add --source path/to/aosm-0.2.0-py2.py3-none-any.whl`

## Updating

We are currently not bumping versions, so if you would like the most up to date version of the CLI. You should run:
'az extension remove --name aosm'

And then re-add with the new wheel, as detailed in Installation above.

## Bug Reporting

Especially as this extension is still in development, you may encounter bugs or
usability issues as you try to use it in its current form. It would be much
appreciated if you could report these so that we're aware of them!

The (Microsoft internal) process for bug reporting during development is here:
https://eng.ms/docs/strategic-missions-and-technologies/strategic-missions-and-technologies-organization/azure-for-operators/aiops/aiops-orchestration/aosm-product-docs/processes/bug_process

CLI issues should be tagged and triaged as UX bugs.

## nfd and nsd commands

These commands help with the publishing of Network Function Definition and Network
Service Design resources.

## Overview of function
A generic workflow of using the tool would be:
- Find the pre-requisite items you require for your use-case
- Run a `generate-config` command to output an example JSON config file for subsequent commands
- Fill in the config file
- Run a `build` command to output one or more bicep templates for your Network Function Definition or Network Service Design
- Review the output of the build command, edit the output as necessary for your requirements
- Run a `publish` command to:
* Create all pre-requisite resources such as Resource Group, Publisher, Artifact Stores, Groups
* Deploy those bicep templates
* Upload artifacts to the artifact stores

### Pre-requisites

#### VNFs

For VNFs, you will need a single ARM template which would create the Azure resources
for your VNF, for example a Virtual Machine, disks and NICs. You'll also need a VHD
image that would be used for the VNF Virtual Machine.

#### CNFs

For CNFs you must have the `helm` package installed on the machine you are running the CLI from. Instructions on how to do this can be found [here](https://helm.sh/docs/intro/install/).

For CNFs, you must provide:
* helm packages with an associated schema. These files must be on your disk and will be referenced in the `input.json` config file.
* a reference to an existing Azure Container Registry which contains the images for your CNF. Currently, only one ACR is supported per CNF. The images to be copied from this ACR are populated automatically based on the helm package schema.
* optionally, you can provide a file (on disk) path_to_mappings which is a copy of values.yaml with your chosen values replaced by deployment parameters, thus exposing them as parameters to the CNF. You can get this file auto-generated by leaving the value as a blank string, either having every value as a deployment parameter, or using `--interactive` to interactively choose.
When filling in the input.json file, you must list helm packages in the order they are to be deployed. For example, if A must be deployed before B, your input.json should look something like this:

"helm_packages": [
{
"name": "A",
"path_to_chart": "Path to package A",
"path_to_mappings": "Path to package A mappings",
"depends_on": [
"Names of the Helm packages this package depends on"
]
},
{
"name": "B",
"path_to_chart": "Path to package B",
"path_to_mappings": "Path to package B mappings",
"depends_on": [
"Names of the Helm packages this package depends on"
]
},

#### NSDs
For NSDs, you will need to have a Resource Group with a deployed Publisher, Artifact Store, Network Function Definition and Network Function Definition Version. You can use the `az aosm nfd` commands to create all of these resources.


### Command examples

#### NFDs

Get help on command arguments

`az aosm -h`
`az aosm nfd -h`
`az aosm nfd build -h`
etc...

All these commands take a `--definition-type` argument of `vnf` or `cnf`

Create an example config file for building a definition

`az aosm nfd generate-config`

This will output a file called `input.json` which must be filled in.
Once the config file has been filled in the following commands can be run.

Build an nfd definition locally

`az aosm nfd build --config-file input.json`

More options on building an nfd definition locally:

Choose which of the VNF ARM template parameters you want to expose as NFD deploymentParameters, with the option of interactively choosing each one.

`az aosm nfd build --config-file input.json --definition_type vnf --order_params`
`az aosm nfd build --config-file input.json --definition_type vnf --order_params --interactive`

Choose which of the CNF Helm values parameters you want to expose as NFD deploymentParameters.

`az aosm nfd build --config-file input.json --definition_type cnf [--interactive]`

Publish a pre-built definition

`az aosm nfd publish --config-file input.json`

Delete a published definition

`az aosm nfd delete --config-file input.json`

Delete a published definition and the publisher, artifact stores and NFD group

`az aosm nfd delete --config-file input.json --clean`

#### NSDs

Get help on command arguments

`az aosm -h`
`az aosm nsd -h`
`az aosm nsd build -h`
etc...

Create an example config file for building a definition

`az aosm nsd generate-config`

This will output a file called `input.json` which must be filled in.
Once the config file has been filled in the following commands can be run.

Build an nsd locally

`az aosm nsd build --config-file input.json`

Publish a pre-built design

`az aosm nsd publish --config-file input.json`

Delete a published design

`az aosm nsd delete --config-file input.json`

Delete a published design and the publisher, artifact stores and NSD group

`az aosm nsd delete --config-file input.json --clean`
30 changes: 30 additions & 0 deletions src/aosm/azext_aosm/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# --------------------------------------------------------------------------------------------
# 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_aosm._help import helps # pylint: disable=unused-import


class AosmCommandsLoader(AzCommandsLoader):
def __init__(self, cli_ctx=None):
from azure.cli.core.commands import CliCommandType

aosm_custom = CliCommandType(operations_tmpl="azext_aosm.custom#{}")
super().__init__(cli_ctx=cli_ctx, custom_command_type=aosm_custom)

def load_command_table(self, args):
from azext_aosm.commands import load_command_table

load_command_table(self, args)
return self.command_table

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

load_arguments(self, command)


COMMAND_LOADER_CLS = AosmCommandsLoader
32 changes: 32 additions & 0 deletions src/aosm/azext_aosm/_client_factory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# --------------------------------------------------------------------------------------------
# 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.commands.client_factory import get_mgmt_service_client
from azure.cli.core.profiles import ResourceType
from azure.mgmt.containerregistry import ContainerRegistryManagementClient

from .vendored_sdks import HybridNetworkManagementClient


def cf_aosm(cli_ctx, *_) -> HybridNetworkManagementClient:
return get_mgmt_service_client(cli_ctx, HybridNetworkManagementClient)


def cf_resources(cli_ctx, subscription_id=None):
return get_mgmt_service_client(
cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, subscription_id=subscription_id
)


def cf_acr_registries(cli_ctx, *_) -> ContainerRegistryManagementClient:
"""
Returns the client for managing container registries.

:param cli_ctx: CLI context
:return: ContainerRegistryManagementClient object
"""
return get_mgmt_service_client(
cli_ctx, ResourceType.MGMT_CONTAINERREGISTRY
).registries
Loading
Loading