Add support to launch different instances on heterogenous architectures

Registered by Kost

Modify nova to support launching instances on heterogenous architectures (i.e. x86_64, i386, gpu, sgi, tilepro).

1) Add architecture type in the Services and Instances table in models.py.
2) Specify the compute node's architecture as a flag and set for each compute node in the service table.
3) Upon creating an instance in compute/api.py:
      a. extract the architecture from the image.
      b. verify the image's architecture and the INTSTANCE_TYPE match.
      c. set the instance's architecture in the Instance table.
      d. send architecture to the scheduler.
4) Create a new scheduler to find all available hosts for that specific architecture. Select one of those hosts to instantiate the instance.

The backend (hypervisor level for each architecture) support will be a separate blueprint.

Blueprint information

Status:
Complete
Approver:
Vish Ishaya
Priority:
Low
Drafter:
None
Direction:
Approved
Assignee:
USC-ISI
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Jinwoo "Joseph" Suh

Sprints

Whiteboard

I would love to see this stuff get merged into nova proper. Any plans for this? --Vish

USC/ISI is still planning on getting this merged up. -- Lorin

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.