diff --git a/src/Network/Network/NetworkWatcher/ConnectionMonitor/NewAzureNetworkWatcherConnectionMonitorEndPointObjectCommand.cs b/src/Network/Network/NetworkWatcher/ConnectionMonitor/NewAzureNetworkWatcherConnectionMonitorEndPointObjectCommand.cs index d6a1c7d94212..1af63f358f84 100644 --- a/src/Network/Network/NetworkWatcher/ConnectionMonitor/NewAzureNetworkWatcherConnectionMonitorEndPointObjectCommand.cs +++ b/src/Network/Network/NetworkWatcher/ConnectionMonitor/NewAzureNetworkWatcherConnectionMonitorEndPointObjectCommand.cs @@ -25,49 +25,127 @@ namespace Microsoft.Azure.Commands.Network public class NewAzureNetworkWatcherConnectionMonitorEndpointObjectCommand : ConnectionMonitorBaseCmdlet { [Parameter( - Mandatory = false, + Mandatory = true, HelpMessage = "The name of the connection monitor endpoint.")] [ValidateNotNullOrEmpty] public string Name { get; set; } [Parameter( Mandatory = true, - HelpMessage = "The type of the connection monitor endpoint. Supported types are AzureVM, AzureVNet, AzureSubnet, ExternalAddress, MMAWorkspaceMachine, MMAWorkspaceNetwork.")] - [ValidateNotNullOrEmpty] - [PSArgumentCompleter("AzureVM", "AzureVNet", "AzureSubnet", "ExternalAddress", "MMAWorkspaceMachine", "MMAWorkspaceNetwork")] - public string Type { get; set; } + HelpMessage = "Azure VM endpoint switch.", + ParameterSetName = "AzureVM")] + public SwitchParameter AzureVM { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "Azure Vnet endpoint switch.", + ParameterSetName = "AzureVNet")] + public SwitchParameter AzureVNet { get; set; } + [Parameter( + Mandatory = true, + HelpMessage = "Azure Subnet endpoint switch.", + ParameterSetName = "AzureSubnet")] + public SwitchParameter AzureSubnet { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "External Address endpoint switch.", + ParameterSetName = "ExternalAddress")] + public SwitchParameter ExternalAddress { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "MMA Workspace Machine endpoint switch.", + ParameterSetName = "MMAWorkspaceMachine")] + public SwitchParameter MMAWorkspaceMachine { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "MMA Workspace Network endpoint switch.", + ParameterSetName = "MMAWorkspaceNetwork")] + public SwitchParameter MMAWorkspaceNetwork { get; set; } + + [Parameter( + Mandatory = true, + HelpMessage = "Resource ID of the connection monitor endpoint.", + ParameterSetName = "AzureVM")] + [Parameter( + Mandatory = true, + HelpMessage = "Resource ID of the connection monitor endpoint.", + ParameterSetName = "AzureVNet")] [Parameter( Mandatory = true, HelpMessage = "Resource ID of the connection monitor endpoint.", - ParameterSetName = "SetByResourceId")] + ParameterSetName = "AzureSubnet")] + [Parameter( + Mandatory = true, + HelpMessage = "Resource ID of the connection monitor endpoint.", + ParameterSetName = "MMAWorkspaceMachine")] + [Parameter( + Mandatory = true, + HelpMessage = "Resource ID of the connection monitor endpoint.", + ParameterSetName = "MMAWorkspaceNetwork")] [ValidateNotNullOrEmpty] public string ResourceId { get; set; } + [Parameter( + Mandatory = true, + HelpMessage = "Address of the connection monitor endpoint (IP or domain name).", + ParameterSetName = "ExternalAddress")] + [Parameter( + Mandatory = true, + HelpMessage = "Address of the connection monitor endpoint (IP or domain name).", + ParameterSetName = "MMAWorkspaceMachine")] [Parameter( Mandatory = false, HelpMessage = "Address of the connection monitor endpoint (IP or domain name).", - ParameterSetName = "SetByAddress")] + ParameterSetName = "AzureVM")] [ValidateNotNullOrEmpty] public string Address { get; set; } [Parameter( Mandatory = false, HelpMessage = "List of items which need to be included into endpont scope.", - ParameterSetName = "SetByResourceId")] + ParameterSetName = "AzureVNet")] + [Parameter( + Mandatory = false, + HelpMessage = "List of items which need to be included into endpont scope.", + ParameterSetName = "MMAWorkspaceMachine")] + [Parameter( + Mandatory = true, + HelpMessage = "List of items which need to be included into endpont scope.", + ParameterSetName = "MMAWorkspaceNetwork")] [ValidateNotNullOrEmpty] public PSNetworkWatcherConnectionMonitorEndpointScopeItem[] IncludeItem { get; set; } [Parameter( Mandatory = false, HelpMessage = "List of items which need to be excluded from endpoint scope.", - ParameterSetName = "SetByResourceId")] + ParameterSetName = "AzureVNet")] + [Parameter( + Mandatory = false, + HelpMessage = "List of items which need to be excluded from endpoint scope.", + ParameterSetName = "AzureSubnet")] + [Parameter( + Mandatory = false, + HelpMessage = "List of items which need to be excluded from endpoint scope.", + ParameterSetName = "MMAWorkspaceNetwork")] [ValidateNotNullOrEmpty] public PSNetworkWatcherConnectionMonitorEndpointScopeItem[] ExcludeItem { get; set; } [Parameter( Mandatory = false, - HelpMessage = "Test coverage for the endpoint. Supported values are Default, Low, BelowAverage, Average, AboveAvergae, Full.")] + HelpMessage = "Test coverage for the endpoint. Supported values are Default, Low, BelowAverage, Average, AboveAverage, Full.", + ParameterSetName = "AzureVNet")] + [Parameter( + Mandatory = false, + HelpMessage = "Test coverage for the endpoint. Supported values are Default, Low, BelowAverage, Average, AboveAverage, Full.", + ParameterSetName = "AzureSubnet")] + [Parameter( + Mandatory = false, + HelpMessage = "Test coverage for the endpoint. Supported values are Default, Low, BelowAverage, Average, AboveAverage, Full.", + ParameterSetName = "MMAWorkspaceNetwork")] [ValidateNotNullOrEmpty] [PSArgumentCompleter("Default", "Low", "BelowAverage", "Average", "AboveAverage", "Full")] public string CoverageLevel { get; set; } @@ -76,24 +154,10 @@ public override void Execute() { base.Execute(); - if (string.IsNullOrEmpty(this.Name)) - { - if (!string.IsNullOrEmpty(this.ResourceId)) - { - string[] SplittedName = ResourceId.Split('/'); - // Name is in the form resourceName(ResourceGroupName) - this.Name = SplittedName[8] + "(" + SplittedName[4] + ")"; - } - else if (!string.IsNullOrEmpty(this.Address)) - { - this.Name = this.Address; - } - } - PSNetworkWatcherConnectionMonitorEndpointObject endpoint = new PSNetworkWatcherConnectionMonitorEndpointObject() { Name = this.Name, - Type = this.Type, + Type = this.GetEndpointType(), ResourceId = this.ResourceId, Address = this.Address, CoverageLevel = this.CoverageLevel @@ -132,5 +196,35 @@ public override void Execute() WriteObject(endpoint); } + + private string GetEndpointType() + { + if (AzureVM.IsPresent) + { + return "AzureVM"; + } + else if (AzureVNet.IsPresent) + { + return "AzureVNet"; + } + else if (AzureSubnet.IsPresent) + { + return "AzureSubnet"; + } + else if (ExternalAddress.IsPresent) + { + return "ExternalAddress"; + } + else if (MMAWorkspaceMachine.IsPresent) + { + return "MMAWorkspaceMachine"; + } + else if (MMAWorkspaceNetwork.IsPresent) + { + return "MMAWorkspaceNetwork"; + } + + return string.Empty; + } } } \ No newline at end of file diff --git a/src/Network/Network/help/New-AzNetworkWatcherConnectionMonitorEndpointObject.md b/src/Network/Network/help/New-AzNetworkWatcherConnectionMonitorEndpointObject.md index 66e62800c6bd..d8b5276b466f 100644 --- a/src/Network/Network/help/New-AzNetworkWatcherConnectionMonitorEndpointObject.md +++ b/src/Network/Network/help/New-AzNetworkWatcherConnectionMonitorEndpointObject.md @@ -12,18 +12,46 @@ Creates connection monitor endpoint. ## SYNTAX -### SetByResourceId +### AzureVM ``` -New-AzNetworkWatcherConnectionMonitorEndpointObject [-Name ] -Type -ResourceId +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-AzureVM] -ResourceId + [-Address ] [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### AzureVNet +``` +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-AzureVNet] -ResourceId [-IncludeItem ] [-ExcludeItem ] [-CoverageLevel ] [-DefaultProfile ] [-WhatIf] [-Confirm] [] ``` -### SetByAddress +### AzureSubnet +``` +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-AzureSubnet] -ResourceId + [-ExcludeItem ] [-CoverageLevel ] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### ExternalAddress +``` +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-ExternalAddress] -Address + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### MMAWorkspaceMachine +``` +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-MMAWorkspaceMachine] -ResourceId + -Address [-IncludeItem ] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] +``` + +### MMAWorkspaceNetwork ``` -New-AzNetworkWatcherConnectionMonitorEndpointObject [-Name ] -Type [-Address ] - [-CoverageLevel ] [-DefaultProfile ] [-WhatIf] [-Confirm] [] +New-AzNetworkWatcherConnectionMonitorEndpointObject -Name [-MMAWorkspaceNetwork] -ResourceId + -IncludeItem + [-ExcludeItem ] [-CoverageLevel ] + [-DefaultProfile ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -31,11 +59,11 @@ New-AzNetworkWatcherConnectionMonitorEndpointObject cmdlet creates connection mo ## EXAMPLES -### Example 1: Create an endpoint with one included scope item -``` +### Example 1 +```powershell PS C:\>$MySrcResourceId1 = "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myresourceGroup/providers/Microsoft.OperationalInsights/workspaces/myworkspace" PS C:\>$SrcEndpointScopeItem1 = New-AzNetworkWatcherConnectionMonitorEndpointScopeItemObject -Address "WIN-P0HGNDO2S1B" -PS C:\>$SourceEndpointObject1 = New-AzNetworkWatcherConnectionMonitorEndpointObject -Name "workspaceEndpoint" -Type "MMAWorkspaceMachine" -ResourceId $MySrcResourceId1 -IncludeItem $SrcEndpointScopeItem1 +PS C:\>$SourceEndpointObject1 = New-AzNetworkWatcherConnectionMonitorEndpointObject -Name "workspaceEndpoint" -MMAWorkspaceMachine -ResourceId $MySrcResourceId1 -IncludeItem $SrcEndpointScopeItem1 ``` Name : workspaceEndpoint @@ -57,7 +85,7 @@ Address of the connection monitor endpoint (IP or domain name). ```yaml Type: System.String -Parameter Sets: SetByAddress +Parameter Sets: AzureVM Aliases: Required: False @@ -67,13 +95,70 @@ Accept pipeline input: False Accept wildcard characters: False ``` +```yaml +Type: System.String +Parameter Sets: ExternalAddress, MMAWorkspaceMachine +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AzureSubnet +Azure Subnet endpoint switch. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: AzureSubnet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AzureVM +Azure VM endpoint switch. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: AzureVM +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AzureVNet +Azure Vnet endpoint switch. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: AzureVNet +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -CoverageLevel Test coverage for the endpoint. -Supported values are Default, Low, BelowAverage, Average, AboveAverage, Full. +Supported values are Default, Low, BelowAverage, Average, AboveAvergae, Full. ```yaml Type: System.String -Parameter Sets: (All) +Parameter Sets: AzureVNet, AzureSubnet, MMAWorkspaceNetwork Aliases: Required: False @@ -103,7 +188,7 @@ List of items which need to be excluded from endpoint scope. ```yaml Type: Microsoft.Azure.Commands.Network.Models.PSNetworkWatcherConnectionMonitorEndpointScopeItem[] -Parameter Sets: SetByResourceId +Parameter Sets: AzureVNet, AzureSubnet, MMAWorkspaceNetwork Aliases: Required: False @@ -113,12 +198,27 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -ExternalAddress +External Address endpoint switch. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: ExternalAddress +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -IncludeItem List of items which need to be included into endpont scope. ```yaml Type: Microsoft.Azure.Commands.Network.Models.PSNetworkWatcherConnectionMonitorEndpointScopeItem[] -Parameter Sets: SetByResourceId +Parameter Sets: AzureVNet, MMAWorkspaceMachine Aliases: Required: False @@ -128,27 +228,39 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Name -The name of the connection monitor endpoint. +```yaml +Type: Microsoft.Azure.Commands.Network.Models.PSNetworkWatcherConnectionMonitorEndpointScopeItem[] +Parameter Sets: MMAWorkspaceNetwork +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MMAWorkspaceMachine +MMA Workspace Machine endpoint switch. ```yaml -Type: System.String -Parameter Sets: (All) +Type: System.Management.Automation.SwitchParameter +Parameter Sets: MMAWorkspaceMachine Aliases: -Required: False +Required: True Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -ResourceId -Resource ID of the connection monitor endpoint. +### -MMAWorkspaceNetwork +MMA Workspace Network endpoint switch. ```yaml -Type: System.String -Parameter Sets: SetByResourceId +Type: System.Management.Automation.SwitchParameter +Parameter Sets: MMAWorkspaceNetwork Aliases: Required: True @@ -158,9 +270,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Type -The type of the connection monitor endpoint. -Supported types are AzureVM, AzureVNet, AzureSubnet, ExternalAddress, MMAWorkspaceMachine, MMAWorkspaceNetwork. +### -Name +The name of the connection monitor endpoint. ```yaml Type: System.String @@ -174,6 +285,21 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -ResourceId +Resource ID of the connection monitor endpoint. + +```yaml +Type: System.String +Parameter Sets: AzureVM, AzureVNet, AzureSubnet, MMAWorkspaceMachine, MMAWorkspaceNetwork +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Confirm Prompts you for confirmation before running the cmdlet.