Skip to content

WebApp:az webapp deploy only works when extension is installed #17228

@JasonFreeberg

Description

@JasonFreeberg

Describe the bug

In CLI v2.20.0, the az webapp deploy command only works if the user also has the webapp extension installed.

Command without the extension installed:

jason@Azure:~$ az webapp deploy --resource-group freebergDemo --name jboss-eap-bug-bash --type war --src-url https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
The command failed with an unexpected error. Here is the traceback:
Object of type 'frozenset' is not JSON serializable
Traceback (most recent call last):
    File "/opt/az/lib/python3.6/site-packages/knack/cli.py", line 239, in invoke
    self.output.out(cmd_result, formatter=formatter, out_file=out_file)
    File "/opt/az/lib/python3.6/site-packages/knack/output.py", line 148, in out
    output = formatter(obj)
    File "/opt/az/lib/python3.6/site-packages/knack/output.py", line 40, in format_json
    separators=(',', ': ')) + '\n'
    File "/opt/az/lib/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
    File "/opt/az/lib/python3.6/json/encoder.py", line 201, in encode
    chunks = list(chunks)
    File "/opt/az/lib/python3.6/json/encoder.py", line 430, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
    File "/opt/az/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
    File "/opt/az/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
    File "/opt/az/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
    File "/opt/az/lib/python3.6/json/encoder.py", line 437, in _iterencode
    o = _default(o)
    File "/opt/az/lib/python3.6/site-packages/knack/output.py", line 32, in default
    return json.JSONEncoder.default(self, o)
    File "/opt/az/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'frozenset' is not JSON serializable

When the webapps extension is installed, the command works correctly. There is some sort of interaction between the base CLI in v2.20.0 and the webapps extension. When the extension is installed, the logs say that the behavior of the command is augmented by the presence of the webapps extension.

To Reproduce

Have v2.20.0 installed and try deploying a file from a URL: az webapp deploy --resource-group Linux --name linux-java8-jboss-7 --type war --src-url https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war

Expected behavior

The user shouldn't need to have the webapps extension installed for the deploy command to work correctly.

Environment summary

  • az version 2.20.0
  • Tested using Azure Cloud Shell

Additional context

Metadata

Metadata

Labels

Service AttentionThis issue is responsible by Azure service team.Web Appsaz webapp

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions