// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.avs.models;

import com.azure.core.http.rest.PagedIterable;
import com.azure.core.http.rest.Response;
import com.azure.core.util.Context;

/** Resource collection API of WorkloadNetworks. */
public interface WorkloadNetworks {
    /**
     * Get a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param workloadNetworkName Name for the workload network in the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetwork> getWithResponse(
        String resourceGroupName, String privateCloudName, WorkloadNetworkName workloadNetworkName, Context context);

    /**
     * Get a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param workloadNetworkName Name for the workload network in the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a private cloud workload network.
     */
    WorkloadNetwork get(String resourceGroupName, String privateCloudName, WorkloadNetworkName workloadNetworkName);

    /**
     * List of workload networks in a private cloud.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of workload networks as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetwork> list(String resourceGroupName, String privateCloudName);

    /**
     * List of workload networks in a private cloud.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of workload networks as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetwork> list(String resourceGroupName, String privateCloudName, Context context);

    /**
     * List of segments in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Segments as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkSegment> listSegments(String resourceGroupName, String privateCloudName);

    /**
     * List of segments in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Segments as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkSegment> listSegments(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a segment by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param segmentId NSX Segment identifier. Generally the same as the Segment's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a segment by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkSegment> getSegmentWithResponse(
        String resourceGroupName, String privateCloudName, String segmentId, Context context);

    /**
     * Get a segment by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param segmentId NSX Segment identifier. Generally the same as the Segment's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a segment by id in a private cloud workload network.
     */
    WorkloadNetworkSegment getSegment(String resourceGroupName, String privateCloudName, String segmentId);

    /**
     * Delete a segment by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param segmentId NSX Segment identifier. Generally the same as the Segment's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteSegment(String resourceGroupName, String privateCloudName, String segmentId);

    /**
     * Delete a segment by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param segmentId NSX Segment identifier. Generally the same as the Segment's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteSegment(String resourceGroupName, String privateCloudName, String segmentId, Context context);

    /**
     * List dhcp in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX dhcp entities as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDhcp> listDhcp(String resourceGroupName, String privateCloudName);

    /**
     * List dhcp in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX dhcp entities as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDhcp> listDhcp(String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get dhcp by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dhcpId NSX DHCP identifier. Generally the same as the DHCP display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return dhcp by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDhcp> getDhcpWithResponse(
        String resourceGroupName, String dhcpId, String privateCloudName, Context context);

    /**
     * Get dhcp by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dhcpId NSX DHCP identifier. Generally the same as the DHCP display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return dhcp by id in a private cloud workload network.
     */
    WorkloadNetworkDhcp getDhcp(String resourceGroupName, String dhcpId, String privateCloudName);

    /**
     * Delete dhcp by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dhcpId NSX DHCP identifier. Generally the same as the DHCP display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDhcp(String resourceGroupName, String privateCloudName, String dhcpId);

    /**
     * Delete dhcp by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dhcpId NSX DHCP identifier. Generally the same as the DHCP display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDhcp(String resourceGroupName, String privateCloudName, String dhcpId, Context context);

    /**
     * List of gateways in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Gateways as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkGateway> listGateways(String resourceGroupName, String privateCloudName);

    /**
     * List of gateways in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Gateways as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkGateway> listGateways(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a gateway by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param gatewayId NSX Gateway identifier. Generally the same as the Gateway's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a gateway by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkGateway> getGatewayWithResponse(
        String resourceGroupName, String privateCloudName, String gatewayId, Context context);

    /**
     * Get a gateway by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param gatewayId NSX Gateway identifier. Generally the same as the Gateway's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a gateway by id in a private cloud workload network.
     */
    WorkloadNetworkGateway getGateway(String resourceGroupName, String privateCloudName, String gatewayId);

