CLOUDSTACK-5840: UI > Secondary Storages > remove "prepareObjectStoreMigration" action (since prepareSecondaryStorageForMigration API has been removed from server-side).
CLOUDSTACK-5840: UI > Snapshots > create volume from snapshot dialog > add zone dropdown if region-wide secondary storage exists.
CLOUDSTACK-5557: UI > Network > Guest Network > IP Address > fix a bug that SourceNAT IP, VPC tier IP wrongly showed Configuration tab(firewall/portforwarding/loadbalancing).

SourceNAT IP, VPC tier IP should not show Configuration tab(firewall/portforwarding/loadbalancing).
CLOUDSTACK-5656: UI > network > IP Address > configuration tab > Port Forwarding > add "State" column.
CLOUDSTACK-5853
Create two storage pools, one with storage tag X, one with storage tag Y.
Create a service offering with storage tag X.
Create a disk offering with storage tag Y.
Attempt to deploy a virtual machine with a datadisk, using given offerings, it fails.

Deployment planner keeps a global object 'avoid'. It loops through each volume to
be created, asking storage allocators for matching pools, passing this avoid object.

First disk matches a pool or pools, adds ALL other pools to avoid object, then
deployment planner attaches matching pools to a list for that disk.

Second disk matches a pool, adds all other pools to avoid object, then deployment
planner says "wait, matching pool is in avoid, can't use it". Oops. In fact, at this
point ALL pools are in avoid (unless there are other pools that have both tags).

Need to remove matching pool from the avoid set during each select phase.
CLOUDSTACK-5614: UI > Hosts > detailView > add new field "The Number of CPU Sockets".