Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

[ACR]az acr tasks create | update,az acr build | run: Add ABAC support for ACR Tasks#31069

Draft
lizMSFT wants to merge3 commits intoAzure:dev
base:dev
Choose a base branch
Loading
fromlizMSFT:zoeyli/acr/abac_tasks

Conversation

lizMSFT
Copy link
Contributor

@lizMSFTlizMSFT commentedMar 18, 2025
edited
Loading

Related command
az acr tasks create | update
az acr build | run

Description
Added the new optional--source-registry-auth-id flag

This PR is not ready because the 2025-03-01-preview version hasn't been rolled out yet.

Testing Guide


This checklist is used to make sure that common guidelines for a pull request are followed.

@azure-client-tools-bot-prdazure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prdbot commentedMar 18, 2025
edited
Loading

❌AzureCLI-FullTest
❌acr
❌2020-09-01-hybrid
❌3.12
TypeTest CaseError MessageLine
Failedtest_acr_create_webhookself = <urllib3.response.HTTPResponse object at 0x7f841cc65f60>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
>               yield

env/lib/python3.12/site-packages/urllib3/response.py:444: 
                                        

self = <urllib3.response.HTTPResponse object at 0x7f841cc65f60>, amt = 4096
decode_content = True, cache_content = False

    def read(self, amt=None, decode_content=None, cache_content=False):
        """
        Similar to :meth:http.client.HTTPResponse.read, but with two additional
        parameters: decode_content and cache_content.
    
        :param amt:
            How much of the content to read. If specified, caching is skipped
            because it doesn't make sense to cache partial content as the full
            response.
    
        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.
    
        :param cache_content:
            If True, will save the returned data such that the same result is
            returned despite of the state of the underlying file object. This
            is useful if you want the .data property to continue working
            after having .read() the file object. (Overridden if amt is
            set.)
        """
        self.init_decoder()
        if decode_content is None:
            decode_content = self.decode_content
    
        if self.fp is None:
            return
    
        flush_decoder = False
        fp_closed = getattr(self.fp, "closed", False)
    
        with self.error_catcher():
            data = self.fp_read(amt) if not fp_closed else b""
            if amt is None:
                flush_decoder = True
            else:
                cache_content = False
                if (
                    amt != 0 and not data
                ):  # Platform-specific: Buggy versions of Python.
                    # Close the connection when no data is returned
                    #
                    # This is redundant to what httplib/http.client should
                    # already do.  However, versions of python released before
                    # December 15, 2012 (http://bugs.python.org/issue16298)&nbsp;do
                    # not properly close the connection in all cases. There is
                    # no harm in redundantly calling close.
                    self.fp.close()
                    flush_decoder = True
                    if self.enforce_content_length and self.length_remaining not in (
                        0,
                        None,
                    ):
                        # This is an edge case that httplib failed to cover due
                        # to concerns of backward compatibility. We're
                        # addressing it here to make sure IncompleteRead is
                        # raised during streaming, so all calls with incorrect
                        # Content-Length are caught.
>                       raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
E                       urllib3.exceptions.IncompleteRead: IncompleteRead(664 bytes read, 83 more expected)

env/lib/python3.12/site-packages/urllib3/response.py:593: IncompleteRead

During handling of the above exception, another exception occurred:

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
>               yield from self.raw.stream(chunk_size, decode_content=True)

env/lib/python3.12/site-packages/requests/models.py:820: 
 
 
 
 
 
 
 
                                 
env/lib/python3.12/site-packages/urllib3/response.py:628: in stream
    data = self.read(amt=amt, decode_content=decode_content)
env/lib/python3.12/site-packages/urllib3/response.py:566: in read
    with self.error_catcher():
/opt/hostedtoolcache/Python/3.12.9/x64/lib/python3.12/contextlib.py:158: in exit
    self.gen.throw(value)
                                        

self = <urllib3.response.HTTPResponse object at 0x7f841cc65f60>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
                yield
    
            except SocketTimeout:
                # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
                # there is yet no clean way to get at it from this context.
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except BaseSSLError as e:
                # FIXME: Is there a better way to differentiate between SSLErrors?
                if "read operation timed out" not in str(e):
                    # SSL errors related to framing/MAC get wrapped and reraised here
                    raise SSLError(e)
    
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except (HTTPException, SocketError) as e:
                # This includes IncompleteRead.
>               raise ProtocolError("Connection broken: %r" % e, e)
E               urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.12/site-packages/urllib3/response.py:461: ProtocolError

During handling of the above exception, another exception occurred:

self = <azure.core.pipeline.transport.requests_basic.StreamDownloadGenerator object at 0x7f841b6ac2f0>

    def next(self):
        internal_response = self.response.internal_response
        try:
>           chunk = next(self.iter_content_func)

env/lib/python3.12/site-packages/azure/core/pipeline/transport/requests_basic.py:177: 
 
 
 
 
 
                                   

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
                yield from self.raw.stream(chunk_size, decode_content=True)
            except ProtocolError as e:
>               raise ChunkedEncodingError(e)
E               requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.12/site-packages/requests/models.py:822: ChunkedEncodingError

The above exception was the direct cause of the following exception:

self = <azure.cli.command_modules.acr.tests.hybrid_2020_09_01.test_acr_commands.AcrCommandsTests testMethod=test_acr_create_webhook>
resource_group = 'clitest.rg000001', resource_group_location = 'westus'

    @ResourceGroupPreparer()
    def test_acr_create_webhook(self, resource_group, resource_group_location):
        registry_name = self.create_random_name('clireg', 20)
        webhook_name = 'cliregwebhook'
    
        self.kwargs.update({
            'registry_name': registry_name,
            'webhook_name': webhook_name,
            'rg_loc': resource_group_location,
            'headers': 'key=value',
            'webhook_scope': 'hello-world',
            'uri': 'http://www.microsoft.com',
            'actions': 'push',
            'sku': 'Standard'
        })
    
>       self.cmd('acr create -n {registry_name} -g {rg} -l {rg_loc} --sku {sku}',
                 checks=[self.check('name', '{registry_name}'),
                         self.check('location', '{rg_loc}'),
                         self.check('adminUserEnabled', False),
                         self.check('sku.name', 'Standard'),
                         self.check('sku.tier', 'Standard'),
                         self.check('provisioningState', 'Succeeded')])

src/azure-cli/azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:133: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/acr/custom.py:93: in acr_create
    lro_poller = client.begin_create(resource_group_name, registry_name, registry)
env/lib/python3.12/site-packages/azure/core/tracing/decorator.py:94: in wrapper_use_tracer
    return func(*args, **kwargs)
env/lib/python3.12/site-packages/azure/mgmt/containerregistry/v2019_05_01/operations/registries_operations.py:924: in begin_create
    raw_result.http_response.read()  # type: ignore