    /**
     * List of port mirroring profiles in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Port Mirroring as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkPortMirroring> listPortMirroring(String resourceGroupName, String privateCloudName);

    /**
     * List of port mirroring profiles in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Port Mirroring as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkPortMirroring> listPortMirroring(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a port mirroring profile by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param portMirroringId NSX Port Mirroring identifier. Generally the same as the Port Mirroring display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a port mirroring profile by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkPortMirroring> getPortMirroringWithResponse(
        String resourceGroupName, String privateCloudName, String portMirroringId, Context context);

    /**
     * Get a port mirroring profile by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param portMirroringId NSX Port Mirroring identifier. Generally the same as the Port Mirroring display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a port mirroring profile by id in a private cloud workload network.
     */
    WorkloadNetworkPortMirroring getPortMirroring(
        String resourceGroupName, String privateCloudName, String portMirroringId);

    /**
     * Delete a port mirroring profile by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param portMirroringId NSX Port Mirroring identifier. Generally the same as the Port Mirroring display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePortMirroring(String resourceGroupName, String portMirroringId, String privateCloudName);

    /**
     * Delete a port mirroring profile by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param portMirroringId NSX Port Mirroring identifier. Generally the same as the Port Mirroring display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePortMirroring(
        String resourceGroupName, String portMirroringId, String privateCloudName, Context context);

    /**
     * List of vm groups in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX VM Groups as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkVMGroup> listVMGroups(String resourceGroupName, String privateCloudName);

    /**
     * List of vm groups in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX VM Groups as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkVMGroup> listVMGroups(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a vm group by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param vmGroupId NSX VM Group identifier. Generally the same as the VM Group's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a vm group by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkVMGroup> getVMGroupWithResponse(
        String resourceGroupName, String privateCloudName, String vmGroupId, Context context);

    /**
     * Get a vm group by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param vmGroupId NSX VM Group identifier. Generally the same as the VM Group's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a vm group by id in a private cloud workload network.
     */
    WorkloadNetworkVMGroup getVMGroup(String resourceGroupName, String privateCloudName, String vmGroupId);

    /**
     * Delete a vm group by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param vmGroupId NSX VM Group identifier. Generally the same as the VM Group's display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteVMGroup(String resourceGroupName, String vmGroupId, String privateCloudName);

    /**
     * Delete a vm group by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param vmGroupId NSX VM Group identifier. Generally the same as the VM Group's display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteVMGroup(String resourceGroupName, String vmGroupId, String privateCloudName, Context context);

    /**
     * List of virtual machines in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Virtual Machines as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkVirtualMachine> listVirtualMachines(String resourceGroupName, String privateCloudName);

    /**
     * List of virtual machines in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Virtual Machines as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkVirtualMachine> listVirtualMachines(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a virtual machine by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param virtualMachineId Virtual Machine identifier.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a virtual machine by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkVirtualMachine> getVirtualMachineWithResponse(
        String resourceGroupName, String privateCloudName, String virtualMachineId, Context context);

    /**
     * Get a virtual machine by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param virtualMachineId Virtual Machine identifier.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a virtual machine by id in a private cloud workload network.
     */
    WorkloadNetworkVirtualMachine getVirtualMachine(
        String resourceGroupName, String privateCloudName, String virtualMachineId);

    /**
     * List of DNS services in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX DNS Services as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDnsService> listDnsServices(String resourceGroupName, String privateCloudName);

    /**
     * List of DNS services in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX DNS Services as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDnsService> listDnsServices(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a DNS service by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dnsServiceId NSX DNS Service identifier. Generally the same as the DNS Service's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS service by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDnsService> getDnsServiceWithResponse(
        String resourceGroupName, String privateCloudName, String dnsServiceId, Context context);

    /**
     * Get a DNS service by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dnsServiceId NSX DNS Service identifier. Generally the same as the DNS Service's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS service by id in a private cloud workload network.
     */
    WorkloadNetworkDnsService getDnsService(String resourceGroupName, String privateCloudName, String dnsServiceId);

    /**
     * Delete a DNS service by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dnsServiceId NSX DNS Service identifier. Generally the same as the DNS Service's display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsService(String resourceGroupName, String dnsServiceId, String privateCloudName);

    /**
     * Delete a DNS service by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dnsServiceId NSX DNS Service identifier. Generally the same as the DNS Service's display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsService(String resourceGroupName, String dnsServiceId, String privateCloudName, Context context);

    /**
     * List of DNS zones in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX DNS Zones as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDnsZone> listDnsZones(String resourceGroupName, String privateCloudName);

    /**
     * List of DNS zones in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX DNS Zones as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkDnsZone> listDnsZones(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a DNS zone by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dnsZoneId NSX DNS Zone identifier. Generally the same as the DNS Zone's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS zone by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDnsZone> getDnsZoneWithResponse(
        String resourceGroupName, String privateCloudName, String dnsZoneId, Context context);

    /**
     * Get a DNS zone by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param dnsZoneId NSX DNS Zone identifier. Generally the same as the DNS Zone's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS zone by id in a private cloud workload network.
     */
    WorkloadNetworkDnsZone getDnsZone(String resourceGroupName, String privateCloudName, String dnsZoneId);

    /**
     * Delete a DNS zone by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dnsZoneId NSX DNS Zone identifier. Generally the same as the DNS Zone's display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsZone(String resourceGroupName, String dnsZoneId, String privateCloudName);

    /**
     * Delete a DNS zone by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param dnsZoneId NSX DNS Zone identifier. Generally the same as the DNS Zone's display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsZone(String resourceGroupName, String dnsZoneId, String privateCloudName, Context context);

    /**
     * List of Public IP Blocks in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Public IP Blocks as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkPublicIp> listPublicIPs(String resourceGroupName, String privateCloudName);

    /**
     * List of Public IP Blocks in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a list of NSX Public IP Blocks as paginated response with {@link PagedIterable}.
     */
    PagedIterable<WorkloadNetworkPublicIp> listPublicIPs(
        String resourceGroupName, String privateCloudName, Context context);

    /**
     * Get a Public IP Block by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param publicIpId NSX Public IP Block identifier. Generally the same as the Public IP Block's display name.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a Public IP Block by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkPublicIp> getPublicIpWithResponse(
        String resourceGroupName, String privateCloudName, String publicIpId, Context context);

    /**
     * Get a Public IP Block by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param privateCloudName Name of the private cloud.
     * @param publicIpId NSX Public IP Block identifier. Generally the same as the Public IP Block's display name.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a Public IP Block by id in a private cloud workload network.
     */
    WorkloadNetworkPublicIp getPublicIp(String resourceGroupName, String privateCloudName, String publicIpId);

    /**
     * Delete a Public IP Block by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param publicIpId NSX Public IP Block identifier. Generally the same as the Public IP Block's display name.
     * @param privateCloudName Name of the private cloud.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePublicIp(String resourceGroupName, String publicIpId, String privateCloudName);

    /**
     * Delete a Public IP Block by id in a private cloud workload network.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param publicIpId NSX Public IP Block identifier. Generally the same as the Public IP Block's display name.
     * @param privateCloudName Name of the private cloud.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePublicIp(String resourceGroupName, String publicIpId, String privateCloudName, Context context);

    /**
     * Get a segment by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a segment by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkSegment getSegmentById(String id);

    /**
     * Get a segment by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a segment by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkSegment> getSegmentByIdWithResponse(String id, Context context);

    /**
     * Get dhcp by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return dhcp by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkDhcp getDhcpById(String id);

    /**
     * Get dhcp by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return dhcp by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDhcp> getDhcpByIdWithResponse(String id, Context context);

    /**
     * Get a port mirroring profile by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a port mirroring profile by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkPortMirroring getPortMirroringById(String id);

    /**
     * Get a port mirroring profile by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a port mirroring profile by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkPortMirroring> getPortMirroringByIdWithResponse(String id, Context context);

    /**
     * Get a vm group by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a vm group by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkVMGroup getVMGroupById(String id);

    /**
     * Get a vm group by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a vm group by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkVMGroup> getVMGroupByIdWithResponse(String id, Context context);

    /**
     * Get a DNS service by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS service by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkDnsService getDnsServiceById(String id);

    /**
     * Get a DNS service by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS service by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDnsService> getDnsServiceByIdWithResponse(String id, Context context);

    /**
     * Get a DNS zone by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS zone by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkDnsZone getDnsZoneById(String id);

    /**
     * Get a DNS zone by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a DNS zone by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkDnsZone> getDnsZoneByIdWithResponse(String id, Context context);

    /**
     * Get a Public IP Block by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a Public IP Block by id in a private cloud workload network along with {@link Response}.
     */
    WorkloadNetworkPublicIp getPublicIpById(String id);

