Skip to content

Commit c7f8eff

Browse files
Added Nginx 2025-03-01-preview (WAF v2) (#9325)
* Added nginx WAF2 CLI tests * Added back help info on config update * Updated azurecli repo * Addressed CI failures and fixed test code auth * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples for WAF create and update * Added examples using aaz dev * Added back help on root file * Added missing comma --------- Co-authored-by: Brian Kimutai <[email protected]>
1 parent 3785797 commit c7f8eff

File tree

16 files changed

+4449
-1492
lines changed

16 files changed

+4449
-1492
lines changed

src/nginx/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
Release History
44
===============
55

6+
2.0.0b9
7+
++++++
8+
* Added support for WAF v2.
9+
610
2.0.0b8
711
++++++
812
* Added support for updating subnet.

src/nginx/azext_nginx/_help.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,19 @@
99
# pylint: disable=too-many-lines
1010

1111
from knack.help_files import helps # pylint: disable=unused-import
12+
13+
helps['nginx deployment waf-policy create'] = """
14+
type: command
15+
short-summary: Command to create an Nginx Deployment WAF Policy.
16+
examples:
17+
- name: Create a WAF policy for a Nginx deployment
18+
text: az nginx deployment waf-policy create --name mypolicyname --deployment-name mydeploymentname --resource-group myresourcegroupname --filepath /path/to/my/policy.json --content mycontentfileinbase64encoding
19+
"""
20+
21+
helps['nginx deployment waf-policy update'] = """
22+
type: command
23+
short-summary: Command to update an Nginx Deployment WAF Policy.
24+
examples:
25+
- name: Update a WAF policy for a Nginx deployment
26+
text: az nginx deployment waf-policy update --name mypolicyname --deployment-name mydeploymentname --resource-group myresourcegroupname --filepath /path/to/my/policy.json --content mycontentfileinbase64encoding
27+
"""

src/nginx/azext_nginx/aaz/latest/nginx/deployment/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from ._create import *
1313
from ._delete import *
1414
from ._list import *
15+
from ._list_default_waf_policy import *
1516
from ._show import *
1617
from ._update import *
1718
from ._wait import *
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
#
5+
# Code generated by aaz-dev-tools
6+
# --------------------------------------------------------------------------------------------
7+
8+
# pylint: skip-file
9+
# flake8: noqa
10+
11+
from azure.cli.core.aaz import *
12+
13+
14+
@register_command(
15+
"nginx deployment list-default-waf-policy",
16+
)
17+
class ListDefaultWafPolicy(AAZCommand):
18+
"""Lists the default WAF policies for a deployment.
19+
20+
:example: DefaultWafPolicy_List
21+
az nginx deployment list-default-waf-policy --resource-group myResourceGroup --deployment-name myDeployment
22+
"""
23+
24+
_aaz_info = {
25+
"version": "2025-03-01-preview",
26+
"resources": [
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/nginx.nginxplus/nginxdeployments/{}/listdefaultwafpolicies", "2025-03-01-preview"],
28+
]
29+
}
30+
31+
def _handler(self, command_args):
32+
super()._handler(command_args)
33+
self._execute_operations()
34+
return self._output()
35+
36+
_args_schema = None
37+
38+
@classmethod
39+
def _build_arguments_schema(cls, *args, **kwargs):
40+
if cls._args_schema is not None:
41+
return cls._args_schema
42+
cls._args_schema = super()._build_arguments_schema(*args, **kwargs)
43+
44+
# define Arg Group ""
45+
46+
_args_schema = cls._args_schema
47+
_args_schema.deployment_name = AAZStrArg(
48+
options=["--deployment-name"],
49+
help="The name of targeted NGINX deployment",
50+
required=True,
51+
id_part="name",
52+
fmt=AAZStrArgFormat(
53+
pattern="^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$",
54+
),
55+
)
56+
_args_schema.resource_group = AAZResourceGroupNameArg(
57+
required=True,
58+
)
59+
return cls._args_schema
60+
61+
def _execute_operations(self):
62+
self.pre_operations()
63+
self.DefaultWafPolicyList(ctx=self.ctx)()
64+
self.post_operations()
65+
66+
@register_callback
67+
def pre_operations(self):
68+
pass
69+
70+
@register_callback
71+
def post_operations(self):
72+
pass
73+
74+
def _output(self, *args, **kwargs):
75+
result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True)
76+
return result
77+
78+
class DefaultWafPolicyList(AAZHttpOperation):
79+
CLIENT_TYPE = "MgmtClient"
80+
81+
def __call__(self, *args, **kwargs):
82+
request = self.make_request()
83+
session = self.client.send_request(request=request, stream=False, **kwargs)
84+
if session.http_response.status_code in [200]:
85+
return self.on_200(session)
86+
87+
return self.on_error(session.http_response)
88+
89+
@property
90+
def url(self):
91+
return self.client.format_url(
92+
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/listDefaultWafPolicies",
93+
**self.url_parameters
94+
)
95+
96+
@property
97+
def method(self):
98+
return "POST"
99+
100+
@property
101+
def error_format(self):
102+
return "MgmtErrorFormat"
103+
104+
@property
105+
def url_parameters(self):
106+
parameters = {
107+
**self.serialize_url_param(
108+
"deploymentName", self.ctx.args.deployment_name,
109+
required=True,
110+
),
111+
**self.serialize_url_param(
112+
"resourceGroupName", self.ctx.args.resource_group,
113+
required=True,
114+
),
115+
**self.serialize_url_param(
116+
"subscriptionId", self.ctx.subscription_id,
117+
required=True,
118+
),
119+
}
120+
return parameters
121+
122+
@property
123+
def query_parameters(self):
124+
parameters = {
125+
**self.serialize_query_param(
126+
"api-version", "2025-03-01-preview",
127+
required=True,
128+
),
129+
}
130+
return parameters
131+
132+
@property
133+
def header_parameters(self):
134+
parameters = {
135+
**self.serialize_header_param(
136+
"Accept", "application/json",
137+
),
138+
}
139+
return parameters
140+
141+
def on_200(self, session):
142+
data = self.deserialize_http_content(session)
143+
self.ctx.set_var(
144+
"instance",
145+
data,
146+
schema_builder=self._build_schema_on_200
147+
)
148+
149+
_schema_on_200 = None
150+
151+
@classmethod
152+
def _build_schema_on_200(cls):
153+
if cls._schema_on_200 is not None:
154+
return cls._schema_on_200
155+
156+
cls._schema_on_200 = AAZObjectType()
157+
158+
_schema_on_200 = cls._schema_on_200
159+
_schema_on_200.next_link = AAZStrType(
160+
serialized_name="nextLink",
161+
)
162+
_schema_on_200.value = AAZListType()
163+
164+
value = cls._schema_on_200.value
165+
value.Element = AAZObjectType()
166+
167+
_element = cls._schema_on_200.value.Element
168+
_element.content = AAZStrType(
169+
flags={"read_only": True},
170+
)
171+
_element.filepath = AAZStrType(
172+
flags={"read_only": True},
173+
)
174+
175+
return cls._schema_on_200
176+
177+
178+
class _ListDefaultWafPolicyHelper:
179+
"""Helper class for ListDefaultWafPolicy"""
180+
181+
182+
__all__ = ["ListDefaultWafPolicy"]

src/nginx/azext_nginx/aaz/latest/nginx/deployment/configuration/_update.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def _build_arguments_schema(cls, *args, **kwargs):
9090
_args_schema.root_file = AAZStrArg(
9191
options=["--root-file"],
9292
arg_group="Properties",
93-
help="root file",
93+
help="The root file of the Nginx Configuration",
9494
nullable=True,
9595
)
9696

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
#
5+
# Code generated by aaz-dev-tools
6+
# --------------------------------------------------------------------------------------------
7+
8+
# pylint: skip-file
9+
# flake8: noqa
10+
11+
from azure.cli.core.aaz import *
12+
13+
14+
@register_command_group(
15+
"nginx deployment waf-policy",
16+
)
17+
class __CMDGroup(AAZCommandGroup):
18+
"""Manage Waf Policy
19+
"""
20+
pass
21+
22+
23+
__all__ = ["__CMDGroup"]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
#
5+
# Code generated by aaz-dev-tools
6+
# --------------------------------------------------------------------------------------------
7+
8+
# pylint: skip-file
9+
# flake8: noqa
10+
11+
from .__cmd_group import *
12+
from ._create import *
13+
from ._delete import *
14+
from ._list import *
15+
from ._show import *
16+
from ._update import *
17+
from ._wait import *

0 commit comments

Comments
 (0)