env/lib/python3.12/site-packages/azure/core/rest/http_response_impl.py:407: in read
    self.content = b"".join(self.iter_bytes())
env/lib/python3.12/site-packages/azure/core/rest/http_response_impl.py:423: in iter_bytes
    yield from self.stream_download_generator(
 
 
 
 
 
 
 
 
 
                               

self = <azure.core.pipeline.transport._requests_basic.StreamDownloadGenerator object at 0x7f841b6ac2f0>

    def next(self):
        internal_response = self.response.internal_response
        try:
            chunk = next(self.iter_content_func)
            if not chunk:
                raise StopIteration()
            return chunk
        except StopIteration:
            internal_response.close()
            raise StopIteration()  # pylint: disable=raise-missing-from
        except requests.exceptions.StreamConsumedError:
            raise
        except requests.exceptions.ContentDecodingError as err:
            raise DecodeError(err, error=err) from err
        except requests.exceptions.ChunkedEncodingError as err:
            msg = err.str()
            if "IncompleteRead" in msg:
                _LOGGER.warning("Incomplete download: %s", err)
                internal_response.close()
>               raise IncompleteReadError(err, error=err) from err
E               azure.core.exceptions.IncompleteReadError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.12/site-packages/azure/core/pipeline/transport/_requests_basic.py:193: IncompleteReadError
azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:116
Failedtest_acr_create_with_managed_registryself = <urllib3.response.HTTPResponse object at 0x7f841cc65ff0>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
>               yield

env/lib/python3.12/site-packages/urllib3/response.py:444: 
                                        

self = <urllib3.response.HTTPResponse object at 0x7f841cc65ff0>, amt = 4096
decode_content = True, cache_content = False

    def read(self, amt=None, decode_content=None, cache_content=False):
        """
        Similar to :meth:http.client.HTTPResponse.read, but with two additional
        parameters: decode_content and cache_content.
    
        :param amt:
            How much of the content to read. If specified, caching is skipped
            because it doesn't make sense to cache partial content as the full
            response.
    
        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.
    
        :param cache_content:
            If True, will save the returned data such that the same result is
            returned despite of the state of the underlying file object. This
            is useful if you want the .data property to continue working
            after having .read() the file object. (Overridden if amt is
            set.)
        """
        self.init_decoder()
        if decode_content is None:
            decode_content = self.decode_content
    
        if self.fp is None:
            return
    
        flush_decoder = False
        fp_closed = getattr(self.fp, "closed", False)
    
        with self.error_catcher():
            data = self.fp_read(amt) if not fp_closed else b""
            if amt is None:
                flush_decoder = True
            else:
                cache_content = False
                if (
                    amt != 0 and not data
                ):  # Platform-specific: Buggy versions of Python.
                    # Close the connection when no data is returned
                    #
                    # This is redundant to what httplib/http.client should
                    # already do.  However, versions of python released before
                    # December 15, 2012 (http://bugs.python.org/issue16298)&nbsp;do
                    # not properly close the connection in all cases. There is
                    # no harm in redundantly calling close.
                    self.fp.close()
                    flush_decoder = True
                    if self.enforce_content_length and self.length_remaining not in (
                        0,
                        None,
                    ):
                        # This is an edge case that httplib failed to cover due
                        # to concerns of backward compatibility. We're
                        # addressing it here to make sure IncompleteRead is
                        # raised during streaming, so all calls with incorrect
                        # Content-Length are caught.
>                       raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
E                       urllib3.exceptions.IncompleteRead: IncompleteRead(744 bytes read, 83 more expected)

env/lib/python3.12/site-packages/urllib3/response.py:593: IncompleteRead

During handling of the above exception, another exception occurred:

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
>               yield from self.raw.stream(chunk_size, decode_content=True)

env/lib/python3.12/site-packages/requests/models.py:820: 
 
 
 
 
 
 
 
                                 
env/lib/python3.12/site-packages/urllib3/response.py:628: in stream
    data = self.read(amt=amt, decode_content=decode_content)
env/lib/python3.12/site-packages/urllib3/response.py:566: in read
    with self.error_catcher():
/opt/hostedtoolcache/Python/3.12.9/x64/lib/python3.12/contextlib.py:158: in exit
    self.gen.throw(value)
                                        

self = <urllib3.response.HTTPResponse object at 0x7f841cc65ff0>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
                yield
    
            except SocketTimeout:
                # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
                # there is yet no clean way to get at it from this context.
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except BaseSSLError as e:
                # FIXME: Is there a better way to differentiate between SSLErrors?
                if "read operation timed out" not in str(e):
                    # SSL errors related to framing/MAC get wrapped and reraised here
                    raise SSLError(e)
    
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except (HTTPException, SocketError) as e:
                # This includes IncompleteRead.
>               raise ProtocolError("Connection broken: %r" % e, e)
E               urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.12/site-packages/urllib3/response.py:461: ProtocolError

During handling of the above exception, another exception occurred:

self = <azure.core.pipeline.transport.requests_basic.StreamDownloadGenerator object at 0x7f841ad3a3c0>

    def next(self):
        internal_response = self.response.internal_response
        try:
>           chunk = next(self.iter_content_func)

env/lib/python3.12/site-packages/azure/core/pipeline/transport/requests_basic.py:177: 
 
 
 
 
 
                                   

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
                yield from self.raw.stream(chunk_size, decode_content=True)
            except ProtocolError as e:
>               raise ChunkedEncodingError(e)
E               requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.12/site-packages/requests/models.py:822: ChunkedEncodingError

The above exception was the direct cause of the following exception:

self = <azure.cli.command_modules.acr.tests.hybrid_2020_09_01.test_acr_commands.AcrCommandsTests testMethod=test_acr_create_with_managed_registry>
resource_group = 'clitest.rg000001', resource_group_location = 'westus'

    @ResourceGroupPreparer()
    def test_acr_create_with_managed_registry(self, resource_group, resource_group_location):
        registry_name = self.create_random_name('clireg', 20)
    
        self.kwargs.update({
            'registry_name': registry_name,
            'rg_loc': resource_group_location,
            'sku': 'Premium'
        })
    
>       self.cmd('acr create -n {registry_name} -g {rg} -l {rg_loc} --sku {sku}',
                 checks=[self.check('name', '{registry_name}'),
                         self.check('location', '{rg_loc}'),
                         self.check('adminUserEnabled', False),
                         self.check('sku.name', 'Premium'),
                         self.check('sku.tier', 'Premium'),
                         self.check('provisioningState', 'Succeeded')])

src/azure-cli/azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:107: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/acr/custom.py:93: in acr_create
    lro_poller = client.begin_create(resource_group_name, registry_name, registry)
env/lib/python3.12/site-packages/azure/core/tracing/decorator.py:94: in wrapper_use_tracer
    return func(*args, **kwargs)
env/lib/python3.12/site-packages/azure/mgmt/containerregistry/v2019_05_01/operations/registries_operations.py:924: in begin_create
    raw_result.http_response.read()  # type: ignore
env/lib/python3.12/site-packages/azure/core/rest/http_response_impl.py:407: in read
    self.content = b"".join(self.iter_bytes())
env/lib/python3.12/site-packages/azure/core/rest/http_response_impl.py:423: in iter_bytes
    yield from self.stream_download_generator(
 
 
 
 
 
 
 
 
 
                               

self = <azure.core.pipeline.transport._requests_basic.StreamDownloadGenerator object at 0x7f841ad3a3c0>

    def next(self):
        internal_response = self.response.internal_response
        try:
            chunk = next(self.iter_content_func)
            if not chunk:
                raise StopIteration()
            return chunk
        except StopIteration:
            internal_response.close()
            raise StopIteration()  # pylint: disable=raise-missing-from
        except requests.exceptions.StreamConsumedError:
            raise
        except requests.exceptions.ContentDecodingError as err:
            raise DecodeError(err, error=err) from err
        except requests.exceptions.ChunkedEncodingError as err:
            msg = err.str()
            if "IncompleteRead" in msg:
                _LOGGER.warning("Incomplete download: %s", err)
                internal_response.close()
>               raise IncompleteReadError(err, error=err) from err
E               azure.core.exceptions.IncompleteReadError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.12/site-packages/azure/core/pipeline/transport/_requests_basic.py:193: IncompleteReadError
azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:96
❌3.9
TypeTest CaseError MessageLine
Failedtest_acr_create_webhookself = <urllib3.response.HTTPResponse object at 0x7fe487ebe460>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
>               yield

env/lib/python3.9/site-packages/urllib3/response.py:444: 
                                        

self = <urllib3.response.HTTPResponse object at 0x7fe487ebe460>, amt = 4096
decode_content = True, cache_content = False

    def read(self, amt=None, decode_content=None, cache_content=False):
        """
        Similar to :meth:http.client.HTTPResponse.read, but with two additional
        parameters: decode_content and cache_content.
    
        :param amt:
            How much of the content to read. If specified, caching is skipped
            because it doesn't make sense to cache partial content as the full
            response.
    
        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.
    
        :param cache_content:
            If True, will save the returned data such that the same result is
            returned despite of the state of the underlying file object. This
            is useful if you want the .data property to continue working
            after having .read() the file object. (Overridden if amt is
            set.)
        """
        self.init_decoder()
        if decode_content is None:
            decode_content = self.decode_content
    
        if self.fp is None:
            return
    
        flush_decoder = False
        fp_closed = getattr(self.fp, "closed", False)
    
        with self.error_catcher():
            data = self.fp_read(amt) if not fp_closed else b""
            if amt is None:
                flush_decoder = True
            else:
                cache_content = False
                if (
                    amt != 0 and not data
                ):  # Platform-specific: Buggy versions of Python.
                    # Close the connection when no data is returned
                    #
                    # This is redundant to what httplib/http.client should
                    # already do.  However, versions of python released before
                    # December 15, 2012 (http://bugs.python.org/issue16298)&nbsp;do
                    # not properly close the connection in all cases. There is
                    # no harm in redundantly calling close.
                    self.fp.close()
                    flush_decoder = True
                    if self.enforce_content_length and self.length_remaining not in (
                        0,
                        None,
                    ):
                        # This is an edge case that httplib failed to cover due
                        # to concerns of backward compatibility. We're
                        # addressing it here to make sure IncompleteRead is
                        # raised during streaming, so all calls with incorrect
                        # Content-Length are caught.
>                       raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
E                       urllib3.exceptions.IncompleteRead: IncompleteRead(664 bytes read, 83 more expected)

env/lib/python3.9/site-packages/urllib3/response.py:593: IncompleteRead

During handling of the above exception, another exception occurred:

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
>               yield from self.raw.stream(chunk_size, decode_content=True)

env/lib/python3.9/site-packages/requests/models.py:820: 
 
 
 
 
 
 
 
                                 
env/lib/python3.9/site-packages/urllib3/response.py:628: in stream
    data = self.read(amt=amt, decode_content=decode_content)
env/lib/python3.9/site-packages/urllib3/response.py:593: in read
    raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
/opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/contextlib.py:137: in exit
    self.gen.throw(typ, value, traceback)
                                        

self = <urllib3.response.HTTPResponse object at 0x7fe487ebe460>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
                yield
    
            except SocketTimeout:
                # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
                # there is yet no clean way to get at it from this context.
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except BaseSSLError as e:
                # FIXME: Is there a better way to differentiate between SSLErrors?
                if "read operation timed out" not in str(e):
                    # SSL errors related to framing/MAC get wrapped and reraised here
                    raise SSLError(e)
    
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except (HTTPException, SocketError) as e:
                # This includes IncompleteRead.
>               raise ProtocolError("Connection broken: %r" % e, e)
E               urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.9/site-packages/urllib3/response.py:461: ProtocolError

During handling of the above exception, another exception occurred:

self = <azure.core.pipeline.transport.requests_basic.StreamDownloadGenerator object at 0x7fe487dd7730>

    def next(self):
        internal_response = self.response.internal_response
        try:
>           chunk = next(self.iter_content_func)

env/lib/python3.9/site-packages/azure/core/pipeline/transport/requests_basic.py:177: 
 
 
 
 
 
                                   

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
                yield from self.raw.stream(chunk_size, decode_content=True)
            except ProtocolError as e:
>               raise ChunkedEncodingError(e)
E               requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.9/site-packages/requests/models.py:822: ChunkedEncodingError

The above exception was the direct cause of the following exception:

self = <azure.cli.command_modules.acr.tests.hybrid_2020_09_01.test_acr_commands.AcrCommandsTests testMethod=test_acr_create_webhook>
resource_group = 'clitest.rg000001', resource_group_location = 'westus'

    @ResourceGroupPreparer()
    def test_acr_create_webhook(self, resource_group, resource_group_location):
        registry_name = self.create_random_name('clireg', 20)
        webhook_name = 'cliregwebhook'
    
        self.kwargs.update({
            'registry_name': registry_name,
            'webhook_name': webhook_name,
            'rg_loc': resource_group_location,
            'headers': 'key=value',
            'webhook_scope': 'hello-world',
            'uri': 'http://www.microsoft.com',
            'actions': 'push',
            'sku': 'Standard'
        })
    
>       self.cmd('acr create -n {registry_name} -g {rg} -l {rg_loc} --sku {sku}',
                 checks=[self.check('name', '{registry_name}'),
                         self.check('location', '{rg_loc}'),
                         self.check('adminUserEnabled', False),
                         self.check('sku.name', 'Standard'),
                         self.check('sku.tier', 'Standard'),
                         self.check('provisioningState', 'Succeeded')])

src/azure-cli/azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:133: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/acr/custom.py:93: in acr_create
    lro_poller = client.begin_create(resource_group_name, registry_name, registry)
env/lib/python3.9/site-packages/azure/core/tracing/decorator.py:94: in wrapper_use_tracer
    return func(*args, **kwargs)
env/lib/python3.9/site-packages/azure/mgmt/containerregistry/v2019_05_01/operations/registries_operations.py:924: in begin_create
    raw_result.http_response.read()  # type: ignore
env/lib/python3.9/site-packages/azure/core/rest/http_response_impl.py:407: in read
    self.content = b"".join(self.iter_bytes())
env/lib/python3.9/site-packages/azure/core/rest/http_response_impl.py:423: in iter_bytes
    yield from self.stream_download_generator(
 
 
 
 
 
 
 
 
 
                               

self = <azure.core.pipeline.transport._requests_basic.StreamDownloadGenerator object at 0x7fe487dd7730>

    def next(self):
        internal_response = self.response.internal_response
        try:
            chunk = next(self.iter_content_func)
            if not chunk:
                raise StopIteration()
            return chunk
        except StopIteration:
            internal_response.close()
            raise StopIteration()  # pylint: disable=raise-missing-from
        except requests.exceptions.StreamConsumedError:
            raise
        except requests.exceptions.ContentDecodingError as err:
            raise DecodeError(err, error=err) from err
        except requests.exceptions.ChunkedEncodingError as err:
            msg = err.str()
            if "IncompleteRead" in msg:
                _LOGGER.warning("Incomplete download: %s", err)
                internal_response.close()
>               raise IncompleteReadError(err, error=err) from err
E               azure.core.exceptions.IncompleteReadError: ('Connection broken: IncompleteRead(664 bytes read, 83 more expected)', IncompleteRead(664 bytes read, 83 more expected))

env/lib/python3.9/site-packages/azure/core/pipeline/transport/_requests_basic.py:193: IncompleteReadError
azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:116
Failedtest_acr_create_with_managed_registryself = <urllib3.response.HTTPResponse object at 0x7fe487e07fd0>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
>               yield

env/lib/python3.9/site-packages/urllib3/response.py:444: 
                                        

self = <urllib3.response.HTTPResponse object at 0x7fe487e07fd0>, amt = 4096
decode_content = True, cache_content = False

    def read(self, amt=None, decode_content=None, cache_content=False):
        """
        Similar to :meth:http.client.HTTPResponse.read, but with two additional
        parameters: decode_content and cache_content.
    
        :param amt:
            How much of the content to read. If specified, caching is skipped
            because it doesn't make sense to cache partial content as the full
            response.
    
        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.
    
        :param cache_content:
            If True, will save the returned data such that the same result is
            returned despite of the state of the underlying file object. This
            is useful if you want the .data property to continue working
            after having .read() the file object. (Overridden if amt is
            set.)
        """
        self.init_decoder()
        if decode_content is None:
            decode_content = self.decode_content
    
        if self.fp is None:
            return
    
        flush_decoder = False
        fp_closed = getattr(self.fp, "closed", False)
    
        with self.error_catcher():
            data = self.fp_read(amt) if not fp_closed else b""
            if amt is None:
                flush_decoder = True
            else:
                cache_content = False
                if (
                    amt != 0 and not data
                ):  # Platform-specific: Buggy versions of Python.
                    # Close the connection when no data is returned
                    #
                    # This is redundant to what httplib/http.client should
                    # already do.  However, versions of python released before
                    # December 15, 2012 (http://bugs.python.org/issue16298)&nbsp;do
                    # not properly close the connection in all cases. There is
                    # no harm in redundantly calling close.
                    self.fp.close()
                    flush_decoder = True
                    if self.enforce_content_length and self.length_remaining not in (
                        0,
                        None,
                    ):
                        # This is an edge case that httplib failed to cover due
                        # to concerns of backward compatibility. We're
                        # addressing it here to make sure IncompleteRead is
                        # raised during streaming, so all calls with incorrect
                        # Content-Length are caught.
>                       raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
E                       urllib3.exceptions.IncompleteRead: IncompleteRead(744 bytes read, 83 more expected)

env/lib/python3.9/site-packages/urllib3/response.py:593: IncompleteRead

During handling of the above exception, another exception occurred:

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
>               yield from self.raw.stream(chunk_size, decode_content=True)

env/lib/python3.9/site-packages/requests/models.py:820: 
 
 
 
 
 
 
 
                                 
env/lib/python3.9/site-packages/urllib3/response.py:628: in stream
    data = self.read(amt=amt, decode_content=decode_content)
env/lib/python3.9/site-packages/urllib3/response.py:593: in read
    raise IncompleteRead(self.fp_bytes_read, self.length_remaining)
/opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/contextlib.py:137: in exit
    self.gen.throw(typ, value, traceback)
                                        

self = <urllib3.response.HTTPResponse object at 0x7fe487e07fd0>

    @contextmanager
    def error_catcher(self):
        """
        Catch low-level python exceptions, instead re-raising urllib3
        variants, so that low-level exceptions are not leaked in the
        high-level api.
    
        On exit, release the connection back to the pool.
        """
        clean_exit = False
    
        try:
            try:
                yield
    
            except SocketTimeout:
                # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
                # there is yet no clean way to get at it from this context.
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except BaseSSLError as e:
                # FIXME: Is there a better way to differentiate between SSLErrors?
                if "read operation timed out" not in str(e):
                    # SSL errors related to framing/MAC get wrapped and reraised here
                    raise SSLError(e)
    
                raise ReadTimeoutError(self.pool, None, "Read timed out.")
    
            except (HTTPException, SocketError) as e:
                # This includes IncompleteRead.
>               raise ProtocolError("Connection broken: %r" % e, e)
E               urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.9/site-packages/urllib3/response.py:461: ProtocolError

During handling of the above exception, another exception occurred:

self = <azure.core.pipeline.transport.requests_basic.StreamDownloadGenerator object at 0x7fe489fa8970>

    def next(self):
        internal_response = self.response.internal_response
        try:
>           chunk = next(self.iter_content_func)

env/lib/python3.9/site-packages/azure/core/pipeline/transport/requests_basic.py:177: 
 
 
 
 
 
                                   

    def generate():
        # Special case for urllib3.
        if hasattr(self.raw, "stream"):
            try:
                yield from self.raw.stream(chunk_size, decode_content=True)
            except ProtocolError as e:
>               raise ChunkedEncodingError(e)
E               requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.9/site-packages/requests/models.py:822: ChunkedEncodingError

The above exception was the direct cause of the following exception:

self = <azure.cli.command_modules.acr.tests.hybrid_2020_09_01.test_acr_commands.AcrCommandsTests testMethod=test_acr_create_with_managed_registry>
resource_group = 'clitest.rg000001', resource_group_location = 'westus'

    @ResourceGroupPreparer()
    def test_acr_create_with_managed_registry(self, resource_group, resource_group_location):
        registry_name = self.create_random_name('clireg', 20)
    
        self.kwargs.update({
            'registry_name': registry_name,
            'rg_loc': resource_group_location,
            'sku': 'Premium'
        })
    
>       self.cmd('acr create -n {registry_name} -g {rg} -l {rg_loc} --sku {sku}',
                 checks=[self.check('name', '{registry_name}'),
                         self.check('location', '{rg_loc}'),
                         self.check('adminUserEnabled', False),
                         self.check('sku.name', 'Premium'),
                         self.check('sku.tier', 'Premium'),
                         self.check('provisioningState', 'Succeeded')])

src/azure-cli/azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:107: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/acr/custom.py:93: in acr_create
    lro_poller = client.begin_create(resource_group_name, registry_name, registry)
env/lib/python3.9/site-packages/azure/core/tracing/decorator.py:94: in wrapper_use_tracer
    return func(*args, **kwargs)
env/lib/python3.9/site-packages/azure/mgmt/containerregistry/v2019_05_01/operations/registries_operations.py:924: in begin_create
    raw_result.http_response.read()  # type: ignore
env/lib/python3.9/site-packages/azure/core/rest/http_response_impl.py:407: in read
    self.content = b"".join(self.iter_bytes())
env/lib/python3.9/site-packages/azure/core/rest/http_response_impl.py:423: in iter_bytes
    yield from self.stream_download_generator(
 
 
 
 
 
 
 
 
 
                               

self = <azure.core.pipeline.transport._requests_basic.StreamDownloadGenerator object at 0x7fe489fa8970>

    def next(self):
        internal_response = self.response.internal_response
        try:
            chunk = next(self.iter_content_func)
            if not chunk:
                raise StopIteration()
            return chunk
        except StopIteration:
            internal_response.close()
            raise StopIteration()  # pylint: disable=raise-missing-from
        except requests.exceptions.StreamConsumedError:
            raise
        except requests.exceptions.ContentDecodingError as err:
            raise DecodeError(err, error=err) from err
        except requests.exceptions.ChunkedEncodingError as err:
            msg = err.str()
            if "IncompleteRead" in msg:
                _LOGGER.warning("Incomplete download: %s", err)
                internal_response.close()
>               raise IncompleteReadError(err, error=err) from err
E               azure.core.exceptions.IncompleteReadError: ('Connection broken: IncompleteRead(744 bytes read, 83 more expected)', IncompleteRead(744 bytes read, 83 more expected))

env/lib/python3.9/site-packages/azure/core/pipeline/transport/_requests_basic.py:193: IncompleteReadError
azure/cli/command_modules/acr/tests/hybrid_2020_09_01/test_acr_commands.py:96
🔄latest
🔄3.12
🔄3.9
🔄acs
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄advisor
🔄latest
🔄3.12
🔄3.9
️✔️ams
️✔️latest
️✔️3.12
️✔️3.9
🔄apim
🔄latest
🔄3.12
🔄3.9
🔄appconfig
🔄latest
🔄3.12
🔄3.9
❌appservice
❌latest
❌3.12
TypeTest CaseError MessageLine
Failedtest_acr_integration_function_appself = <azure.cli.testsdk.base.ExecutionResult object at 0x7fd599e85310>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fd59c95f800>
command = 'acr create --admin-enabled -g clitest.rg000001 -n functionappacrtest000004 --sku Basic'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.appservice.tests.latest.test_functionapp_commands.FunctionappACRScenarioTest testMethod=test_acr_integration_function_app>
resource_group = 'clitest.rg000001', storage_account = 'clitest000002'

    @ResourceGroupPreparer(location='eastus')
    @StorageAccountPreparer()
    @AllowLargeResponse()
    def test_acr_integration_function_app(self, resource_group, storage_account):
        plan = self.create_random_name(prefix='acrtestplanfunction', length=24)
        functionapp = self.create_random_name(
            prefix='functionappacrtest', length=24)
        runtime = 'node'
        acr_registry_name = functionapp
>       self.cmd('acr create --admin-enabled -g {} -n {} --sku Basic'.format(
            resource_group, acr_registry_name))

src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:44: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7fd599b81460>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.12/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:34
Failedtest_acr_create_function_appself = <azure.cli.testsdk.base.ExecutionResult object at 0x7fd599e85310>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fd59c422030>
command = 'acr create --admin-enabled -g clitest.rg000001 -n functionappacrtest000004 --sku Basic'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.appservice.tests.latest.test_functionapp_commands.FunctionAppCreateUsingACR testMethod=test_acr_create_function_app>
resource_group = 'clitest.rg000001', storage_account = 'clitestacr000002'

    @ResourceGroupPreparer(location='brazilsouth')
    @StorageAccountPreparer(name_prefix='clitestacr')
    @AllowLargeResponse()
    def test_acr_create_function_app(self, resource_group, storage_account):
        plan = self.create_random_name(prefix='acrtestplanfunction', length=24)
        functionapp = self.create_random_name(
            prefix='functionappacrtest', length=24)
        runtime = 'node'
        acr_registry_name = functionapp
>       self.cmd('acr create --admin-enabled -g {} -n {} --sku Basic'.format(
            resource_group, acr_registry_name))

src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:93: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7fd599a590d0>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.12/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:83
Failedtest_acr_deployment_function_appself = <azure.cli.testsdk.base.ExecutionResult object at 0x7fd599bad490>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fd59c443050>
command = 'acr create --admin-enabled -g clitest.rg000001 -n functionappacrtest000004 --sku Basic'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.appservice.tests.latest.test_functionapp_commands.FunctionappACRDeploymentScenarioTest testMethod=test_acr_deployment_function_app>
resource_group = 'clitest.rg000001', storage_account = 'clitestacrdeploy000002'

    @ResourceGroupPreparer(location='brazilsouth')
    @StorageAccountPreparer(name_prefix='clitestacrdeploy')
    def test_acr_deployment_function_app(self, resource_group, storage_account):
        plan = self.create_random_name(prefix='acrtestplanfunction', length=24)
        functionapp = self.create_random_name(
            prefix='functionappacrtest', length=24)
        runtime = 'node'
        acr_registry_name = functionapp
>       self.cmd('acr create --admin-enabled -g {} -n {} --sku Basic'.format(
            resource_group, acr_registry_name))

src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:143: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7fd599adccb0>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.12/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py:134
Failedtest_staticapp_linked_backendsThe error message is too long, please check the pipeline log for details.azure/cli/command_modules/appservice/tests/latest/test_staticapp_commands.py:11
Failedtest_acr_integrationThe error message is too long, please check the pipeline log for details.azure/cli/command_modules/appservice/tests/latest/test_webapp_commands.py:1381
Failedtest_linux_slot_container_settings_overrideThe error message is too long, please check the pipeline log for details.azure/cli/command_modules/appservice/tests/latest/test_webapp_commands.py:1403
🔄3.9
🔄aro
🔄latest
🔄3.12
🔄3.9
🔄backup
🔄latest
🔄3.12
🔄3.9
🔄batch
🔄latest
🔄3.12
🔄3.9
🔄batchai
🔄latest
️✔️3.12
🔄3.9
️✔️billing
️✔️latest
️✔️3.12
️✔️3.9
🔄botservice
🔄latest
🔄3.12
🔄3.9
🔄cdn
🔄latest
️✔️3.12
🔄3.9
🔄cloud
🔄latest
🔄3.12
🔄3.9
🔄cognitiveservices
🔄latest
🔄3.12
🔄3.9
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.9
🔄computefleet
🔄latest
️✔️3.12
🔄3.9
🔄config
🔄latest
️✔️3.12
🔄3.9
🔄configure
🔄latest
🔄3.12
🔄3.9
🔄consumption
🔄latest
🔄3.12
🔄3.9
🔄container
🔄latest
🔄3.12
🔄3.9
🔄containerapp
🔄latest
🔄3.12
🔄3.9
🔄core
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄cosmosdb
🔄latest
🔄3.12
🔄3.9
️✔️databoxedge
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
🔄dls
🔄latest
️✔️3.12
🔄3.9
🔄dms
🔄latest
🔄3.12
🔄3.9
🔄eventgrid
🔄latest
🔄3.12
🔄3.9
🔄eventhubs
🔄latest
🔄3.12
🔄3.9
🔄feedback
🔄latest
🔄3.12
🔄3.9
🔄find
🔄latest
🔄3.12
🔄3.9
🔄hdinsight
🔄latest
🔄3.12
🔄3.9
🔄identity
🔄latest
🔄3.12
🔄3.9
🔄iot
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄keyvault
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄lab
🔄latest
️✔️3.12
🔄3.9
🔄managedservices
🔄latest
🔄3.12
🔄3.9
🔄maps
🔄latest
🔄3.12
🔄3.9
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.9
🔄monitor
🔄latest
🔄3.12
🔄3.9
🔄mysql
🔄latest
🔄3.12
🔄3.9
🔄netappfiles
🔄latest
🔄3.12
🔄3.9
❌network
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
❌latest
❌3.12
TypeTest CaseError MessageLine
Failedtest_private_endpoint_connection_acrself = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0bbf2293a0>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0bbfa59730>
command = 'acr create --name testreg000002 --resource-group clitest.rg000001 --sku premium'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_private_endpoint_commands.NetworkPrivateLinkACRScenarioTest testMethod=test_private_endpoint_connection_acr>
resource_group = 'clitest.rg000001'

    @ResourceGroupPreparer(location='centralus')
    def test_private_endpoint_connection_acr(self, resource_group):
        self.kwargs.update({
            'registry_name': self.create_random_name('testreg', 20),
            'vnet_name': self.create_random_name('testvnet', 20),
            'subnet_name': self.create_random_name('testsubnet', 20),
            'endpoint_name': self.create_random_name('priv_endpoint', 25),
            'endpoint_conn_name': self.create_random_name('priv_endpointconn', 25),
            'second_endpoint_name': self.create_random_name('priv_endpoint', 25),
            'second_endpoint_conn_name': self.create_random_name('priv_endpointconn', 25),
            'description_msg': 'somedescription'
        })
    
        # create subnet with disabled endpoint network policies
        self.cmd('network vnet create -g {rg} -n {vnet_name} --subnet-name {subnet_name}')
        self.cmd('network vnet subnet update -g {rg} --vnet-name {vnet_name} --name {subnet_name} --disable-private-endpoint-network-policies true')
    
>       result = self.cmd('acr create --name {registry_name} --resource-group {rg} --sku premium').get_output_in_json()

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:462: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7f0bbddd0a70>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.12/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:444
Failedtest_private_link_resource_acrself = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0bbf3c5f10>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0bbfa5bd40>
command = 'acr create --name testreg000002 --resource-group cli_test_sa_plr000001 --sku premium'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_private_endpoint_commands.NetworkPrivateLinkACRScenarioTest testMethod=test_private_link_resource_acr>

    @ResourceGroupPreparer(name_prefix='cli_test_sa_plr')
    def test_private_link_resource_acr(self):
        self.kwargs.update({
            'registry_name': self.create_random_name('testreg', 20)
        })
>       result = self.cmd('acr create --name {registry_name} --resource-group {rg} --sku premium').get_output_in_json()

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:440: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7f0bbf2afef0>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.12/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:434
❌3.9
TypeTest CaseError MessageLine
Failedtest_private_endpoint_connection_acrself = <azure.cli.testsdk.base.ExecutionResult object at 0x7faa4f011bb0>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7faa4fcc13a0>
command = 'acr create --name testreg000002 --resource-group clitest.rg000001 --sku premium'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_private_endpoint_commands.NetworkPrivateLinkACRScenarioTest testMethod=test_private_endpoint_connection_acr>
resource_group = 'clitest.rg000001'

    @ResourceGroupPreparer(location='centralus')
    def test_private_endpoint_connection_acr(self, resource_group):
        self.kwargs.update({
            'registry_name': self.create_random_name('testreg', 20),
            'vnet_name': self.create_random_name('testvnet', 20),
            'subnet_name': self.create_random_name('testsubnet', 20),
            'endpoint_name': self.create_random_name('priv_endpoint', 25),
            'endpoint_conn_name': self.create_random_name('priv_endpointconn', 25),
            'second_endpoint_name': self.create_random_name('priv_endpoint', 25),
            'second_endpoint_conn_name': self.create_random_name('priv_endpointconn', 25),
            'description_msg': 'somedescription'
        })
    
        # create subnet with disabled endpoint network policies
        self.cmd('network vnet create -g {rg} -n {vnet_name} --subnet-name {subnet_name}')
        self.cmd('network vnet subnet update -g {rg} --vnet-name {vnet_name} --name {subnet_name} --disable-private-endpoint-network-policies true')
    
>       result = self.cmd('acr create --name {registry_name} --resource-group {rg} --sku premium').get_output_in_json()

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:462: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7faa4dbc2a30>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.9/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:444
Failedtest_private_link_resource_acrself = <azure.cli.testsdk.base.ExecutionResult object at 0x7faa4f16a0a0>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7faa4fcc1880>
command = 'acr create --name testreg000002 --resource-group cli_test_sa_plr000001 --sku premium'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ValueError("API version 2025-03-01-preview does not have operation group 'registries'")
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_private_endpoint_commands.NetworkPrivateLinkACRScenarioTest testMethod=test_private_link_resource_acr>

    @ResourceGroupPreparer(name_prefix='cli_test_sa_plr')
    def test_private_link_resource_acr(self):
        self.kwargs.update({
            'registry_name': self.create_random_name('testreg', 20)
        })
>       result = self.cmd('acr create --name {registry_name} --resource-group {rg} --sku premium').get_output_in_json()

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:440: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:111: in handler
    client = self.client_factory(self.cli_ctx, command_args) if self.client_factory else None
src/azure-cli/azure/cli/command_modules/acr/client_factory.py:25: in cf_acr_registries
    return get_acr_service_client(cli_ctx).registries
 
 
 
 
 
                                   

self = <azure.mgmt.containerregistry._container_registry_management_client.ContainerRegistryManagementClient object at 0x7faa4f085e20>

    @Property
    def registries(self):
        """Instance depends on the API version:
    
            2019-05-01: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01.operations.RegistriesOperations>
           
 2019-05-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_05_01_preview.operations.RegistriesOperations>
            2019-06-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2019_06_01_preview.operations.RegistriesOperations>
           
 2020-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2020_11_01_preview.operations.RegistriesOperations>
            2021-08-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2021_08_01_preview.operations.RegistriesOperations>
           
 2022-02-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2022_02_01_preview.operations.RegistriesOperations>
            2023-01-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_01_01_preview.operations.RegistriesOperations>
           
 2023-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2023_11_01_preview.operations.RegistriesOperations>
           * 2024-11-01-preview: :class:RegistriesOperations<azure.mgmt.containerregistry.v2024_11_01_preview.operations.RegistriesOperations>
        """
        api_version = self._get_api_version('registries')
        if api_version == '2019-05-01':
            from .v2019_05_01.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-05-01-preview':
            from .v2019_05_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2019-06-01-preview':
            from .v2019_06_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2020-11-01-preview':
            from .v2020_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2021-08-01-preview':
            from .v2021_08_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2022-02-01-preview':
            from .v2022_02_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-01-01-preview':
            from .v2023_01_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2023-11-01-preview':
            from .v2023_11_01_preview.operations import RegistriesOperations as OperationClass
        elif api_version == '2024-11-01-preview':
            from .v2024_11_01_preview.operations import RegistriesOperations as OperationClass
        else:
>           raise ValueError("API version {} does not have operation group 'registries'".format(api_version))
E           ValueError: API version 2025-03-01-preview does not have operation group 'registries'

env/lib/python3.9/site-packages/azure/mgmt/containerregistry/_container_registry_management_client.py:450: ValueError
azure/cli/command_modules/network/tests/latest/test_private_endpoint_commands.py:434
🔄policyinsights
🔄latest
🔄3.12
🔄3.9
🔄privatedns
🔄latest
🔄3.12
🔄3.9
🔄profile
🔄latest
🔄3.12
🔄3.9
🔄rdbms
🔄latest
🔄3.12
🔄3.9
️✔️redis
️✔️latest
️✔️3.12
️✔️3.9
🔄relay
🔄latest
🔄3.12
🔄3.9
🔄resource
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
️✔️role
️✔️latest
️✔️3.12
️✔️3.9
🔄search
🔄latest
🔄3.12
🔄3.9
️✔️security
️✔️latest
️✔️3.12
️✔️3.9
🔄servicebus
🔄latest
🔄3.12
🔄3.9
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.9
🔄servicefabric
🔄latest
️✔️3.12
🔄3.9
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.9
🔄sql
🔄latest
🔄3.12
🔄3.9
🔄sqlvm
🔄latest
️✔️3.12
🔄3.9
🔄storage
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄synapse
🔄latest
🔄3.12
🔄3.9
🔄telemetry
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9
🔄util
🔄latest
️✔️3.12
🔄3.9
🔄vm
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
🔄latest
🔄3.12
🔄3.9

@azure-client-tools-bot-prdazure-client-tools-bot-prd

Hi@lizMSFT,
Since the current milestone time is less than 7 days, this pr will be reviewed in the next milestone.

@azure-client-tools-bot-prdazure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prdbot commentedMar 18, 2025
edited
Loading

❌AzureCLI-BreakingChangeTest
❌acr
rulecmd_namerule_messagesuggest_message
1006 - ParaAddacr buildcmdacr build added parametersource_locationplease remove parametersource_location for cmdacr build
1006 - ParaAddacr pack buildcmdacr pack build added parametersource_locationplease remove parametersource_location for cmdacr pack build
1006 - ParaAddacr runcmdacr run added parametersource_locationplease remove parametersource_location for cmdacr run
⚠️1006 - ParaAddacr buildcmdacr build added parametersource_registry_auth_id
⚠️1009 - ParaPropRemoveacr buildcmdacr build update parameterauth_mode: removed propertychoices=['Default', 'None']
⚠️1010 - ParaPropUpdateacr buildcmdacr build update parametersource_location: updated propertyname fromsource_location toregistry_name
⚠️1010 - ParaPropUpdateacr buildcmdacr build update parametersource_location: updated propertyoptions from[] to['--registry', '-r']
⚠️1009 - ParaPropRemoveacr config authentication-as-arm updatecmdacr config authentication-as-arm update update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr config content-trust updatecmdacr config content-trust update update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr config retention updatecmdacr config retention update update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr config soft-delete updatecmdacr config soft-delete update update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr createcmdacr create update parameterdefault_action: removed propertychoices=['Allow', 'Deny']
⚠️1009 - ParaPropRemoveacr createcmdacr create update parameterzone_redundancy: removed propertychoices=['Disabled', 'Enabled']
⚠️1009 - ParaPropRemoveacr credential renewcmdacr credential renew update parameterpassword_name: removed propertychoices=['password', 'password2']
⚠️1009 - ParaPropRemoveacr pack buildcmdacr pack build update parameterauth_mode: removed propertychoices=['Default', 'None']
⚠️1010 - ParaPropUpdateacr pack buildcmdacr pack build update parametersource_location: updated propertyname fromsource_location toregistry_name
⚠️1010 - ParaPropUpdateacr pack buildcmdacr pack build update parametersource_location: updated propertyoptions from[] to['--registry', '-r']
⚠️1009 - ParaPropRemoveacr replication createcmdacr replication create update parameterzone_redundancy: removed propertychoices=['Disabled', 'Enabled']
⚠️1006 - ParaAddacr runcmdacr run added parametersource_registry_auth_id
⚠️1009 - ParaPropRemoveacr runcmdacr run update parameterauth_mode: removed propertychoices=['Default', 'None']
⚠️1010 - ParaPropUpdateacr runcmdacr run update parametersource_location: updated propertyname fromsource_location toregistry_name
⚠️1010 - ParaPropUpdateacr runcmdacr run update parametersource_location: updated propertyoptions from[] to['--registry', '-r']
⚠️1006 - ParaAddacr task createcmdacr task create added parametersource_registry_auth_id
⚠️1009 - ParaPropRemoveacr task createcmdacr task create update parameterauth_mode: removed propertychoices=['Default', 'None']
⚠️1009 - ParaPropRemoveacr task createcmdacr task create update parameterbase_image_trigger_type: removed propertychoices=['All', 'Runtime']
⚠️1009 - ParaPropRemoveacr task createcmdacr task create update parameterstatus: removed propertychoices=['Disabled', 'Enabled']
⚠️1009 - ParaPropRemoveacr task createcmdacr task create update parameterupdate_trigger_payload_type: removed propertychoices=['Default', 'Token']
⚠️1009 - ParaPropRemoveacr task list-runscmdacr task list-runs update parameterrun_status: removed propertychoices=['Canceled', 'Error', 'Failed', 'Queued', 'Running', 'Started', 'Succeeded', 'Timeout']
⚠️1006 - ParaAddacr task updatecmdacr task update added parametersource_registry_auth_id
⚠️1009 - ParaPropRemoveacr task updatecmdacr task update update parameterauth_mode: removed propertychoices=['Default', 'None']
⚠️1009 - ParaPropRemoveacr task updatecmdacr task update update parameterbase_image_trigger_type: removed propertychoices=['All', 'Runtime']
⚠️1009 - ParaPropRemoveacr task updatecmdacr task update update parameterstatus: removed propertychoices=['Disabled', 'Enabled']
⚠️1009 - ParaPropRemoveacr task updatecmdacr task update update parameterupdate_trigger_payload_type: removed propertychoices=['Default', 'Token']
⚠️1009 - ParaPropRemoveacr token createcmdacr token create update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr token updatecmdacr token update update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr updatecmdacr update update parameterdefault_action: removed propertychoices=['Allow', 'Deny']
⚠️1009 - ParaPropRemoveacr webhook createcmdacr webhook create update parameteractions: removed propertychoices=['chart_delete', 'chart_push', 'delete', 'push', 'quarantine']
⚠️1009 - ParaPropRemoveacr webhook createcmdacr webhook create update parameterstatus: removed propertychoices=['disabled', 'enabled']
⚠️1009 - ParaPropRemoveacr webhook updatecmdacr webhook update update parameteractions: removed propertychoices=['chart_delete', 'chart_push', 'delete', 'push', 'quarantine']
⚠️1009 - ParaPropRemoveacr webhook updatecmdacr webhook update update parameterstatus: removed propertychoices=['disabled', 'enabled']

Please submit your Breaking Change Pre-announcement ASAP if you haven't already. Please note:

  • Breaking changes canonly be merged during the designated breaking change window
  • A pre-announcementmust be released at least one month in advance

For more details on how to introduce breaking changes, refer to the documentation:azure-cli/doc/how_to_introduce_breaking_changes.md

@yonzhan
Copy link
Collaborator

Thank you for your contribution! We will review the pull request and get back to you soon.

@github-actionsGitHub Actions
Copy link

The git hooks are available forazure-cli andazure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (forazure-cli) or main branch (forazure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgradeazdev setup -c<your azure-cli repo path> -r<your azure-cli-extensions repo path>

@lizMSFTlizMSFT changed the title[ACR]az acr tasks create | update,az acr build | run: Add ABAC support for ACR Tasks[WIP][ACR]az acr tasks create | update,az acr build | run: Add ABAC support for ACR TasksMar 18, 2025
@lizMSFTlizMSFT changed the title[WIP][ACR]az acr tasks create | update,az acr build | run: Add ABAC support for ACR Tasks[ACR]az acr tasks create | update,az acr build | run: Add ABAC support for ACR TasksMar 18, 2025
elif source_registry_auth_id == IDENTITY_LOCAL_ID and identity is None:
identity = _build_identities_info(cmd, [source_registry_auth_id])

if source_registry_auth_id:
Copy link
Member

Choose a reason for hiding this comment

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

We have warning logic in multiple places: here,check_auth_mode_for_abac andget_custom_registry_credentials. We may consider consolidate them to one place for maintainability.

operation_group='runs')

registry_abac_enabled = registry.role_assignment_mode == RoleAssignmentMode.ABAC_REPOSITORY_PERMISSIONS
Copy link
Member

Choose a reason for hiding this comment

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

Do we consider a warning if user enabled abac but source identity is not specified? Similar to task.py:225

Copy link
ContributorAuthor

Choose a reason for hiding this comment

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

The user will still be able to create the task successfully if ABAC is enabled but the source identity is not specified. They will encounter an error when they executeaz acr task run, so a warning message could be useful.

However, foraz acr build oraz acr run, an error will be thrown directly if the user doesn't have the correct source registry credential. I'm not sure if a warning message would also be useful in this case.

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@m5i-workm5i-workm5i-work left review comments

@wangzelin007wangzelin007Awaiting requested review from wangzelin007

@zhoxing-mszhoxing-msAwaiting requested review from zhoxing-mszhoxing-ms is a code owner

@yonzhanyonzhanAwaiting requested review from yonzhan

@howang-mshowang-msAwaiting requested review from howang-mshowang-ms will be requested when the pull request is marked ready for reviewhowang-ms is a code owner

@JuliehzlJuliehzlAwaiting requested review from JuliehzlJuliehzl will be requested when the pull request is marked ready for reviewJuliehzl is a code owner

@GreedygreGreedygreAwaiting requested review from GreedygreGreedygre will be requested when the pull request is marked ready for reviewGreedygre is a code owner

@yanzhuddyanzhuddAwaiting requested review from yanzhuddyanzhudd will be requested when the pull request is marked ready for reviewyanzhudd is a code owner

@jsntcyjsntcyAwaiting requested review from jsntcyjsntcy will be requested when the pull request is marked ready for reviewjsntcy is a code owner

@jiaslijiasliAwaiting requested review from jiaslijiasli will be requested when the pull request is marked ready for reviewjiasli is a code owner

@evelyn-ysevelyn-ysAwaiting requested review from evelyn-ysevelyn-ys will be requested when the pull request is marked ready for reviewevelyn-ys is a code owner

@kairu-mskairu-msAwaiting requested review from kairu-mskairu-ms will be requested when the pull request is marked ready for reviewkairu-ms is a code owner

@calvinhzycalvinhzyAwaiting requested review from calvinhzycalvinhzy will be requested when the pull request is marked ready for reviewcalvinhzy is a code owner

@necusjznecusjzAwaiting requested review from necusjznecusjz will be requested when the pull request is marked ready for reviewnecusjz is a code owner

@beboundbeboundAwaiting requested review from beboundbebound will be requested when the pull request is marked ready for reviewbebound is a code owner

At least 1 approving review is required to merge this pull request.

Assignees

@zhoxing-mszhoxing-ms

Labels
Auto-AssignAuto assign by botContainer Registryaz acr
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
@lizMSFT@yonzhan@m5i-work@zhoxing-ms

[8]ページ先頭

©2009-2025 Movatter.jp