Did you ever get the response from VMware support or anyone else ‘for this you need a CDK license to make it work’? As it turns out this is a costly thing to have and in most cases you will not need it anyway. In addition, if you really come across something the ‘CloudUtil.exe’ does not let you do, you might be better off to stick to a proper API call to get things rolling.
So whenever you read this …
C:\Program Files (x86)\VMware\vCAC>
"C:\Program Files (x86)\VMware\vCAC\Design Center\CloudUtil.exe"
Workflow-install
Your license is not valid for Development Kit. You can only use Design Center.
Command Not Found.
… you just make a call to the underlying ‘MetaModel.svc’ ODATA REST service – the same service ‘CloudUtil.exe’ is actually using as well.
For example when you want to install a scheduled workflow you just make a call to the metamodel via ODATA or the corresponding .NET assembly. Here is an example on how to list workflows, get information about an existing workflow, create a new workflow and create a new schedule for that workflow. It is pretty much self explanatory – and works without a CDK license …
PS > $MetaModel.BaseUri
AbsolutePath : /Repository/Data/MetaModel.svc
AbsoluteUri : https://vcac52.sharedop.org/Repository/Data/MetaModel.svc
LocalPath : /Repository/Data/MetaModel.svc
Authority : vcac52.sharedop.org
HostNameType : Dns
IsDefaultPort : True
IsFile : False
IsLoopback : False
PathAndQuery : /Repository/Data/MetaModel.svc
Segments : {/, Repository/, Data/, MetaModel.svc}
IsUnc : False
Host : vcac52.sharedop.org
Port : 443
Query :
Fragment :
Scheme : https
OriginalString : https://vcac52.sharedop.org/Repository/Data/MetaModel.svc
DnsSafeHost : vcac52.sharedop.org
IsAbsoluteUri : True
UserEscaped : False
UserInfo :
PS > $MetaModel.WorkflowSchedules.Name;
AppServiceState
AppServiceWaitState
CiscoUcsStateDataCollection
LaunchEndpointDataCollection
ReclaimDestroyedStaticIPAddresses
CollectMachinesUsage
SendAlertEmail
CollectEndpointUsage
CheckUsersExist
HpIloStateDataCollection
DellIdracStateDataCollection
PS > $wfs = $MetaModel.WorkflowSchedules |? Name -eq 'ReclaimDestroyedStaticIPAddresses'
PS > ($wfs | gm -Type Properties).Name |% { $null = $MetaModel.LoadProperty($wfs, $_); };
PS > $wfs
Id : 5
Name : ReclaimDestroyedStaticIPAddresses
Description :
NextRunDatetime : 2/18/2014 6:17:38 AM
LastRunDatetime : 2/18/2014 6:12:50 AM
LastSuccessfulRunDatetime : 2/18/2014 6:12:50 AM
StartDatetime :
TimeOfDay :
DayOfWeek :
OccurrenceOfMonth :
IntervalMinutes : 5
IsActive : True
IsSystemGenerated : False
TriggeringUser :
WorkflowInstance :
WorkflowDefinition : DynamicOps.Repository.RepositoryModel.WorkflowDefinition
WorkflowScheduleArguments : {}
PS > $wfNew = New-Object DynamicOps.Repository.RepositoryModel.WorkflowDefinition
PS > $wfNew.Name = 'Custom New Workflow'
PS > $wfNew.Description = 'Custom New Workflow without SDK'
PS > $wfNew.XamlDefinition = Get-Content .\New-VcacWorkflow.xaml -Raw
PS > $wfNew.Revision = 0
PS > $wfNew.CreatedDatetime = [datetime]::UtcNow;
PS > $MetaModel.AddToWorkflowDefinitions($wfNew)
PS > $MetaModel.UpdateObject($wfNew)
PS > $MetaModel.SaveChanges()
Descriptor Headers StatusCode Error
---------- ------- ---------- -----
System.Data.Services.Client.En... {[DataServiceVersion, 1.0;], [... 201
PS > $wfsNew = New-Object DynamicOps.Repository.RepositoryModel.WorkflowSchedule
PS > $wfsNew
Id : 0
Name :
Description :
NextRunDatetime :
LastRunDatetime :
LastSuccessfulRunDatetime :
StartDatetime :
TimeOfDay :
DayOfWeek :
OccurrenceOfMonth :
IntervalMinutes :
IsActive : False
IsSystemGenerated : False
TriggeringUser :
WorkflowInstance :
WorkflowDefinition :
WorkflowScheduleArguments : {}
PS > $wfsNew.Name = 'My New Schedule'
PS > $wfsNew.Description = 'Without CDK'
PS > $wfsNew.IntervalMinutes = 5;
PS > $wfsNew.WorkflowDefinition = $wfNew;
PS > $wfsNew.NextRunDatetime = [datetime]::UtcNow.AddMinutes(5)
PS > $wfsNew.LastRunDatetime = [datetime]::UtcNow
PS > $wfsNew.LastSuccessfulRunDatetime = [datetime]::UtcNow
PS > $MetaModel.SetLink($wfsNew, 'WorkflowDefinition', $wfNew);
PS > $MetaModel.AddToWorkflowSchedules($wfsNew);
PS > $MetaModel.UpdateObject($wfsNew)
PS > $MetaModel.SaveChanges()
Descriptor Headers StatusCode Error
---------- ------- ---------- -----
System.Data.Services.Client.En... {[DataServiceVersion, 1.0;], [... 201
<!-- POST https://vcac52.sharedop.org/Repository/Data/MetaModel.svc/WorkflowSchedules HTTP/1.1 User-Agent: Microsoft ADO.NET Data Services DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Repository-Cache: AuthorizationStore=Tue, 18 Feb 2014 06:20:39 GMT;ModelConfiguration=Mon, 14 Oct 2013 14:38:27 GMT;ReadPermissions=Wed, 19 Jun 2013 01:45:17 GMT;WritePermissions=Wed, 19 Jun 2013 01:45:45 GMT Accept: application/atom+xml,application/xml Accept-Charset: UTF-8 Content-Type: application/atom+xml Authorization: Negotiate AAAAAA== Host: vcac52.sharedop.org Content-Length: 1493 --> <?xml version="1.0" encoding="utf-8" standalone="yes"?> <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <title /> <author> <name /> </author> <updated>2014-02-18T06:21:50.274422Z</updated> <id /> <link href="https://vcac52.sharedop.org/Repository/Data/MetaModel.svc/WorkflowDefinitions(244)" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/WorkflowDefinition" type="application/atom+xml;type=entry" /> <content type="application/xml"> <m:properties> <d:DayOfWeek m:type="Edm.Int16" m:null="true" /> <d:Description>Without CDK</d:Description> <d:Id m:type="Edm.Int32">0</d:Id> <d:IntervalMinutes m:type="Edm.Int32" m:null="true" /> <d:IsActive m:type="Edm.Boolean">false</d:IsActive> <d:IsSystemGenerated m:type="Edm.Boolean">false</d:IsSystemGenerated> <d:LastRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:LastSuccessfulRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:Name>My New Schedule</d:Name> <d:NextRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:OccurrenceOfMonth m:type="Edm.Int16" m:null="true" /> <d:StartDatetime m:type="Edm.DateTime" m:null="true" /> <d:TimeOfDay m:type="Edm.Int32" m:null="true" /> <d:TriggeringUser m:null="true" /> </m:properties> </content> </entry>
<!-- HTTP/1.1 201 Created Cache-Control: no-cache Content-Length: 2307 Content-Type: application/atom+xml;charset=utf-8 Location: https://vcac52.sharedop.org/Repository/Data/MetaModel.svc/WorkflowSchedules(12) DataServiceVersion: 1.0; Repository-Cache: AuthorizationStore=Tue, 18 Feb 2014 06:21:40 GMT;ModelConfiguration=Mon, 14 Oct 2013 14:38:27 GMT;ReadPermissions=Wed, 19 Jun 2013 01:45:17 GMT;WritePermissions=Wed, 19 Jun 2013 01:45:45 GMT Persistent-Auth: true WWW-Authenticate: Negotiate QAAAAA= Date: Tue, 18 Feb 2014 06:21:49 GMT --> <?xml version="1.0" encoding="utf-8" standalone="yes"?> <entry xml:base="https://vcac52.sharedop.org/Repository/Data/MetaModel.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <id>https://vcac52.sharedop.org/Repository/Data/MetaModel.svc/WorkflowSchedules(12)</id> <title type="text"></title> <updated>2014-02-18T06:21:50Z</updated> <author> <name /> </author> <link rel="edit" title="WorkflowSchedule" href="WorkflowSchedules(12)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/WorkflowInstance" type="application/atom+xml;type=entry" title="WorkflowInstance" href="WorkflowSchedules(12)/WorkflowInstance" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/WorkflowDefinition" type="application/atom+xml;type=entry" title="WorkflowDefinition" href="WorkflowSchedules(12)/WorkflowDefinition" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/WorkflowScheduleArguments" type="application/atom+xml;type=feed" title="WorkflowScheduleArguments" href="WorkflowSchedules(12)/WorkflowScheduleArguments" /> <category term="DynamicOps.Repository.RepositoryModel.WorkflowSchedule" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:Id m:type="Edm.Int32">12</d:Id> <d:Name>My New Schedule</d:Name> <d:Description>Without CDK</d:Description> <d:NextRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:LastRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:LastSuccessfulRunDatetime m:type="Edm.DateTime" m:null="true" /> <d:StartDatetime m:type="Edm.DateTime" m:null="true" /> <d:TimeOfDay m:type="Edm.Int32" m:null="true" /> <d:DayOfWeek m:type="Edm.Int16" m:null="true" /> <d:OccurrenceOfMonth m:type="Edm.Int16" m:null="true" /> <d:IntervalMinutes m:type="Edm.Int32" m:null="true" /> <d:IsActive m:type="Edm.Boolean">false</d:IsActive> <d:IsSystemGenerated m:type="Edm.Boolean">false</d:IsSystemGenerated> <d:TriggeringUser m:null="true" /> </m:properties> </content> </entry>
