Intro
Like I said in my previous post about Pod Federations this is a separate post that will show how to handle Sites within a Pod Federation. There are only a couple of API calls that do not include assigning a pod to a site. This is done trough the podservice which I will post about in a next blog post.
Let’s take a look at the site service to see what it actually has in api call’s
$services1.site | gm
So we have Site_create, Site_delete, site_get, site_list and site_update. To Make it myself easy I will use the order of List, create, get, update and delete.
[sta_anchor id=”list” /]
Site_list
With site_list a list of all available site’s will be created, currently I have only one so let’s show that one.
$services1.site.site_list()
Note a lot of information is shown so let’s take a look at the contents of base and pods.
($services1.site.site_list()).base
($services1.site.site_list()).pods
so again not a lot of information since it only contains a name, description and the pod id’s of the member pods.
[sta_anchor id=”create” /]
Site_Create
Since we already saw in the methods under the siteservice that the create needs a bit more information then just a name let’s take a look again at what is required.
$services1.site.site_create
An object is needed of the type vmware.hv.sitebase, we will need to take a look in the API explorer to see what this object should contain. Under Site_create we can click on sitebase.
The sitebase object has 2 properties of which only DisplayName is required. I have tried various ways to keep the description empty but haven’t succeeded so far and with it it the create also doesn’t work so how optional is it?
Let’s create the sitebase object
$sitebase=new-object vmware.hv.sitebase $sitebase.displayname="blogpostdemosite" $sitebase.description="This is a blog demo site" $sitebase
The $sitebase is not required but shows what the object contains. Now we have enough to create the new site.
$services1.site.site_create($sitebase)
[sta_anchor id=”get” /]
Site_Get
In the overview we have seen that a site_get needs a bit more information.
$services1.site.site_get
We already know how to get this site id by using site_list, normally you would only use the site_get with an id received from another service like the pod service. For the example I will use the demo site I create in the site_create part of this post.
First I will need to get the siteid
$demosite=$services1.site.site_list() | where-object {$_.base.displayname -like "*blogpostdemosite*"}
And now we need to apply that to the site_get
$services1.site.site_get($demosite.id)
[sta_anchor id=”update” /]
Site_Update
As said before for an update method it is better to use the helper service for that service.
$siteservice=new-object vmware.hv.siteservice
now what method’s do we see?
$siteservice | gm
To see the difference between the sitebasehelper and siteinfohelper I will create both objects.
$siteinfohelper=$siteservice.read($services1, $demosite.id) $sitebasehelper=$siteservice.read($services1, $demosite.id)
Now let’s compare them.
$sitebasehelper | gm $siteinfohelper | gm
This is again one of those wtf moments, they both do exactly the same! I will use the sitebasehelper for now will update both the Displayname and description. For this I will need to use the getbasehelper 1 step deeper
$sitebasehelper.getbasehelper() | gm
$sitebasehelper.getbasehelper().setDisplayname("thissitecanberemoved") $sitebasehelper.getbasehelper().setDescription("yes it can really be removed")
and apply the update, since neither will generate a response I won’t put any screenshots in.
$siteservice.update($services1, $sitebasehelper)
Now let’s see the result for a site_get for this site now
[sta_anchor id=”delete” /]
Site_Delete
We can take a look at it but to delete a site we only need the siteid so let’s remove that site we gave an update.
$services1.site.Site_Delete($demosite.id)
again no visual feedback but if we do a sitelist there’s only one left.