Add more unit tests for ThreadGroupManager

this patch adds unit tests for the rest of ThreadGroupManager methods.
Related-Bug: #1288627
Change-Id: I38a0864c649d1693ef4fb5b49d5aeb37632263ca
Refactor CLB to work with groups

The Rackspace CLB resource couldn't be used with resource groups
because nodes were individual IPs or references. This change
allows a node to have a list of ips for a given port, status,
etc so that references to resource groups can easily be added
to Rackspace CLB instances. Ref-based nodes were removed as they
aren't used.

Change-Id: Ia26a012758fb1cd0470c1c0edc27e61e77bd8f0a
Get rid of global variable in JSON->YAML conversion

The best way to deal with the lack of proper closures in Python 2 (Python
3 has the nonlocal keyword to handle this) is to wrap the object in a list
and manipulate the first list element instead. In this case, though, even
that is not necessary.

Change-Id: Iac6d95a66b1bfc6fd409851bf6c918629a98335f
Add documentation to the firewall properties

miss documentation for the firewall properties,add it.

ref:
  http://docs.openstack.org/api/openstack-network/2.0/content/fwaas_ext_ops_firewall.html

Change-Id: I7bca7d29b05133d11ed53dede0caa561e792fa09
Fix user provider template registration

Trying to use an external template as a resource fails in obscure path
in the environment because TemplateResourceInfo value is not required.
Enforcing a value (with the template path) fixes the issue.

Change-Id: Ib92bc0827e9a94a3735493eb47cd227449552990
Closes-Bug: #1288541
Don't re-bind parameters during stack update

While we're in the process of updating a stack, we set the stack's parameters
to the new, updated values. However, we don't want to change existing
resources' idea of their own values until we have explicitly done an update of
them to bring them into line with the new template/parameters. So when parsing
a template snippet, store the parameters object to which it will refer.
References will resolve to the new parameters only when the template has been
re-resolved.

Closes-bug: #1291411

Change-Id: Iebbb518c5d15cfba858db001648f3412a7d8b1c0
Implement an identifier stack_path()

This returns stack_name/stack_id, which is the form that needs to be
used with heatclient to avoid doing an extra stack lookup API call.

See the next change in this series to see this in use.

Change-Id: I41dcb732d36d702b7583b5e877fd074f86445a03
Related-Bug: #1291097
Provide the necessary inputs to enable HEAT_SIGNAL

To allow signalling via a native heatclient call using stack domain credentials
the following inputs are needed:
- the user ID, required to successfully auth with stack domain users, since it avoids
the need to have knowledge of the domain ID.
- the V3 endpoint as the auth_url, since it is domain aware
- a stack ID which consists of stack_name/stack_id, to avoid the need for an extra
  stack identifier lookup

Closes-Bug: #1291097
Change-Id: I677d1afb9bc40f84d9a71f376869946022a6635f
Merge "Get rid of global variable in JSON->YAML conversion"
Merge "Fix user provider template registration"
Merge "Implement an identifier stack_path()"
Merge "Provide the necessary inputs to enable HEAT_SIGNAL"
Merge "Add documentation to the firewall properties"
Merge "Add more unit tests for ThreadGroupManager"
Merge "Don't re-bind parameters during stack update"
Merge "Refactor CLB to work with groups"