cancel
Showing results for 
Search instead for 
Did you mean: 
cancel

UCSD Controlling the Nimble RESTful API with UCS Director Custom Workflow Tasks

3981
Views
0
Helpful
8
Comments

Important Note:

Minimum UCS Director version is 5.3.

Minimum Nimble array version is 2.3.

Introduction:

In order to address some of the limitations with the original Nimble plug-in for UCS Director ( Lack of rollback, no inventory, etc…), I have developed a library of workflows, workflow tasks and script modules that communicate directly with the new RESTful API available in Nimble software version 2.3 and beyond.

A brief description of the new functionality that I have provided, along with the structure of my work is detailed in the following text.  The workflows themselves are attached to this post for your availability.

Firstly, a demonstration of the workflow tasks in action.

Screen Shot 2015-08-04 at 18.00.32.png

Example catalogue items:

Screen Shot 2015-08-04 at 18.01.34.png

UCS Director service end user logs in and requests a new Nimble volume. Notice how the user can select from a dynamically created list of values for the performance policy:

Screen Shot 2015-08-04 at 18.02.21.png

For this example, the user chooses the ‘Exchange 2007 data store’ performance policy and decides that the volume should be encrypted and pinned in the cache:

Screen Shot 2015-08-04 at 18.03.15.png

The volume gets successfully created:

Screen Shot 2015-08-04 at 18.04.07.png

and the service request log (As viewed by an admin) confirms this:

[INFORMATIONAL] MAIN(): Successfully created volume myExchangeVolume001.

If checked via the Nimble native GUI, it can be seen that the volume has been created, that it employs the appropriate performance policy and is both encrypted and pinned:

Screen Shot 2015-08-04 at 18.05.04.png

As soon as the volume has been created, the list of values (LOVs) for the volumes inventory is immediately updated in order to allow further operations to be processed against it. For example, let’s take the newly created volume and associates it with a volume collection. Notice in this next workflow, how both the volume and volume collection information is supplied dynamically and that no manual typing is required.

Screen Shot 2015-08-04 at 18.05.55.png

Once again, this completes successfully.

Screen Shot 2015-08-04 at 18.06.43.png

The Nimble native GUI reflects this change in the volume information.

Screen Shot 2015-08-04 at 18.07.48.png

Now, let’s add a few snapshots to the newly created volume. To make things interesting, we’ll add a mixture of snapshots that are online, offline and writable. This will show the intelligence of the ‘Delete Volume’ task that will be shown later.

Screen Shot 2015-08-04 at 18.19.28.png

Screen Shot 2015-08-04 at 18.20.00.png

Screen Shot 2015-08-04 at 18.20.07.png

As before, these changes are all reflected correctly within the native Nimble GUI:

Screen Shot 2015-08-04 at 18.21.45.png

At this point, we can show the power of UCS Director. Next, I am going to roll back the original ‘Create Volume’ workflow task. Were you to remove this manually via the Nimble GUI, then the online snapshots would all need to be taken offline, the volume would need to be disassociated from its volume collection and the volume itself would also need to be taken offline before being deleted. UCS Director can manage this in a smooth single step. Like so:

The service end user selects the ‘Create Volume’ service request and chooses for it to be rolled back.

Screen Shot 2015-08-04 at 18.22.25.png

What appears to be a simple ‘Delete Volume’ operation actually takes quite a lot into account:

Screen Shot 2015-08-04 at 18.23.29.png

An examination of the service request log (As admin) shows exactly what is going on:

[INFORMATIONAL] MAIN(): Found volume myExchangeVolume001

[INFORMATIONAL] MAIN(): Volume myExchangeVolume001 has 2 online snapshots.

[INFORMATIONAL] MAIN(): Taking snapshot mySnap1 offline.

[INFORMATIONAL] MAIN(): Snapshot mySnap1 taken offline successfully.

[INFORMATIONAL] MAIN(): Taking snapshot mySnap3 offline.

[INFORMATIONAL] MAIN(): Snapshot mySnap3 taken offline successfully.

[INFORMATIONAL] MAIN(): Volume myExchangeVolume001 is online. Taking offline.

[INFORMATIONAL] MAIN(): Volume myExchangeVolume001 successfully taken offline.

[INFORMATIONAL] MAIN(): Volume myExchangeVolume001 is protected. Disassociating...

[INFORMATIONAL] MAIN(): Successfully unassociated volume myExchangeVolume001 from volume collection.

[INFORMATIONAL] MAIN(): Successfully deleted volume myExchangeVolume001.

Other tasks are included in the attached library to enable operations such as adding volumes to volume collections, adding initiator groups, adding initiators to initiator groups as well as mapping volumes to initiator groups.

Should you be interested in understanding how this functionality is implemented, please import the attached workflow file and examine the following locations:

Workflows:

Screen Shot 2015-08-04 at 18.24.25.png

With regards to the ‘NimbleREST_Nimble_Inventory_Service’ custom workflow task above, I have it configured as a scheduled task that runs every 5 minutes. This ensures that the LOVs are kept up to date in the event of infrastructure being configured outside of UCS Director (Via the Nimble GUI for example).

Custom Workflow Tasks:

Screen Shot 2015-08-04 at 18.25.25.png

Script Modules:

Screen Shot 2015-08-04 at 18.26.14.png

For any questions regarding the above, please email rwhitear@cisco.com.

Comments
Beginner

Hi Russ,

great article

we have recently deployed ucsd and very interested to get the automation for our large Nimble environment.

everything has been imported and i can browse the arrays via ucsd but when i come to run workflows, lets say create snapshot' it doesnt prompt for the volume or array?

i wondered if you could shed any light pls.

thanks

Mark

Cisco Employee

Hi Mark,

I've just taken a quick look through the workflows that you mention above and it looks like they were written for UCS Director versions prior to 5.4. I'm assuming that your UCSD version is later than this? If so, I'd delete those from your system and would advise taking a look here:

UCSD - Cisco (Russ) Nimble Integration (UCSD 5.3.2 & 5.4.0.0)(Tasks include rollback!)

Be sure to download the 5.4.0.0 version, which should work on current releases.

If you want volumes, iGroups etc. to show up in the LOV dropdowns, then you need to run the Inventory workflow task (Best idea would be to create a workflow with this single task and tick the checkbox to run every time at system initialisation) which will initialise the dynamic List of Values (LOVs). You can then create workflows with input types of these LOVs and they should show up as dropdowns in your GUI.

HTH

Russ.

Beginner

Hi Russ

Hope your well.

I never got this to work - would i need to raise a support ticket to get this working?

thanks

mark

Cisco Employee

Did you take a look at #300 and #322 here

https://communities.cisco.com/docs/DOC-56419

What Is not working?

Beginner

Hi

I tried installing the newer versions but it does not give me anything when I run an inventory scan etc.

No options to do anything.

For #322 I already use smartstack pods

Thanks

Mark

Mark Shannon

Senior Infrastructure Engineer

<https://twitter.com/WeAreGamma>

<https://plus.google.com/+GammaCoUkWeAreGamma/about>

<http://www.linkedin.com/company/gamma>

<http://www.youtube.com/user/wearegamma>

Cisco Employee

Does a tail –f /opt/infra/inframgr/logfile.txt tell you anything (ssh session as root)?

Connection errors?

Cisco Employee

Orf, Russ,

I will work with Mark here via SR. But just to check, Nimble was never supported "out-of-box", i do not see any built-in workflows or tasks to manage nimble (or RestAPI).

I will check workflow later and further with Mark (logs and debugs - can we at all open connection towards Nimble)

Cisco Employee

No nothing out of the box. Only what Russ wrote. But I remember it is very much dependent on the Nimble version.

Content for Community-Ad
This widget could not be displayed.