Scripts/ProtectionSource/Register-CohesityProtectionSourceIsilon.ps1

function Register-CohesityProtectionSourceIsilon {
  <#
        .SYNOPSIS
        Registers a new Isilon protection source with the Cohesity Cluster.
        .DESCRIPTION
        Registers a new Isilon protection source with the Cohesity Cluster.
        .NOTES
        Published by Cohesity
        .LINK
        https://cohesity.github.io/cohesity-powershell-module/#/README
        .EXAMPLE
        Register-CohesityProtectionSourceIsilon -Server "isilon-cluster.example.com" -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "root", (ConvertTo-SecureString -AsPlainText "secret" -Force))
        Registers a new Isilon cluster with hostname "isilon-cluster.example.com" with the Cohesity Cluster.
    #>

  [CmdletBinding()]
  Param(
    [Parameter(Position = 0, Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    # Hostname or IP Address for the Isilon cluster.
    [String]$Server,
    [Parameter(Mandatory = $true)]
    [ValidateNotNull()]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    # User credentials for the Isilon cluster.
    $Credential
  )

  Begin {
    if (-not (Test-Path -Path "$HOME/.cohesity")) {
      throw "Failed to authenticate. Please connect to the Cohesity Cluster using 'Connect-CohesityCluster'"
    }
    $cohesitySession = Get-Content -Path $HOME/.cohesity | ConvertFrom-Json
    $cohesityCluster = $cohesitySession.ClusterUri
    $cohesityToken = $cohesitySession.Accesstoken.Accesstoken
  }

  Process {
    $ISILON_TYPE = 14
    # Using a private API for the registration, public API will be used in the upcoming release
    $cohesityClusterURL = $cohesityCluster + '/irisservices/api/v1/backupsources'
    $cohesityHeaders = @{'Authorization' = 'Bearer ' + $cohesityToken }

    $userName = $Credential.UserName
    $plainPassword = $Credential.GetNetworkCredential().Password
    $payload = @{
      entity     = @{
        type         = $ISILON_TYPE
        isilonEntity = @{
          type = 0
        }
      }
      entityInfo = @{
        endpoint    = $Server
        type        = $ISILON_TYPE
        credentials = @{
          username = $userName
          password = $plainPassword
        }
      }
    }
    $payloadJson = $payload | ConvertTo-Json -Depth 100
    $resp = Invoke-RestApi -Method Post -Uri $cohesityClusterURL -Headers $cohesityHeaders -Body $payloadJson
    if ($resp) {
      $resp
    }
    else {
      $errorMsg = "Register Isilon : Failed to register"
      Write-Output $errorMsg
      Write-Output $Global:CohesityAPIError
      CSLog -Message $errorMsg
    }
  }

  End {
  }
}