Skip to content

Commit 8c41bbd

Browse files
authored
Added AllowAll & ClientIpAddress Modes to firewall rule cmdlets (#12689)
Fix #11932
1 parent 1fdb953 commit 8c41bbd

19 files changed

+337
-207
lines changed

src/MySql/Az.MySql.psd1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
# Generated by: Microsoft Corporation
55
#
6-
# Generated on: 8/12/2020
6+
# Generated on: 8/18/2020
77
#
88

99
@{
@@ -45,7 +45,7 @@ PowerShellVersion = '5.1'
4545
DotNetFrameworkVersion = '4.7.2'
4646

4747
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
48-
# CLRVersion = ''
48+
# ClrVersion = ''
4949

5050
# Processor architecture (None, X86, Amd64) required by this module
5151
# ProcessorArchitecture = ''

src/MySql/ChangeLog.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21-
* Remove legacy SkuSize from input and output (#11725)
22-
* Specify a default name when create MySql firewall rule without name and add AllowAll mode (#11932)
23-
* Enable EndIpAddress to be absent if only one IP to be authorized in firewall rule (#11933)
24-
* Add validateset for parameter StorageAutogrow (#11936)
25-
* Rename New-AzMySqlServerReplica to New-AzMySqlReplica (#11938)
26-
* Use 'master' and 'replica' to avoid confusion when create mysql replica server (#11939)
27-
* Provide hint in doc to use Update-AzMySqlServer & Update-AzMySqlServerConfiguration as a candidate for each other (#11954)
21+
* Removed legacy SkuSize from input and output (#11725)
22+
* Added AllowAll & ClientIpAddress Modes to firewall rule cmdlets (#11932)
23+
* specified a default name when created MySql firewall rule without a name (#11932)
24+
* Added validateset for parameter StorageAutogrow (#11936)
25+
* Renamed New-AzMySqlServerReplica to New-AzMySqlReplica (#11938)
26+
* Used 'master' and 'replica' to avoid confusion when created mysql replica server (#11939)
27+
* Provided hint in doc to use Update-AzMySqlServer & Update-AzMySqlServerConfiguration as a candidate for each other (#11954)
2828

2929
## Version 0.1.0
30-
* the first preview release
30+
* The first preview release
3131

src/MySql/custom/New-AzMySqlFirewallRule.ps1

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ param(
5252
# The ID of the target subscription.
5353
${SubscriptionId},
5454

55-
[Parameter(ParameterSetName='CreateExpanded')]
55+
[Parameter(ParameterSetName='CreateExpanded', Mandatory)]
5656
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
5757
[System.String]
5858
# The end IP address of the server firewall rule.
@@ -64,9 +64,15 @@ param(
6464
[System.String]
6565
# The start IP address of the server firewall rule.
6666
# Must be IPv4 format.
67-
# If range contains one IP, use StartIPAddress only.
6867
${StartIPAddress},
6968

69+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
70+
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
71+
[System.String]
72+
# Client specified single IP of the server firewall rule.
73+
# Must be IPv4 format.
74+
${ClientIPAddress},
75+
7076
[Parameter(ParameterSetName='AllowAll', Mandatory)]
7177
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
7278
[System.Management.Automation.SwitchParameter]
@@ -146,15 +152,23 @@ process {
146152

147153
$null = $PSBoundParameters.Remove('AllowAll')
148154
}
149-
else
155+
elseif($PSBoundParameters.ContainsKey('ClientIPAddress'))
150156
{
157+
$PSBoundParameters['StartIPAddress'] = $PSBoundParameters['ClientIPAddress']
158+
$PSBoundParameters['EndIPAddress'] = $PSBoundParameters['ClientIPAddress']
159+
151160
if(!$PSBoundParameters.ContainsKey('Name'))
152161
{
153-
$PSBoundParameters['Name'] = "undefined"
162+
$PSBoundParameters['Name'] = "ClientIPAddress_" + (Get-Date -Format "yyyy-MM-dd_HH-mm-ss")
154163
}
155-
if(!$PSBoundParameters.ContainsKey('EndIPAddress'))
164+
165+
$null = $PSBoundParameters.Remove('ClientIPAddress')
166+
}
167+
else
168+
{
169+
if(!$PSBoundParameters.ContainsKey('Name'))
156170
{
157-
$PSBoundParameters['EndIPAddress'] = $PSBoundParameters['StartIPAddress']
171+
$PSBoundParameters['Name'] = "undefined"
158172
}
159173
}
160174

src/MySql/custom/Update-AzMySqlFirewallRule.ps1

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,54 +24,68 @@ function Update-AzMySqlFirewallRule {
2424
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
2525
param(
2626
[Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
27+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
2728
[Alias('FirewallRuleName')]
2829
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Path')]
2930
[System.String]
3031
# The name of the server firewall rule.
3132
${Name},
3233

3334
[Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
35+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
3436
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Path')]
3537
[System.String]
3638
# The name of the resource group.
3739
# The name is case insensitive.
3840
${ResourceGroupName},
3941

4042
[Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
43+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
4144
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Path')]
4245
[System.String]
4346
# The name of the server.
4447
${ServerName},
4548

4649
[Parameter(ParameterSetName='UpdateExpanded')]
50+
[Parameter(ParameterSetName='ClientIPAddress')]
4751
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Path')]
4852
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
4953
[System.String]
5054
# The ID of the target subscription.
5155
${SubscriptionId},
5256

5357
[Parameter(ParameterSetName='UpdateViaIdentityExpanded', Mandatory, ValueFromPipeline)]
58+
[Parameter(ParameterSetName='ClientIPAddressViaIdentity', Mandatory, ValueFromPipeline)]
5459
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Path')]
5560
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Models.IMySqlIdentity]
5661
# Identity Parameter
5762
# To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
5863
${InputObject},
5964

60-
[Parameter()]
65+
[Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
66+
[Parameter(ParameterSetName='UpdateViaIdentityExpanded', Mandatory)]
6167
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
6268
[System.String]
6369
# The end IP address of the server firewall rule.
6470
# Must be IPv4 format.
6571
${EndIPAddress},
6672

67-
[Parameter(Mandatory)]
73+
[Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
74+
[Parameter(ParameterSetName='UpdateViaIdentityExpanded', Mandatory)]
6875
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
6976
[System.String]
7077
# The start IP address of the server firewall rule.
7178
# Must be IPv4 format.
72-
# If range contains one IP, use StartIPAddress only.
7379
${StartIPAddress},
7480

81+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
82+
[Parameter(ParameterSetName='ClientIPAddressViaIdentity', Mandatory)]
83+
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
84+
[System.String]
85+
# Client specified single IP of the server firewall rule.
86+
# Must be IPv4 format.
87+
${ClientIPAddress},
88+
7589
[Parameter()]
7690
[Alias('AzureRMContext', 'AzureCredential')]
7791
[ValidateNotNull()]
@@ -134,9 +148,11 @@ param(
134148

135149
process {
136150
try {
137-
if(!$PSBoundParameters.ContainsKey('EndIPAddress'))
151+
if($PSBoundParameters.ContainsKey('ClientIPAddress'))
138152
{
139-
$PSBoundParameters['EndIPAddress'] = $PSBoundParameters['StartIPAddress']
153+
$PSBoundParameters['StartIPAddress'] = $PSBoundParameters['ClientIPAddress']
154+
$PSBoundParameters['EndIPAddress'] = $PSBoundParameters['ClientIPAddress']
155+
$null = $PSBoundParameters.Remove('ClientIPAddress')
140156
}
141157
Az.MySql.internal\Update-AzMySqlFirewallRule @PSBoundParameters
142158
} catch {

src/MySql/examples/New-AzMySqlFirewallRule.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ rule 0.0.0.0 0.0.0.1
99

1010
This cmdlets create a MySql server Firewall Rule.
1111

12-
### Example 2: Create a new MySql Firewall Rule use only one parameter StartIPAddress when only one IP needs to be authorized
12+
### Example 2: Create a new MySql Firewall Rule using -ClientIPAddress.
1313
```powershell
14-
PS C:\> New-AzMySqlFirewallRule -Name rule -ResourceGroupName PowershellMySqlTest -ServerName mysql-test -StartIPAddress 0.0.0.1
14+
PS C:\> New-AzMySqlFirewallRule -ResourceGroupName PowershellMySqlTest -ServerName mysql-test -ClientIPAddress 0.0.0.1
1515
16-
Name StartIPAddress EndIPAddress
17-
---- -------------- ------------
18-
rule 0.0.0.1 0.0.0.1
16+
Name StartIPAddress EndIPAddress
17+
---- -------------- ------------
18+
ClientIPAddress_2020-08-11_18-19-27 0.0.0.1 0.0.0.1
1919
```
2020

21-
This cmdlets create a MySql Firewall Rule use only one parameter StartIPAddress when only one IP needs to be authorized.
21+
This cmdlets create a MySql Firewall Rule using -ClientIPAddress.
2222

2323
### Example 3: Create a new MySql Firewall Rule to allow all IPs
2424
```powershell

src/MySql/examples/Update-AzMySqlFirewallRule.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ rule 0.0.0.2 0.0.0.3
2121

2222
These cmdlets update MySql Firewall Rule by identity.
2323

24-
### Example 3: Update MySql Firewall Rule use only one parameter StartIPAddress when only one IP needs to be authorized
24+
### Example 3: Update MySql Firewall Rule by -ClientIPAddress.
2525
```powershell
2626
PS C:\> $ID = "/subscriptions/<SubscriptionId>/resourceGroups/PowershellMySqlTest/providers/Microsoft.DBforMySQL/servers/mysql-test/firewallRules/rule"
27-
PS C:\> Update-AzMySqlFirewallRule -InputObject $ID -StartIPAddress 0.0.0.2
27+
PS C:\> Update-AzMySqlFirewallRule -InputObject $ID --ClientIPAddress 0.0.0.2
2828
2929
Name StartIPAddress EndIPAddress
3030
---- -------------- ------------
31-
rule 0.0.0.2 0.0.0.3
31+
rule 0.0.0.2 0.0.0.2
3232
```
3333

34-
These cmdlets update MySql Firewall Rule use only one parameter StartIPAddress when only one IP needs to be authorized.
34+
These cmdlets update MySql Firewall Rule by -ClientIPAddress.

src/MySql/exports/New-AzMySqlFirewallRule.ps1

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ Name StartIPAddress EndIPAddress
2525
---- -------------- ------------
2626
rule 0.0.0.0 0.0.0.1
2727
.Example
28-
PS C:\> New-AzMySqlFirewallRule -Name rule -ResourceGroupName PowershellMySqlTest -ServerName mysql-test -StartIPAddress 0.0.0.1
28+
PS C:\> New-AzMySqlFirewallRule -ResourceGroupName PowershellMySqlTest -ServerName mysql-test -ClientIPAddress 0.0.0.1
2929
30-
Name StartIPAddress EndIPAddress
31-
---- -------------- ------------
32-
rule 0.0.0.1 0.0.0.1
30+
Name StartIPAddress EndIPAddress
31+
---- -------------- ------------
32+
ClientIPAddress_2020-08-11_18-19-27 0.0.0.1 0.0.0.1
3333
.Example
3434
PS C:\> New-AzMySqlFirewallRule -Name rule -ResourceGroupName PowershellMySqlTest -ServerName mysql-test -AllowAll
3535
@@ -75,20 +75,26 @@ param(
7575
# The ID of the target subscription.
7676
${SubscriptionId},
7777

78+
[Parameter(ParameterSetName='CreateExpanded', Mandatory)]
79+
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
80+
[System.String]
81+
# The end IP address of the server firewall rule.
82+
# Must be IPv4 format.
83+
${EndIPAddress},
84+
7885
[Parameter(ParameterSetName='CreateExpanded', Mandatory)]
7986
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
8087
[System.String]
8188
# The start IP address of the server firewall rule.
8289
# Must be IPv4 format.
83-
# If range contains one IP, use StartIPAddress only.
8490
${StartIPAddress},
8591

86-
[Parameter(ParameterSetName='CreateExpanded')]
92+
[Parameter(ParameterSetName='ClientIPAddress', Mandatory)]
8793
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
8894
[System.String]
89-
# The end IP address of the server firewall rule.
95+
# Client specified single IP of the server firewall rule.
9096
# Must be IPv4 format.
91-
${EndIPAddress},
97+
${ClientIPAddress},
9298

9399
[Parameter(ParameterSetName='AllowAll', Mandatory)]
94100
[Microsoft.Azure.PowerShell.Cmdlets.MySql.Category('Body')]
@@ -165,9 +171,10 @@ begin {
165171
$parameterSet = $PSCmdlet.ParameterSetName
166172
$mapping = @{
167173
CreateExpanded = 'Az.MySql.custom\New-AzMySqlFirewallRule';
174+
ClientIPAddress = 'Az.MySql.custom\New-AzMySqlFirewallRule';
168175
AllowAll = 'Az.MySql.custom\New-AzMySqlFirewallRule';
169176
}
170-
if (('CreateExpanded', 'AllowAll') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
177+
if (('CreateExpanded', 'ClientIPAddress', 'AllowAll') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
171178
$PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
172179
}
173180
$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)

0 commit comments

Comments
 (0)