Dynamic Types plug-in generator package

Dynamic Types plug-in generator package

The plug-in generator package is a set of wizard and template workflows allowing to create a plug-in without doing any scripting.

Read more about Dynamic Types in this article.

To familiarize yourself with creating a Dynamic Types plug-in V2 you can follow this tutorial and/or this tutorial.

Requires:

Download the plug-in generator version 2 from sample exchange (Since November 2, 2016 since the package was moved from Flowgrab)

Handle REST APIs with JSON or XML message formats.

  • - Wizard based workflow to create a plug-in inventory handling
    • Multiple hosts *
    • Multiple levels of objects *
    • Caching to avoid repeating requests *
    • Requires a single URL per object to implement findRelation, findAll, findById *
    • Get object properties using
      • Simple properties: JavaScript like doted syntax
      • Complex properties: JSONSelect (By Lloyd Hilaiel) *
      • Complex properties with high performance: pluggable actions
  • - Wizard based workflow to create and invoke object methods that are wrappable into plug-in workflows *
  • - Export plug-in to a end user installable package including runtime

* New functionality of version 2

Special thanks to Brandon Saxe for integrating JSONSelect in Orchestrator.

Disclaimer: These samples workflows are provided AS IS and are not considered production quality and are not officially supported. Use at your own risk.

Attachments
Comments

Christophe, it looks like the workflow validation part is functioning, however the REST call that is happening to bring back properties appears to be in the wrong order. I think the screenshot below will illustrate. As you'll see, {accessZone} is the second param in the URL, the first param in the dropdown list, whereas {smbShare} is first in the URL and 2nd in the dropdown list. The dropdowns work as expected however the error returned from the REST call indicates that the parameters are being sent in the wrong order. (vra = access zone and it = the share name)

OK I fixed the validation, the pull downs, the findRelation and findById but obviously missed the change in the action that is started by the response field. I will look into it ASAP.

Tx for reporting the issue !

No problem,  thanks for your rapid response.  What you've built is an amazing time saver and generally awesome!

So I rebuilt my Veeam DT. In the Inventory, I now see all the old objects and my new objects under the same Namespace under two different parent objects.

I have discovered that when upgrading from 5.5 to 6 that the Resources of the HTTP-REST has been moved to REST/Configuration  I had to do some manual stuff after the upgrade for things to be seen correctly and cause the plugin to error

New version on flowgrab. I had a version conflict on the action that generate the response field and was lacking the change in findById. I also extended the support of out of order parameters to the workflows for invoking a method.

OK 0.23 works, thanks!

FYI I may have encountered a bug with vCO in the process. The action executeRequestJsonText on server was version 0.0.2 and in your package is 0.1.0 yet vCO still thought the server version was newer. I had to force import everything and it worked.

Also my Flowgrab plugin search only brought back Master-22 and not Master-23, I sent a note off to the Flowgrab folks to see what's up there.

This is AWESOME, thank you so much for your rapid response on this!!! I'll start a new thread here if I run into anything else but so far so good.

Glad it works for you. I have just found out that in the process I broke findById when it has no URL (not your case). I need to fix this ASAP.

For the problem you mention it seems flowgrab is forking the elements using a different signature making it impossible to upgrade without overwriting. I have emailed their support about this tonight.

