Hi Rado,
Here are some thoughts on these two topics.
=======
1 - Tables options in WFA - Two ideas here, the first is quick-and-dirty, the second is the better, more extensible, option. You basically want it to be table driven.
----------
Option-1A - Make an MVEL table and use the MVEL function getValueFrom2DByRowKey() - An MVEL 2-dimensional table is really just an MVEL string that can be manipulated and search with the 'getValue*' group of built-in MVEL functions. Use the Setup -> Constants tab to create a constant and have it's value be the string which is formatted as the MVEL DataCenter table, say:
Name: DC_SERVERS
Description: Table of DataCenters: DataCenter ~ DNSserver ~ SMTPserver ~ SNMPserver
Value: 'NY~10.10.10.1~10.10.10.2~10.10.10.3,LA~10.10.20.1~10.10.20.2~10.10.20.3'
Tilda separates each row/column, comma separates rows. Quotas around the whole thing. So that gives you a table of DCs with 3 server IP address for each. Then access with:
getValueFrom2DByRowKey(DC_SERVERS,'NY',2) - to get DNS
getValueFrom2DByRowKey(DC_SERVERS,'NY',3) - to get SMTP
getValueFrom2DByRowKey(DC_SERVERS,'NY',4) - to get SNMP
To make this easier to deal with I'd create other contants, for example:
Name: DC_SELECTED
Description: User Input variable that will be defined as enum list of sites
Value: $dcSelect (in user inputs this would be you enum list with, say, NY,LA)
Name: COMPUTED_DNS_SERVER
Description: The DNS Server for this data center
Value: getValueFrom2DByRowKey(DC_SERVERS,DC_SELECTED,2)
... etc for SMTP, SNMP
Then at other points in your workflow you can simply reference the COMPUTED_DNS_SERVER constant to specify the DNS server for this data center .. and same for SMTP, SNMP and other items. Then someday hen new data centers added you must tweak User Inputs and Constants tabs ... for each workflow ... so option B, a WFA cache table, is the better option ,,,
----------
Option-1B - create a WFA Cache table using: schema, dictionary and data source
No real need to use the playground db for this. The playground db is really reserved for cases where you need to be able to write to tables. You're requirement just needs to have a workflow read from a table at run-time. Your data source could pull from a spreasheet (csv, excel, etc) or maybe a table in another another SQL DB ... which could be within the playground but not strictly required in your case. Here is a write-up ( http://bit.ly/1CTFdPF ) on a clean and simple method to read from a standard Excel spreadsheet. Since normal WFA user/pswd access to playground gives you R/W to it, you could also just use a SQL-tool to manually populate a playground.dc_servers tables ... but it has been noted that that playground is less secure.
Oh, and queries/filter ... yes, you'll have to create a filter or two that
========
2 - Determining destination volume - The 7-Mode storage.vsm table should address the issue? You have to write SQL filter to use it to select/find the destination(s) but it's do'able. You could also drop down into a customer WFA command tha resizes both src and dst and using powershell cmdlets to get to the dst.