Functions/netbox.psm1
Function Invoke-NetboxGetHeader { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [pscredential] $Credential ) $NetboxApiToken = $Credential.GetNetworkCredential().Password $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Accept", "application/json") $headers.Add("Authorization", "Token $NetboxApiToken") $headers.Add("Content-Type", "application/json") $headers } Function Invoke-NetboxAddVm { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [string] $VMName, [Parameter()] [string] $Status = "active", [Parameter()] [int16] $Site = 1, [Parameter()] [int16] $Cluster = 1, [Parameter(Mandatory = $true)] [int16] $vCPUs, [Parameter(Mandatory = $true)] [int16] $RAM, [Parameter(Mandatory = $true)] [int16] $Disk, [Parameter(Mandatory = $true)] $header ) # [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $Body = @{"name" = $VMName; "status" = $Status; "site" = $Site; "cluster" = $Cluster; "vcpus" = $vCPUs; "memory" = $($RAM * 1024); "disk" = $Disk } $BodyJSON = $Body | ConvertTo-JSON $response = Invoke-RestMethod 'https://jax-nbx001.evorigin.com/api/virtualization/virtual-machines/' -Method 'POST' -Headers $header -Body $BodyJSON $response | ConvertTo-Json } Function Invoke-NetboxAddVmInterface { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [int16] $VmId, [Parameter()] [string] $Name = "FrontEnd", [Parameter()] [string] $enabled = "true", [Parameter(Mandatory = $true)] $header ) # [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $Body = @{ "virtual_machine" = $VmId; "name" = $Name; "enabled" = $enabled } $BodyJSON = $Body | ConvertTo-JSON $response = Invoke-RestMethod 'https://jax-nbx001.evorigin.com/api/virtualization/interfaces/' -Method 'POST' -Headers $header -Body $BodyJSON $response | ConvertTo-Json } Function Invoke-NetboxAddIp { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [string] $IpAddress, [Parameter()] [string] $Status = "active", [Parameter()] [string] $AssignedObjectType = "virtualization.vminterface", [Parameter(Mandatory = $true)] [int16] $AssignedObjectId, [Parameter(Mandatory = $true)] [string] $DnsName, [Parameter(Mandatory = $true)] $header ) # [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $Body = @{ "address" = $IpAddress; "status" = $Status; "assigned_object_type" = $AssignedObjectType; "assigned_object_id" = $AssignedObjectId; "dns_name" = $DnsName } $BodyJSON = $Body | ConvertTo-JSON $response = Invoke-RestMethod 'https://jax-nbx001.evorigin.com/api/ipam/ip-addresses/' -Method 'POST' -Headers $header -Body $BodyJSON $response | ConvertTo-Json } Function Invoke-NetboxAddIpToVM { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [string] $VmId, [Parameter(Mandatory = $true)] [int16] $IpId, [Parameter(Mandatory = $true)] $header ) # [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $Body = @{ "primary_ip4" = $IpId } $BodyJSON = $Body | ConvertTo-JSON $response = Invoke-RestMethod "https://jax-nbx001.evorigin.com/api/virtualization/virtual-machines/$VmId/" -Method 'PATCH' -Headers $header -Body $BodyJSON $response | ConvertTo-Json } |