Create a plug-in for a REST based web service in minutes - Part 4

In part 1 and part 2 we created the inventory objects, in part 3 we created methods for this objects and ran a generic workflow to run these methods.
In this article we will create workflows for calling these methods, include them in a package with all the plug-in configuration to ship it to our end users.

Creating the workflows


The invoke workflows in the plug-in facilitate running REST operations. End users and or external system will expect simpler workflows. For this you can wrap the invoke workflows with your own set of dedicated CRUD workflows

Inside the workflow folder you created in the previous article create the workflows:
•    Create a security tag
•    Delete a security tag
•    Apply a security tag to a VM

Edit  the “Create a security tag” workflow


Drag and drop the Invoke a create object method on the schema.

Click on the setup

DTG-051.png


Inputs :
•    param_0 to 8: Skip
•    content: Skip(this will be loaded by default)
•    objectType : Value - securityTag
•    contentParam_0 : rename as securityTagName input
•    contentParam_1 : rename as securityTagDescription input
•    contentParam_2 to 8: Skip
•    url: Skip (this will be loaded by default)
•    parentObject: Input

Outputs :
•    objectOut : Skip

Then complete the following operations:
•    Change the parentObject input type to DynamicTypes:NSX.NSXHost
•    Add a securityTag output of type DynamicTypes:NSX.securityTag to the workflow
•    Bind the object out output to the securityTag
•    Validate the workflow . Reset the binding type.
•    Run the workflow. Note that the securityTag variable will show empty but it is not. If you use “Create a security tag” workflow within another workflow you will be able to get to the properties of the securityTag object.

Edit  the “Apply a security tag to a VM” workflow

Drag and drop the “Invoke an object method” on the schema.

Click on the setup:

DTG-052.png


Inputs:
•    param_0 : rename to “objectId” Value
•    param_1: rename to vmMoid Value
•    param_2 to 8 : Skip
•    content: Skip (this will be loaded by default)
•    contentParam_0 to 8: Skip
•    url: Skip (this will be loaded by default)
•    method: Value - applyToVM
•    object: Value
 
Outputs :
•    output : Output

Then complete the following operations:
•    Rename the object input "securityTag" with a DynamicTypes:NSX.securityTag type
•    Rename the object output "securityTagOut" with a DynamicTypes:NSX.securityTag type
•    Add a vm VC:VirtualMachine input to the workflow
•    Add a Scriptable task “Set inputs” before the invoke workflow to set objectId, vmMoid

objectId = securityTag.objectId;
vmMoid = vm.id;

•    Make sure you have all required inputs / outputs
•    Add a securityTagOut output to the workflow
•    Add a Scriptable task “Set output” and script to set the securityTag output with the objectOut variable
•    Run the workflow
 

Edit the “Delete a security tag” workflow

Drag and drop the “Invoke a delete object method simple" on the schema.
 
Click on the setup.
Inputs:
•    object: Input
•    params: Skip
•    customHeader : Skip (A custom header can be used when required)

Then complete the following operations:
•    Rename the object input "securityTag" with a DynamicTypes:NSX.securityTag type
•    Run the workflow. Check the inventory.

Run the workflow. Check the inventory.

Deliver the plug-in to end users


Building a plug-in on your server in minutes to hours is a great thing, making it available to others is even better !
Follow this process:
•    Run “Export plug-in configuration”. Select your namespace.
•    You should see a dynamictypes-config-[date] package. Edit it.
•    Rename it to something more appropriate (i.e com.vmware.plugin.dynamictypes.nsx)
•    The plug-in already has all the necessary elements built in except for the workflows you created. Add these to the package and save.
•    Export the package (without configuration element settings and global tags)


Importing and installing the plug-in as an End user

Import the NSX package you exported previously
Check the workflows available in the Dynamic Type Plug-in Generator v2 folder. The workflows in the Developer folder are the one used by your workflows. The workflows in End User are the workflows necessary to Install the plug-in and add a host.
Run Plug-in Gen -1- Install a plug-in. Select the package you exported
In the inventory, select the newly created NSX2 namespace / Right click / “Plugin gen -2- Add a new host”

•    Name : NSX
•    URL : https://YourNSXHost
•    Host authentication type: Basic / enter credentials

Check the inventory:
•    Test the workflows:
•    Create a security tag,
•    Apply a security tag to a VM.
•    Delete a security tag


Conclusion

The plug-in generator allows you to implement in minutes to hours a plug-in inventory objects and their methods and a way to deliver it when this takes hours to days (or even weeks or months) without it and a lot more knowledge.

Comments  

0 # Justin Turver 2015-03-21 06:15
This is awesome stuff. It adds such value to vCO/vRO for any REST-capable services, that I will start to earnestly hope that the workflows you provide for managing Dynamic Types become a core part of the default vCO/vRA appliance build!! Please keep up the good work.

NUC Lab Kit

Below are my thoughts for a vSAN nuc lab. Since I already have cables, not including them here. I ordered (and received by Nov 30, 2016)
3 x nuc, 3 x 32GB Crucial mem, 3 x Toshiba NVMe drive, 3 x Startech USB to GB NIC, and 3 x Crucial 1TB SSD. I've also been very happy with my Cisco SG300-10 so I bought one more since my existing one only has one port available. Each of the items listed here are linked below - all were purchased using the provided links below.
single NIC (See this post for details on using the USB -> GB NIC item listed below

I stayed with the i5 for the power consumption and form factor vs. the i7 Skull Canyon ;)

 

Search

Experts Exchange