Add public network support when launching an instance.

Fixes bug 1039419.

A concept of public network has been implemented in Quantum.
To launch an instance connected to public network, we need to check public
network (whose 'shared' attribute is True) in addition to network owned by
the current tenant.

Change-Id: I128e68a8b9404056f74153bf8f576cfa8b438e19
Add version 2.0 of compute RPC API

RPC API versioning is helpful because (a) it gives useful error messages
if there is a version mismatch and (b) it allows you to update to a new
version of the API on the server side before updating the client side.

However, we still regularly encounter DB changes which force the client
and server side to be updated together. This will not be resolved until
no-db-compute is fully implemented.

It's safe to say that RPC API clients using version 1.0 will not work
with a version 1.44 compute manager (because of DB schema changes). The
issue, then, is that continuing to support 1.0 clients in the Folsom
release seems pointless and the alternative of removing legacy RPC API
support would mean a lot less cruft code in the release.

Before removing version 1.x of the compute RPC API, we add version 2.0
while still retaining 1.x support. This gives users the option of
upgrading all compute RPC API users to use version 2.0 before version
1.x support is removed from compute nodes.

Change-Id: I1c74b36a84d770b0af5ca33062e069a545537ee2
Remove compute RPC API version 1.x

Now that we have RPC API versions 1.x and 2.0, we could choose to
continue to support version 1.x in Folsom and only remove it in
Grizzly.

This, in theory, would allow smoother upgrades of older Folsom
versions to the final Folsom version. However, in reality, we
most likely made DB schema changes which affect the compute service
and would prevent such a smooth upgrade anyway.

Removing 1.x support now removes a lot of potentially buggy backwards
compat code from the release and will also make backporting fixes from
Grizzly to Folsom easier.

Change-Id: Ic18017a16c5bffee85a43db65ff17283599a27ba
Adds api sample testing for versions

This patch tests api samples for the versions resource in json and
xml. It makes a small modification to the integrated api client to
support making requests above /v2/tenant_id.

This also fixes an uncovered bug in the link handling in the versions
resource.

Fixes bug 1041426

Change-Id: Ie898ef3822fa250def2e0fa407a0968275262260
Stop using scheduler RPC API magic

If a scheduler RPC message isn't handled directly by a SchedulerManager
method, the __getattr__() fallback passes the message to a driver
method in the form of schedule_${method}() and, if that doesn't exist,
instead calls the schedule() method supplying the topic and method
args.

This is pretty bizarre stuff and we appear to only use it in two cases:

  1) live_migration - this is how the schedule_live_migration()
     method in the driver gets called, but the side-effect is that
     we require the client to pass a topic argument which is never
     used. This would be much more sanely handled with an explicit
     SchedulerManager.live_migration() method.

  2) create_volume - the volume API asks the scheduler to pick a
     target host for create_volume() using this method. This would
     be easily handled with an SchedulerManager.create_volume()
     method.

Change-Id: I1047489d85ac51d8d36fea1c4eb858df638ce349
Remove some remnants of VSA support

The VSA code removed by commit a3bab242 was the only user and
implementor of the 'create_volumes' RPC method.

Change-Id: Ic718d54d938059b034b78bc287668b0b9fa27f94
Add version 2.0 of the scheduler RPC API

Like we did for the compute RPC API, add version 2.0 of the scheduler
API while still retaining 1.x support. This allows all services to
be updated with 2.0 support before 1.x support is removed.

Change-Id: If438d5b6f521ea4c487d1490d4b8cf6547ba5c72
Remove scheduler RPC API version 1.x

Like with the compute RPC API, we're unlikely to still work well with
RPC client using older 1.x version because of DB schema changes.

In that case, we may as well remove 1.x support in Folsom and rip out
the potentially buggy backwards compat code. This should also make
backporting fixes from Grizzly easier.

Deployers following trunk can upgrade all their nodes to use the version
2.0 API before deploying this commit.

Change-Id: Iee099751bda9637da5e134357d28e89d5fba9895
Fixes spawn method signature for PowerVM driver.

ComputeDriver has now 2 new required arguments which are:
injected_files and admin_password. This patch adds the
arguments in the PowerVMDriver spawn signature.

Fixes bug 1040770

Change-Id: I0a45fa45c942f2d0381c5a7310d386ae655073fe
FLAG rename: bandwith_poll_*=>bandwidth_poll_*

Fix bug 1036407

bandwith_poll_interval is deprecated in Folsom and will be removed in
Grizzly

Change-Id: I32cbdffce21a0024bd0303d46d7b7632db6ec8cb
Update nova-rpc-zmq-receiver to load nova.conf.

Updates the bin/nova-rpc-zmq-receiver so that it makes use of FLAGS,
calls parse_args, and loads the nova.conf config file like all
other nova- binaries.

Fixes LP Bug #1044153

Change-Id: I904e5d2ae491cd805be78038493d437dd1f7f3cc
Clear up the .gitignore file

1.Remove duplicate items
2.Sort to alphabetical order
3.Remove "*.sw[po]" instead "*.swp" and "*.swo" for pass
bundling test.

Fixes: bug #1039898
Change-Id: Id8e03ecce6d2ab6d823a992a3a225b5ceb44aa80
fix issues with Nova security groups and Quantum

bug #1039400

- make quantumv2/api.py fetch actual DHCP server address, which
is needed by firewall layer (otherwise, the gateway IP is
incorrectly used and all DHCP traffic is dropped).
- add missing call from quantumv2/api.py to the security
groups API when a VM is allocated/deallocated.

- Add a vif-driver that is a hybrid of the existing Open vswitch +
linux bridge drivers, which allows OVS quantum plugins to
be compatible with iptables based filtering, in particular, nova
security groups.

- Also clean-up some docstrings in virt/libvirt/vif.py

Change-Id: I7cf5cf09583202a12785b616d18db3ee4bbffee0
Merge "Makes api extension names consistent"
Fix deallocate_fixed_ip invocation

Fixes bug 1043905.

The host parameter was not passed to deallocate_fixed_ip method, so that
the deallocation tried to do a remote call to another host, which timed
out, thus instance termination failed.

Change-Id: I18d6de31d15767a45f389ae14769985c3951d560
Update zmq context cleanup to use term.

Updates the RPC cleanup function for the zmq RPC driver
to use Context.term() instead of Context.destroy().

This allows the Nova code to work with older versions (pre 2.1.10)
of pyzmq. The Context term() function seems to do the job just as
well as destroy() (and is also thread safe) so lets just use it instead.

Fixes LP Bug #1044004.

Change-Id: I07a200d4b216c0c1e155b57588295b35a237576c
Fixed boot from snapshot failure.

Passed the snapshot_id to cinder client from create API. Previously it was
failing since snapshot was being passed instead of snapshot_id.

Fixes LP: #1029211

Change-Id: I4aa1aca9067b2a282b9b46d909ef8342bf933a46
Merge "FLAG rename: bandwith_poll_*=>bandwidth_poll_*"
Save the original base image ref for snapshots.

Save the base image ref in instance system metadata for tracking
purposes.

(This is modified code originally from Rick Harris.)

Change-Id: I574c597c7ff2e55675ebdaa7b3213b53e61a94b7
Merge "Add version 2.0 of compute RPC API"