Repository: Azure/azure-cli-extensions

Issue:
Extension online docs are not reflecting CLI parameter metadata.
The docs for `az network firewall ip-config create` are mismatched.

Docs: `az network firewall ip-config create` list `--subnet` as a valid command.

CLI:

```
mike@Azure:~$ az network firewall ip-config create -h
This command is from the following extension: azure-firewall
The extension is in preview

Command
    az network firewall ip-config create : Create an Azure Firewall IP configuration.

Arguments
    --firewall-name -f  [Required] : Azure Firewall name.
    --name -n           [Required] : Name of the IP configuration.
    --public-ip-address [Required] : Name or ID of the public IP to use.
    --resource-group -g [Required] : Name of resource group. You can configure the default group
                                     using `az configure --defaults group=&lt;name&gt;`.
    --vnet-name         [Required] : The virtual network (VNet) name.
    --private-ip-address           : IP address used by the Firewall ILB as the next hop in User
                                     Defined Routes.

Global Arguments
    --debug                        : Increase logging verbosity to show all debug logs.
    --help -h                      : Show this help message and exit.
    --output -o                    : Output format.  Allowed values: json, jsonc, none, table, tsv,
                                     yaml.  Default: json.
    --query                        : JMESPath query string. See http://jmespath.org/ for more
                                     information and examples.
    --subscription                 : Name or ID of subscription. You can configure the default
                                     subscription using `az account set -s NAME_OR_ID`.
    --verbose                      : Increase logging verbosity. Use --debug for full debug logs
```

If you try and leverage the `--subnet` flag, you get this error:

```
mike@Azure:~$ az network firewall ip-config create -f &lt;fw&gt; --name &lt;name&gt; --vnet-name &lt;vnet&gt; --public-ip-address &lt;pip&gt; --private-ip-address 10.0.0.9 -g &lt;rg&gt; --subnet &lt;snet&gt;
Resource /subscriptions/.../resourceGroups/&lt;rg&gt;/providers/Microsoft.Network/virtualNetworks/&lt;vnet&gt;/subnets/&lt;snet&gt; referenced by resource /subscriptions/.../resourceGroups/&lt;rg&gt;/providers/Microsoft.Network/azureFirewalls/&lt;fw&gt; was not found. Please make sure that the referenced resource exists, and that both resources are in the same region.
```

Both resources are in the same resource group in the same region.

---
#### Document Details

⚠ *Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.*

* ID: 4a309da7-b5b4-3aa1-e546-174af6270e4d
* Version Independent ID: f62e6045-1dd9-677f-f4df-5b29338f29dc
* Content: [az network firewall ip-config](https://docs.microsoft.com/en-us/cli/azure/ext/azure-firewall/network/firewall/ip-config?view=azure-cli-latest#ext-azure-firewall-az-network-firewall-ip-config-create)
* Content Source: [latest/docs-ref-autogen/ext/azure-firewall/network/firewall/ip-config.yml](https://github.com/MicrosoftDocs/azure-docs-cli/blob/live/latest/docs-ref-autogen/ext/azure-firewall/network/firewall/ip-config.yml)
* GitHub Login: @rloutlaw
* Microsoft Alias: **routlaw**


Discussion:
This is indeed a major discrepancy between the online docs and in-help docs. I'm seeing similar things in kevault-preview and front-door. cc/ @williexu 
@adewaleo  it seems like extensions docs need  a fix similar to:
https://github.com/Azure/azure-cli/pull/8026
Same symptoms as:
https://github.com/Azure/azure-cli/issues/8023

Resolving patch:
diff --git a/scripts/refdoc/azhelpgen/azhelpgen.py b/scripts/refdoc/azhelpgen/azhelpgen.py
--- a/scripts/refdoc/azhelpgen/azhelpgen.py
+++ b/scripts/refdoc/azhelpgen/azhelpgen.py
@@ -23,18 +23,31 @@
 
 
 def get_extension_help_files(cli_ctx):
+
+    # 1. Create invoker and load command table and arguments. Remember to turn off applicability check.
     invoker = cli_ctx.invocation_cls(cli_ctx=cli_ctx, commands_loader_cls=cli_ctx.commands_loader_cls,
                                      parser_cls=cli_ctx.parser_cls, help_cls=cli_ctx.help_cls)
     cli_ctx.invocation = invoker
+
+    invoker.commands_loader.skip_applicability = True
     cmd_table = invoker.commands_loader.load_command_table(None)
-    # Filter the command table to only get commands from extensions
+
+    #   turn off applicability check for all loaders
+    for loaders in invoker.commands_loader.cmd_to_loader_map.values():
+        for loader in loaders:
+            loader.skip_applicability = True
+
+    #   filter the command table to only get commands from extensions
     cmd_table = {k: v for k, v in cmd_table.items() if isinstance(v.command_source, ExtensionCommandSource)}
     invoker.commands_loader.command_table = cmd_table
     print('FOUND {} command(s) from the extension.'.format(len(cmd_table)))
+
     for cmd_name in cmd_table:
-            invoker.commands_loader.load_arguments(cmd_name)
+        invoker.commands_loader.load_arguments(cmd_name)
+
     invoker.parser.load_command_table(invoker.commands_loader)
 
+    # 2. Now load applicable help files
     parser_keys = []
     parser_values = []
     sub_parser_keys = []


Test patch: