Community

Subscribe
Highlighted

Is WFA truly open source ?

Hi,

Agreed it is a framework that can connect to any type of API.

But is it truly an open-source framework ?

I say : not when it comes to  reservations. 

I've been working practically non-stop with WFA and I've had a lot of challenges with the "cached datasource"-model. 

Since you're always looking at cached information, the whole OCUM-resynch cycle can be a pain in the ass.

Just think about provisioning :

  • Workflow 1 : create a VSM
  • Workflow 2 : create a volume on that VSM
  • Workflow 3 : create a snapmirror on the volume

Each object that is created has be available in the datasource for the next workflow, or it will fail.

Reservations can overcome a lot of those issues. 

When you create a volume with the certified WFA command, that volume will appear the get-volume-finders.

And that's because the certified commands can add reservations.

But it's not always possible to use the certified commands. 

Sometimes I want to create my own create-rename-delete commands.

So this a warm request to allow us to add/remove our own reservations.

How hard can it be to open the reservation through an API ?

Only then will WFA be truly "open source".

Mirko

Re: Is WFA truly open source ?

Hi Mirko:

First of all thanks for using wfa. Thanks for your feedback also.

We understand your painpoints.  Your feedback is taken and

will be discussed with product management.

Regards

Abhi

Re: Is WFA truly open source ?

I think that this is a great discussion point, Mirko.  It is definitely something that I have had challenges with.  I too have been working with WFA forever (in fact since the Alpha days of 0.6 [wow it has been forever]).  Honestly, the introduction of reservations in 1.1.1 was huge.  The limitation on the existing commands has made working with reservations very difficult.  I have two major issues with lack of reservation support.

  1. Writing new commands to fill in the gaps:  This has become much easier as new releases of WFA contain more certified commands but I still have to write my own in other areas.  In 2.1, we have many of the basic building block elements as certified commands.  This makes development easier but what happens when I edit the command?  As you pointed out, if I edit the command and save a copy then it loses its certification.  The loss of certification means that I can't leverage reservations. I also agree completely that waiting for UM to refresh (UM6.0 doesn't even have a way to force a refresh [not as far as I have found] so this means a hard set 15min) does not work. 
  2. Custom content for non-storage components: Here is another area where we are lacking support.  I do a lot of work outside of storage.  I would say that at least 50% of the workflows that I create are tied to external datasources.  Most of the time, I have to create my own custom datasources on top of that.  This means that none of this content can laid in the reservations pool. As the product continues to develop, we are moving out of just creating basic storage building blocks and further into developing full service catalogs.  The only way 'around' this limitation is to force a refresh of the entire datasource after every workflow execution.  This is sub-optimal because of the time that it 'could' take to retrieve the data.

Mirko, thank you for starting this conversation.  I agree that this is something that we should discuss and bring up with the WFA team. 

Jeremy Goodrum, NetApp

The Pirate

Twitter: @virtpirate

Blog: www.virtpirate.com

Re: Is WFA truly open source ?

I agree with everything that has been said so far. I'd love to have a way for adding reservations in custom commands and had a few situations in the past were this caused issues.

Not sure if "open source" is the correct term for this discussion as WFA itself is not an open-source product (and not intended to be) though it is very open. But everything that is used by certified content should be available to custom building blocks as well and reservations is the one big exeception we currently have.

Regarding "How hard can it be" - I'm sure there was a good reason to not open up this mechanism so there is likely some technical challenge to this. It should still be possible to do but there wasn't any non-open-source motivation included in the initial decision.

..- Hendrik

Re: Is WFA truly open source ?

@ I also agree completely that waiting for UM to refresh (UM6.0 doesn't even have a way to force a refresh [not as far as I have found] so this means a hard set 15min) does not work.

====

Attaching commands that can be of some help here.

The 2 commands :

(1) Refresh Monitoring on OCUM6.0 for a given cluster

(2) Run the DataSource acquisition for a given scheme.

These 2 commands can be used as  the end commands in a workflow and work quite good. It solves the need for command reservation to some extent.

Requirements:


1. OCUM6.0

2. WFA2.1

3. Powershell 3.0 ( needed by the "Run the DataSource acquisition" command )

warm regards,

Abhishek



Re: Is WFA truly open source ?

Thank you for sharing this Abhishek.  I think that this will come in handy for some situations.

Jeremy Goodrum, NetApp

The Pirate

Twitter: @virtpirate

Blog: www.virtpirate.com

Re: Is WFA truly open source ?

IIRC, there is an API in UM 6.x to refresh samples on demand instead of waiting for 15mins.

But this refresh is not as granular as it was in 7Mode. Instead in cDot the granularity is at a cluster.

Inst that available as a cmd in WFA ?

Regards

adai

Re: Is WFA truly open source ?

Hi Sinha,

         I used the acquire_wfa_cache command and tried it in our workflow it always failed with the following error

 

The remote server returned an error: (401) Unauthorized.

 

Then later changed the rest uri to use the server name instead of localhost the error went away. 

Here is my changed code.

 

param (
[parameter(Mandatory=$true, HelpMessage="Data Source Name")]
[string]$DSName,

[parameter(Mandatory=$true, HelpMessage="Schema")]
[string]$Schema,

[parameter(Mandatory=$true, HelpMessage="WFA server hostname")]
[string]$Wfahostname,

[parameter(Mandatory=$false, HelpMessage="TCP Port")]
[int]$TCPPort,

[parameter(Mandatory=$false, HelpMessage="Use Secure")]
[boolean]$UseSSL=$false

)

$path = "C:\passwd"
$password = Get-Content $path | ConvertTo-SecureString -key (1..16)
$username = "wfauser"
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password

 

if ( $TCPPort )
{

if (!$UseSSL)
{
$add = "http://{$Wfahostname}:$TCPPort/rest/data_sources/$DSName/$Schema/jobs"
}
else
{
$add = "https://{$Wfahostname}:$TCPPort/rest/data_sources/$DSName/$Schema/jobs"
}
}
else
{
if (!$UseSSL)
{
$add = "http://$Wfahostname/rest/data_sources/$DSName/$Schema/jobs"
}
else
{
$add = "https://$Wfahostname/rest/data_sources/$DSName/$Schema/jobs"
}

}

Get-WFALogger -Info -message $("Calling REST with uri: "+ $add)
$dsResult = Invoke-RestMethod -Uri $add -Method Post -Credential $cred -ContentType "application/xml"

$jobId = $dsResult.acquisitionJob.jobId
Get-WFALogger -Info -message $("Job ID: "+ $jobId)

$add = $add + "/$jobId"

$jobStatus = ''

while ( $jobStatus -ne 'COMPLETED' )
{

$status = Invoke-RestMethod -Uri $add -Method Get -Credential $cred -ContentType "application/xml"
$jobStatus = $status.acquisitionJob.jobStatus.status

if($jobStatus -eq "FAILED")
{
throw ("Failed to acquire Datasource : " + $status.acquisitionJob.jobStatus.errorMessage)
}
else
{
Get-WFALogger -Info -message $("Acquisition Job Status: "+ $jobStatus)
Start-Sleep -Seconds 2

}

}

 

Any reason why local host would fail ? 

 

Regards

Adai