    /**
     * Get a Public IP Block by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return a Public IP Block by id in a private cloud workload network along with {@link Response}.
     */
    Response<WorkloadNetworkPublicIp> getPublicIpByIdWithResponse(String id, Context context);

    /**
     * Delete a segment by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteSegmentById(String id);

    /**
     * Delete a segment by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteSegmentByIdWithResponse(String id, Context context);

    /**
     * Delete dhcp by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDhcpById(String id);

    /**
     * Delete dhcp by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDhcpByIdWithResponse(String id, Context context);

    /**
     * Delete a port mirroring profile by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePortMirroringById(String id);

    /**
     * Delete a port mirroring profile by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePortMirroringByIdWithResponse(String id, Context context);

    /**
     * Delete a vm group by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteVMGroupById(String id);

    /**
     * Delete a vm group by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteVMGroupByIdWithResponse(String id, Context context);

    /**
     * Delete a DNS service by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsServiceById(String id);

    /**
     * Delete a DNS service by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsServiceByIdWithResponse(String id, Context context);

    /**
     * Delete a DNS zone by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsZoneById(String id);

    /**
     * Delete a DNS zone by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deleteDnsZoneByIdWithResponse(String id, Context context);

    /**
     * Delete a Public IP Block by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePublicIpById(String id);

    /**
     * Delete a Public IP Block by id in a private cloud workload network.
     *
     * @param id the resource ID.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    void deletePublicIpByIdWithResponse(String id, Context context);

    /**
     * Begins definition for a new WorkloadNetworkSegment resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkSegment definition.
     */
    WorkloadNetworkSegment.DefinitionStages.Blank defineSegments(String name);

    /**
     * Begins definition for a new WorkloadNetworkDhcp resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkDhcp definition.
     */
    WorkloadNetworkDhcp.DefinitionStages.Blank defineDhcp(String name);

    /**
     * Begins definition for a new WorkloadNetworkPortMirroring resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkPortMirroring definition.
     */
    WorkloadNetworkPortMirroring.DefinitionStages.Blank definePortMirroring(String name);

    /**
     * Begins definition for a new WorkloadNetworkVMGroup resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkVMGroup definition.
     */
    WorkloadNetworkVMGroup.DefinitionStages.Blank defineVMGroup(String name);

    /**
     * Begins definition for a new WorkloadNetworkDnsService resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkDnsService definition.
     */
    WorkloadNetworkDnsService.DefinitionStages.Blank defineDnsService(String name);

    /**
     * Begins definition for a new WorkloadNetworkDnsZone resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkDnsZone definition.
     */
    WorkloadNetworkDnsZone.DefinitionStages.Blank defineDnsZone(String name);

    /**
     * Begins definition for a new WorkloadNetworkPublicIp resource.
     *
     * @param name resource name.
     * @return the first stage of the new WorkloadNetworkPublicIp definition.
     */
    WorkloadNetworkPublicIp.DefinitionStages.Blank definePublicIp(String name);
}
