Nutanix.Networking.psd1

@{
    # Module manifest for Nutanix Nutanix.Networking PowerShell module
    RootModule = 'Nutanix.Networking.dll'
    
    # Version number of this module.
    ModuleVersion = "1.0.0"

    # ID used to uniquely identify this module
    GUID = 'de1bd979-e54e-4a29-aa9c-132aa41e4627'

    # Author of this module
    Author = 'Nutanix'

    # Company or vendor of this module
    CompanyName = 'Nutanix'

    # Copyright statement for this module
    Copyright = '(c) Nutanix. All rights reserved.'

    # Description of the functionality provided by this module
    Description = 'Manage networking configuration on Nutanix clusters, including AHV and advanced networking.'

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '7.0'

    # Minimum version of the common language runtime (CLR) required by this module
    CLRVersion = '4.0'

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

    # Functions to export from this module
    FunctionsToExport = @()

    # Cmdlets to export from this module
    # Export all cmdlets - use wildcard to include all generated cmdlets
    # This includes cmdlets like Get-VmById, Set-VmById, etc.
    # Connection management: Set-PrismCentralConfig (alias: Set-PcConfig), Clear-NutanixConfig
    CmdletsToExport = @('*')

    # Variables to export from this module
    VariablesToExport = '*'

    # Aliases to export from this module
    AliasesToExport = @()

    # List of all modules packaged with this module
    ModuleList = @()

    # List of all files packaged with this module
    FileList = @('LICENSE.txt')

    # Private data to pass to the module specified in RootModule/ModuleToProcess
    PrivateData = @{
        PSData = @{
            # Tags applied to this module
            Tags = @('Nutanix', 'API', 'REST', 'Cloud', 'Nutanix.Networking')

            # A URL to the license for this module
            # LicenseUri =

            # A URL to the main website for this project
            ProjectUri = ''

            # A URL to an icon representing this module
            IconUri = 'https://www.nutanix.com/favicon-96x96.png'

            # ReleaseNotes of this module
            ReleaseNotes = @'
# Nutanix Nutanix.Networking PowerShell Module v1.0.0

PowerShell module for managing Nutanix Nutanix.Networking resources using the Nutanix.Networking API.

### Features
- **Resource Operations**: Create, read, update, delete, and list operations
- **Device Management**: Manage various device types and configurations
- **Lifecycle Operations**: Power management, migration, cloning, and more
- **Dual Parameter Sets**: All cmdlets support both individual parameters and Request object patterns

### Quick Start

1. **Import the module**:
   ```powershell
   Import-Module Nutanix.Networking
   ```

2. **Configure connection** (via Set-PrismCentralConfig or alias Set-PcConfig):
   ```powershell
   # Password is a mandatory SecureString parameter
   # If not provided, PowerShell will prompt for it securely
   
   # Option 1: Let PowerShell prompt (recommended for interactive use)
   Set-PcConfig -Host "10.46.8.20" -Username "admin" -SkipCertificateCheck
   # PowerShell prompts: Password: *******
   
   # Option 2: Explicitly provide SecureString password
   $password = Read-Host -AsSecureString -Prompt "Enter Password"
   Set-PcConfig -Host "10.46.8.20" -Username "admin" -Password $password -SkipCertificateCheck
   
   # Option 3: From PSCredential
   $credential = Get-Credential -UserName "admin"
   Set-PcConfig -Host "10.46.8.20" -Username $credential.UserName -Password $credential.Password -SkipCertificateCheck
   ```
   
   **Important:** Password is required. Without a valid password, API calls will fail with HTTP 401 Unauthorized.

3. **Use Nutanix.Networking cmdlets**:
   ```powershell
   # Example: List resources
   Get-* -Limit_ 10
   
   # Example: Get resource by ID (Individual parameters)
   Get-*ById -ExtId "resource-uuid"
   
   # Example: Update resource (Individual parameters)
   Set-*ById -ExtId "resource-uuid" -Body $bodyObject -ETag "etag-value"
   
   # Example: Update resource (Request object)
   $request = New-Object Nutanix.Nutanix.NetworkingSDK.Model.Request.*.*Request
   $request.extId = "resource-uuid"
   $request.body = $bodyObject
   Set-*ById -Request $request -ETag "etag-value"
   ```

4. **Clear configuration when done**:
   ```powershell
   Clear-NutanixConfig
   ```

### Requirements
- PowerShell 7.0 or higher
- .NET 8.0 Runtime
- Access to a Nutanix cluster with Nutanix.Networking API enabled

### Parameter Sets

All cmdlets support two parameter sets:
- **Individual**: Accepts individual parameters (e.g., `-ExtId`, `-Body`)
- **Request**: Accepts a single Request object (e.g., `-Request`)

This provides flexibility for different use cases and enables better integration with other PowerShell workflows.

### Connection Management

- **Set-PrismCentralConfig** (or alias **Set-PcConfig**): Configure connection to Nutanix cluster
- **Clear-NutanixConfig**: Clear stored connection configuration
'@


            # Prerelease string
            Prerelease = ''

            # External dependent modules of this module
            # Nutanix.Networking module is self-contained - connection management is handled via NutanixConfigBaseCmdlet
            ExternalModuleDependencies = @()
        }
    }

    # HelpInfo URI of this module
    HelpInfoURI = ''

    # Default prefix for commands exported from this module
    DefaultCommandPrefix = ''
}