Merge pull request #280 from lamw/master
Updates to VMC NSX-T & Content Library Module
This commit is contained in:
@@ -710,3 +710,71 @@ Function New-VMFromVMTX {
|
|||||||
Write-Host "`nDeploying new VM $NewVMName from VMTX Template $VMTXName ..."
|
Write-Host "`nDeploying new VM $NewVMName from VMTX Template $VMTXName ..."
|
||||||
$results = $vmtxService.deploy($vmtxId,$vmtxDeploySpec)
|
$results = $vmtxService.deploy($vmtxId,$vmtxDeploySpec)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Function New-SubscribedContentLibrary {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Organization: VMware
|
||||||
|
Blog: www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
This function creates a new Subscriber Content Library from Subscription URL
|
||||||
|
.PARAMETER LibraryName
|
||||||
|
The name of the new vSphere Content Library
|
||||||
|
.PARAMETER DatastoreName
|
||||||
|
The name of the vSphere Datastore to store the Content Library
|
||||||
|
.PARAMETER SubscriptionURL
|
||||||
|
The URL of the published Content Library
|
||||||
|
.PARAMETER SubscriptionThumbprint
|
||||||
|
The SSL Thumbprint for the published Content Library
|
||||||
|
.PARAMETER OnDemand
|
||||||
|
Specifies whether content is downloaded on-demand (e.g. no immediately)
|
||||||
|
.PARAMETER AutomaticSync
|
||||||
|
Specifies whether automatic synchronization with the external content library is enabled
|
||||||
|
.EXAMPLE
|
||||||
|
New-SubscribedContentLibrary -LibraryName NestedESXi -DatastoreName vsanDatastore -SubscriptionURL https://download3.vmware.com/software/vmw-tools/lib.json -SubscriptionThumbprint "7a:c4:08:2d:d3:55:56:af:9f:26:43:65:d0:31:99:0b:d2:f3:d8:69" -AutomaticSync
|
||||||
|
.EXAMPLE
|
||||||
|
New-SubscribedContentLibrary -LibraryName NestedESXi -DatastoreName vsanDatastore -SubscriptionURL https://download3.vmware.com/software/vmw-tools/lib.json -SubscriptionThumbprint "7a:c4:08:2d:d3:55:56:af:9f:26:43:65:d0:31:99:0b:d2:f3:d8:69" -OnDemand
|
||||||
|
#>
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)][String]$LibraryName,
|
||||||
|
[Parameter(Mandatory=$true)][String]$DatastoreName,
|
||||||
|
[Parameter(Mandatory=$true)][String]$SubscriptionURL,
|
||||||
|
[Parameter(Mandatory=$true)][String]$SubscriptionThumbprint,
|
||||||
|
[Parameter(Mandatory=$false)][Switch]$OnDemand,
|
||||||
|
[Parameter(Mandatory=$false)][Switch]$AutomaticSync
|
||||||
|
)
|
||||||
|
|
||||||
|
$datastore = Get-Datastore -Name $DatastoreName
|
||||||
|
|
||||||
|
if($datastore) {
|
||||||
|
$datastoreId = $datastore.ExtensionData.MoRef.Value
|
||||||
|
$subscribeLibraryService = Get-CisService -Name "com.vmware.content.subscribed_library"
|
||||||
|
|
||||||
|
$StorageSpec = [pscustomobject] @{
|
||||||
|
datastore_id = $datastoreId;
|
||||||
|
type = "DATASTORE";
|
||||||
|
}
|
||||||
|
|
||||||
|
$UniqueChangeId = [guid]::NewGuid().tostring()
|
||||||
|
|
||||||
|
$createSpec = $subscribeLibraryService.help.create.create_spec.create()
|
||||||
|
$createSpec.name = $LibraryName
|
||||||
|
$createSpec.type = "SUBSCRIBED"
|
||||||
|
$addResults = $createSpec.storage_backings.Add($StorageSpec)
|
||||||
|
|
||||||
|
if($OnDemand) { $OnDemandFlag = $true } else { $OnDemandFlag = $false }
|
||||||
|
if($AutomaticSync) { $AutomaticSyncFlag = $true } else { $AutomaticSyncFlag = $false }
|
||||||
|
$createSpec.subscription_info.on_demand = $OnDemandFlag
|
||||||
|
$createSpec.subscription_info.automatic_sync_enabled = $AutomaticSyncFlag
|
||||||
|
$createSpec.subscription_info.subscription_url = $SubscriptionURL
|
||||||
|
$createSpec.subscription_info.authentication_method = "NONE"
|
||||||
|
$createSpec.subscription_info.ssl_thumbprint = $SubscriptionThumbprint
|
||||||
|
|
||||||
|
Write-Host "Creating new Subscribed Content Library called $LibraryName ..."
|
||||||
|
$library = $subscribeLibraryService.create($UniqueChangeId, $createSpec)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -152,10 +152,12 @@ Function New-XVCMRequest {
|
|||||||
The name of the source vSphere Datacenter
|
The name of the source vSphere Datacenter
|
||||||
.PARAMETER DstDatacenter
|
.PARAMETER DstDatacenter
|
||||||
The name of the destination vSphere Datacenter
|
The name of the destination vSphere Datacenter
|
||||||
.PARAMETER SrcCluster
|
|
||||||
<Not needed for v2.0,removed from code>
|
|
||||||
.PARAMETER DstCluster
|
.PARAMETER DstCluster
|
||||||
The name of the destination vSphere Cluster, set to null if DstHost is defined
|
The name of the destination vSphere Cluster, set to null if DstHost is defined
|
||||||
|
.PARAMETER DstPool
|
||||||
|
The name of the destination vSphere Resource Pool
|
||||||
|
.PARAMETER DstFolder
|
||||||
|
The name of the destination vSphere Folder
|
||||||
.PARAMETER DstDatastore
|
.PARAMETER DstDatastore
|
||||||
The name of the destination Datastore
|
The name of the destination Datastore
|
||||||
.PARAMETER DstHost
|
.PARAMETER DstHost
|
||||||
@@ -171,6 +173,15 @@ Function New-XVCMRequest {
|
|||||||
-DstDatastore vsanDatastore `
|
-DstDatastore vsanDatastore `
|
||||||
-srcVMs @("PhotonOS-01","PhotonOS-02","PhotonOS-03","PhotonOS-04") `
|
-srcVMs @("PhotonOS-01","PhotonOS-02","PhotonOS-03","PhotonOS-04") `
|
||||||
-NetworkMapping @{"DVPG-VM Network 1"="DVPG-Internal Network";"DVPG-VM Network 2"="DVPG-External Network"}
|
-NetworkMapping @{"DVPG-VM Network 1"="DVPG-Internal Network";"DVPG-VM Network 2"="DVPG-External Network"}
|
||||||
|
.EXAMPLE
|
||||||
|
New-XVCMRequest -opType Clone -SrcSite OREGON -DstSite CALIF `
|
||||||
|
-SrcDatacenter SDDC-Datacenter -srcVMs @(“DUDE-ubuntu”) `
|
||||||
|
-DstDatacenter SDDC-Datacenter `
|
||||||
|
-DstCluster "Cluster-1" -DstHost $null `
|
||||||
|
-DstPool Compute-ResourcePool `
|
||||||
|
-DstFolder Workloads `
|
||||||
|
-DstDatastore WorkloadDatastore `
|
||||||
|
-NetworkMapping @{"OREGON-VMs-sddc"="CALIF-sddc-VMs"}
|
||||||
#>
|
#>
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory=$true)][String]$opType, #Added by CPM for 2.0
|
[Parameter(Mandatory=$true)][String]$opType, #Added by CPM for 2.0
|
||||||
@@ -178,8 +189,9 @@ Function New-XVCMRequest {
|
|||||||
[Parameter(Mandatory=$true)][String]$DstSite,
|
[Parameter(Mandatory=$true)][String]$DstSite,
|
||||||
[Parameter(Mandatory=$true)][String]$SrcDatacenter,
|
[Parameter(Mandatory=$true)][String]$SrcDatacenter,
|
||||||
[Parameter(Mandatory=$true)][String]$DstDatacenter,
|
[Parameter(Mandatory=$true)][String]$DstDatacenter,
|
||||||
#[Parameter(Mandatory=$true)][String]$SrcCluster, #Removed by CPM for 2.0
|
|
||||||
[Parameter(Mandatory=$true)][AllowNull()] $DstCluster, #Added [AllowNull()], removed [String] by CPM for 2.0
|
[Parameter(Mandatory=$true)][AllowNull()] $DstCluster, #Added [AllowNull()], removed [String] by CPM for 2.0
|
||||||
|
[Parameter(Mandatory=$true)][String]$DstPool,
|
||||||
|
[Parameter(Mandatory=$true)][String]$DstFolder,
|
||||||
[Parameter(Mandatory=$true)][String]$DstDatastore,
|
[Parameter(Mandatory=$true)][String]$DstDatastore,
|
||||||
[Parameter(Mandatory=$true)][AllowNull()] $DstHost, #Added by CPM for 2.0
|
[Parameter(Mandatory=$true)][AllowNull()] $DstHost, #Added by CPM for 2.0
|
||||||
[Parameter(Mandatory=$true)][String[]]$srcVMs,
|
[Parameter(Mandatory=$true)][String[]]$srcVMs,
|
||||||
@@ -193,7 +205,8 @@ Function New-XVCMRequest {
|
|||||||
"targetSite"=$DstSite;
|
"targetSite"=$DstSite;
|
||||||
"sourceDatacenter"=$SrcDatacenter;
|
"sourceDatacenter"=$SrcDatacenter;
|
||||||
"targetDatacenter"=$dstDatacenter;
|
"targetDatacenter"=$dstDatacenter;
|
||||||
#"sourceCluster"=$SrcCluster; #Removed by CPM for 2.0
|
"targetPool"=$DstPool;
|
||||||
|
"targetFolder"=$DstFolder;
|
||||||
"targetCluster"=$DstCluster;
|
"targetCluster"=$DstCluster;
|
||||||
"targetDatastore"=$DstDatastore;
|
"targetDatastore"=$DstDatastore;
|
||||||
"targetHost"=$DstHost; #Added by CPM for 2.0
|
"targetHost"=$DstHost; #Added by CPM for 2.0
|
||||||
|
|||||||
@@ -1144,7 +1144,7 @@ Function Get-NSXTDistFirewallSection {
|
|||||||
Get-NSXTDistFirewallSection
|
Get-NSXTDistFirewallSection
|
||||||
#>
|
#>
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory=$true)][String]$Name,
|
[Parameter(Mandatory=$false)][String]$Name,
|
||||||
[Switch]$Troubleshoot
|
[Switch]$Troubleshoot
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1185,6 +1185,60 @@ Function Get-NSXTDistFirewallSection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Function Remove-NSXTDistFirewallSection {
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created by: William Lam
|
||||||
|
Date: 04/20/2019
|
||||||
|
Organization: VMware
|
||||||
|
Blog: http://www.virtuallyghetto.com
|
||||||
|
Twitter: @lamw
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Removes an NSX-T Distributed Firewall Section
|
||||||
|
.DESCRIPTION
|
||||||
|
This cmdlet removes an NSX-T Distributed Firewall Section
|
||||||
|
.EXAMPLE
|
||||||
|
Remove-NSXTDistFirewallSection -Id <ID> -Troubleshoot
|
||||||
|
#>
|
||||||
|
Param (
|
||||||
|
[Parameter(Mandatory=$True)]$Id,
|
||||||
|
[Switch]$Troubleshoot
|
||||||
|
)
|
||||||
|
|
||||||
|
If (-Not $global:nsxtProxyConnection) { Write-error "No NSX-T Proxy Connection found, please use Connect-NSXTProxy" } Else {
|
||||||
|
$method = "DELETE"
|
||||||
|
$deleteDistFirewallSectioneURL = $global:nsxtProxyConnection.Server + "/policy/api/v1/infra/domains/cgw/communication-maps/$Id"
|
||||||
|
|
||||||
|
if($Troubleshoot) {
|
||||||
|
Write-Host -ForegroundColor cyan "`n[DEBUG] - $method`n$deleteDistFirewallSectioneURL`n"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if($PSVersionTable.PSEdition -eq "Core") {
|
||||||
|
$requests = Invoke-WebRequest -Uri $deleteDistFirewallSectioneURL -Method $method -Headers $global:nsxtProxyConnection.headers -SkipCertificateCheck
|
||||||
|
} else {
|
||||||
|
$requests = Invoke-WebRequest -Uri $deleteDistFirewallSectioneURL -Method $method -Headers $global:nsxtProxyConnection.headers
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
if($_.Exception.Response.StatusCode -eq "Unauthorized") {
|
||||||
|
Write-Host -ForegroundColor Red "`nThe NSX-T Proxy session is no longer valid, please re-run the Connect-NSXTProxy cmdlet to retrieve a new token`n"
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
Write-Error "Error in removing NSX-T Distributed Firewall Section"
|
||||||
|
Write-Error "`n($_.Exception.Message)`n"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($requests.StatusCode -eq 200) {
|
||||||
|
Write-Host "Successfully removed NSX-T Distributed Firewall Section $Id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Function Get-NSXTDistFirewall {
|
Function Get-NSXTDistFirewall {
|
||||||
<#
|
<#
|
||||||
.NOTES
|
.NOTES
|
||||||
@@ -1376,7 +1430,7 @@ Function New-NSXTDistFirewall {
|
|||||||
[Parameter(Mandatory=$True)]$SourceGroup,
|
[Parameter(Mandatory=$True)]$SourceGroup,
|
||||||
[Parameter(Mandatory=$True)]$DestinationGroup,
|
[Parameter(Mandatory=$True)]$DestinationGroup,
|
||||||
[Parameter(Mandatory=$True)]$Service,
|
[Parameter(Mandatory=$True)]$Service,
|
||||||
[Parameter(Mandatory=$True)][ValidateSet("ALLOW","DENY")]$Action,
|
[Parameter(Mandatory=$True)][ValidateSet("ALLOW","DROP")]$Action,
|
||||||
[Parameter(Mandatory=$false)][Boolean]$Logged=$false,
|
[Parameter(Mandatory=$false)][Boolean]$Logged=$false,
|
||||||
[Switch]$Troubleshoot
|
[Switch]$Troubleshoot
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user