Regarding findById, I may be running into that issue now. I have defined a type that only uses findRelation (I'm using JSONSelect to get a child of a share, permissions, which is not directly accessible via the API) and seeing an exception thrown when I browse the tree. Error below. Is this the issue you are referring to? If not sorry.... Smiley Happy

2015-04-13 18:23:18.520-0400 [http-bio-0.0.0.0-8281-exec-12] WARN  {} [VcoServerFactoryClient] Action 'findById' in module 'com.vmware.coe.dynamicTypes.pluginGenerator' failed : TypeError: Cannot call method "get" of undefined (unnamed script#36)

ch.dunes.util.DunesServerException: Action 'findById' in module 'com.vmware.coe.dynamicTypes.pluginGenerator' failed : TypeError: Cannot call method "get" of undefined (unnamed script#36)

Yep this is the one. I have fixed this one and uploaded a new version yesterday

Is there a way to delete an object method?

Yes. Edit the configuration element and delete the attribute

Christophe, just wanted to say thank you. I'm running 0.24 and it's flying now, no issues so far. I appreciate all of your help, I learned a lot from your plugin generator. Great stuff!

It would be nice to be able to create a Host type using an existing REST host instead of having to create a new one. I have quite a few rest hosts that already exist with operations configured on them. Right now, the only way i can see to add my base type is to rebuild the REST host.

I had such workflow in V1 but I thought I was the only one using it so I did not create it in V2. It leverages existing hosts but not existing operations. If you are in a hurry you can look at how I just create a host and had a scriptable box to add a custom property to it to know it is attached to a given type. You can just create a workflow with a RESTHost as input and add the same scriptable task. I will add it in the next release but not sure ATM when this will be.

cmiller78, i didnt see a way to private message you. Do you have a working plugin for the isilon? I'm about to embark down the road of creating one. If you already have one would you be willing to share it?

It would be nice to be able to use variables in the url section of object methods. For instance, Im creating a dynamic type for Isilon.directory where to create a new directory or delete a directory the REST call is something like "PUT /namespace/ifs/<directory>" where directory is the full relative link to the directory. EX: PUT /namespace/ifs/dept1/folder1/folder2/folder3/newDirectory. I haven't found a way in you plugin to do this.

Whenever I try and add a child relationship (with findbyID or not) everything goes well when creating the type, the properties preview correctly, but the namespace does not display correctly after the type is created. Has anyone else seen this? Any ideas what might be happening?

To provide an update to my issue. Apparently "isFolder" is a predefined property. I had an isFolder property in the type attributes. By simply renaming it "folder" I now see a list of the subnets.

Hi,

I want to expose dynamic types objects in vRA as custom resources. However, when I provision them and look in the Items tab, they all come under the Dynamic Types section. Can this be renamed? Also, if I have more than one DT can I somehow separate the different DT object types and not have them all under the same section?

Thank you.

I'm having trouble with a package that I created with the plugin generator.  After importing and running the Gen-1 workflow I get the error:

Cannot convert ch.dunes.model.fileattachment.MimeAttachment@1debf1f3 to java.util.List (Workflow:Import Configuration From Package / Import Configuration (item3)#1)

Any ideas?

I'm upgrading from vRA/vRO 6.2 to vRA/vRO 7.0.1. I use custom actions to build my property sets. In 7.0.1 using the current plugin version when i select "Use action to convert JSON to properties" on the "Find Relation" page it updates the workflow pages but when i move to the "Properties selectors" page i don't see a field to select my action.

Has anyone encountered this and gotten around it?

Pretty simple workaround for this is to just remove the "Show parameter input" property from the presentation for the pages "Find Relation > Properties accessors > findByIdAction" and "Find By ID > Properties accessors > findByIdAction" (if you use the latter). For some reason the #findByIdUseAction value isn't registering "true" as it should. i'm not going to troubleshoot that issue but this at least gets me around it for now.

I've never been able to get the "Export plug-in configuration" workflow to work. When running v2.25 on my vRO 7.0.1 instances it makes it to the "Export namespace config" but fails with the error "No configuration available to export.". Anyone have any ideas to get this working? Or does anyone actively use this workflow successfully?

yeah . .same thoughts here as well , is it compatible with VRO 7.0

I'm not sure if it's my environment or what, but I'm unable to add this package to my vRO 6.0.4 environment.  I have the dynamic types plugin installed (build 3077946) and have been able to install other Dynamic Types plugins (NSX & vAPI).  For some reason I keep getting a NullPointerException when trying to add this package to my vRO server.

I have posted an updated version of the package which resolves the NullPointerException error I was receiving when importing the package in my vRO 6.0.4 environment.  It is available on Sample Exchange here.

For the first time in two years i ran into an issue with this plug-in where the URI i'm passing contains non ASCII characters. To remedy this i updated the com.vmware.coe.http-rest.executeRequest and com.vmware.coe.http-rest.executeRequestJSON  line:

var request = restHost.createRequest(method, url);

to

var request = restHost.createRequest(method, encodeURI(url));

This resolved the issue for me.

I have comes across the same thing but did encoded in a different place

request.url = encodeURI(request.url);

Version history
Revision #:
1 of 1
Last update:
‎04-16-2014 03:42 AM
Updated by: