Sort of following on from this July 2017 post - WFA
4.1 RESTful API: A Few Notes + Some PowerShell.
I was curious to see if it’s possible using the WFA
REST API, to remove all the contents from a community generated WFA Pack,
delete the WFA Pack (without losing all the pack’s original contents, since
they’ve been removed from the pack), and then re-create a “cleaner” pack (cleaner - because I’ve
noticed some odd issues with community generated packs.) Unfortunately, I don’t
believe it is possible having read the REST Web
Services Primer, but I’m happy to be proved wrong. Still, some of my notes
regards inspecting WFA packs might be useful.
For work related reasons (compatibility with customers
environment) I’m using WFA 4.2.0.0.1 here (as of writing this, WFA 5.1RC1 is
the latest release).
If you’ve never used the PowerShell Invoke-RestMethod to talk
to your WFA box, and use self-signed certs, you’ll need to run the below
commands first:
$TypeToAdd = "using System.Net;using
System.Security.Cryptography.X509Certificates;public class TrustAllCertsPolicy
: ICertificatePolicy {public bool CheckValidationResult(ServicePoint srvPoint,
X509Certificate certificate, WebRequest request, int certificateProblem)
{return true;}}"
add-Type $TypeToAdd
[System.Net.ServicePointManager]::CertificatePolicy
= New-Object TrustAllCertsPolicy
[Net.ServicePointManager]::SecurityProtocol
= [Net.SecurityProtocolType]::Tls12
To store WFA credentials in a variable (C$), run:
$C = New-Object
System.Management.Automation.PsCredential($(Read-Host
"U"),$(Read-Host "P" -AsSecureString))
To get the packs, run:
$packs = Invoke-RestMethod -Method Get
-uri https://wfa:443/rest/packs -Credential $C
To list all the packs, see the example below:
PS> $packs.collection.pack |
foreach{$_.Name}
WFA pack with common entities
WFA pack for managing Clustered Data
ONTAP
WFA pack for managing Data ONTAP in
7-Mode
WFA pack for managing vCenter
To list all the entities in a pack called “WFA pack with
common entities”, see the example below:
PS> ($packs.collection.pack |
where{$_.name -eq "WFA pack with common entities"}).entities.entity |
Foreach{ ($_.Type) + ": " + ($_.Name) }
Remote System Type: Other
Function: getValueIfEnabled
Function: replaceFirst
Function: convertNullToValue
Function: listSize
Function: nextObjectNameWithSuffix
Function: getValueAt2DWithDefault
Function: returnNullOnEmpty
Function: padNumber
Function: getValueAt
Function: nextNamePaddedBy
Function: nextIPByIncrement
Command: Send email
Scheme: playground
Function: getValueAt2D
Function: toLower
Function: nextIP
Function: getColumnValues
Command: Acquire data source
Function: roundRobinNextIP
Command: Wait for data source acquisition
Function: getSize
Function: splitByDelimiter
Function: minimumSize
Function: toUpper
Function: convertNullToZero
Function: isElementPresent
Function: nextNamePadded
Function: getValueFrom2DByRowKey
Function: nextName
THE END
APPENDIX: Empty WFA Pack
in JSON
I created an empty pack, then went to the entities REST
API page using Google Chrome (for the example below: https://wfa/rest/packs/4409d8fe-527f-4819-b5b7-12027d9fe2e9),
acquired the XML, then used a free online XML to JSON converter (check out https://extendsclass.com/xml-to-json.html or https://codebeautify.org/xmltojson)
to see what the “Empty Pack” looks like in JSON:
{
"pack":
{
"name":
"Empty Pack",
"version":
{
"major":
"1",
"minor":
"0",
"revision":
"0"
},
"certification":
"NONE",
"description":
"Empty Pack",
"author":
"Empty Pack",
"entities":
"",
"link":
[
{
"_rel": "self",
"_href":
"https://wfa/rest/packs/4409d8fe-527f-4819-b5b7-12027d9fe2e9",
"__prefix": "atom"
},
{
"_rel": "exportToServerFolder",
"_href":
"https://wfa/rest/packs/folder/4409d8fe-527f-4819-b5b7-12027d9fe2e9",
"__prefix": "atom"
},
{
"_rel": "list",
"_href": "https://wfa/rest/packs",
"__prefix": "atom"
},
{
"_rel": "export",
"_href":
"https://wfa/rest/dars/4409d8fe-527f-4819-b5b7-12027d9fe2e9",
"__prefix": "atom"
}
],
"_xmlns:atom":
"http://www.w3.org/2005/Atom",
"_uuid":
"4409d8fe-527f-4819-b5b7-12027d9fe2e9"
}
}
APPENDIX: Definitions
of all the common links that might appear in responses.
The following table contains the definitions of all
the common links that might appear in responses. These relations are standard
across all WFA object collections.
Note: If a particular relation does not appear in a response object, it
might either mean that this particular
operation is not supported for that object or mean that the operation or
relation specified by the link is not relevant to the current context.
Table: Definitions of all the common links that might
appear in responses.
Apart from a partial or complete set of the standard
actions listed above, objects in a given object collection might support
several non-standard actions and relations that are specific to that object.
The following sections in this document that describe these object collections
also contains a table that explains all the standard and non-standard links a
given object supports.
Comments
Post a Comment