advsvcvm/device_driver: base class and noop driver

Change-Id: Iac780f34ac9add522763c1eb8123dfe089ac8940
advsvcvm/mgmt_driver: base class and noop driver

Change-Id: If43c9194c4a49484549da8f15f1fc968d71bb0fa
Implement service vm framework: REST API and DB model part

This patch implements of REST API/DB model part of service vm framework
as 1st phase.
Actual driver for lbaas, device driver, mgmt driver will follow as
separated patch.

A framework for for creating, managing and deploying Neutron advanced
services implemented as virtual machines.
The goal is to enable advanced network services (e.g. Load
Balancing, Security, Monitoring) that may be supplied by third party
vendors, are deployed as virtual machines, and are launched and
inserted into the tenant network on demand.

partially Implement: blueprint adv-services-in-vms
Change-Id: I9124005608be62d225fb91774e8be3c527a48886
advsvcvm/driver/nova: device driver for nova

Change-Id: I63855e4be14b61ee7f3ab54f7345089eb81eab59
advsvcvm/mgmt_driver/rpc: mgmt driver for openstack rpc/rpc-proxy

Change-Id: I947f6af43becf8e4a891e638096431bb2242a401
oslo_service.py: service with oslo.messaging

Change-Id: I914209dbec06544bc0d7bcfe31fab65b22d27744
advsvcvm/agent: implement servicevm agent

Change-Id: Ifce527fb8eccd994f95309a969d588a276e8df68
Implement service vm framework: drivers for load balander (WIP)

This is work-in-progress yet. Only for early review/discussion.
This is just for showing its progress as early as possible and triggering
discussion based on the concrete code base.

A framework for for creating, managing and deploying Neutron advanced
services implemented as virtual machines.
The goal is to enable advanced network services (e.g. Load
Balancing, Security, Monitoring) that may be supplied by third party
vendors, are deployed as virtual machines, and are launched and
inserted into the tenant network on demand.

This is 1st phase:
two-leg VM for LBaaS service. VM effectively does nothing. Concept proofing.
As agreed at the design summit.

TODO:
done:- determine db model
done:- implement rest API
done:- python-neutron client
       https://github.com/yamahata/python-neutronclient.git adv-svc-vm
done:- talking nova with python-novaclient to spin up/down VM
done:- simple LBaaS driver (or apply this framework to existing LBaaS
  driver)
  done:- lbaas nova driver which requires trivial scheduler
done:- split patch into API/data model and lbaas part
done:- unit test for API/data model
done:- settle down management/data network/interface
WIP:- mgmt driver to communicate with hosting device and logical service
      instance
WIP:- mgmt driver for notifier api
WIP:- agent with notifier api
WIP:- unit test for simple lbaas driver
WIP:- devstack
  https://github.com/yamahata/devstack.git adv-svc-vm
- test
  - tempest?

- option: reference implementation of MGMT driver. SSH?
- option: use HEAT for spining up/down VM
- option: utlize l3-agent consolidation framework
- option: horizon GUI

etherpad
https://etherpad.openstack.org/p/NeutronServiceVM

current status
https://docs.google.com/document/d/1ZWDDTjwhIUedyipkDztM0_nBYgfCEP9Q77hhn1ZduCA/edit#heading=h.tajialn1fpoe

design overview
https://docs.google.com/presentation/d/1Ir8MZC7fJb8SOhiZOEQovP_EvdFz_cF_-GEWsidAu7k/edit?usp=sharing

Implement: blueprint adv-services-in-vms
---
Changes v13 -> v14:
- more implementation

Changes v12 -> 13:
- finished rest API/db model with unit test and split it out.

Change v11 -> v12:
- use six
- unit tests

Change v10 -> v11:
- simple driver for lbaas worked

Changes v9 -> v10:
- started mgmt driver
- started unit tests

Changes v8 -> v9:
- introduced driver for lbaas and simple scheduler (mostly done)
- started mgmt-if and networks.
  WIP. needs to be finished.

Changes v7 -> v8:
- use python-novaclient
- started lbaas driver

Changes v6 -> v7:
- nova driver tested
- reflected review(not all)

Changes v5 -> v6:
- added nova driver (not tested yet)
- use stevedore

Changes v4 -> v5:
- Rest API prototype
- python-neutron client

Changes v3 -> v4:
- fixed db table
- implemented basic db operations
- started REST API

Changes v2.1 -> v3
- more update on db tables.
- introduce vm/drivers dir

Changes v2 -> v2.1
- pep8
Changes v1 -> v2:
- reflected Bob's comment

Change-Id: Iede23f4199b4e027c7b28d7519fcccd69c37237d