Bug 1041219 - [RFE][nova]: Allow tenants to create a virtual cluster that contains multiple instances
Summary: [RFE][nova]: Allow tenants to create a virtual cluster that contains multiple...
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: RFEs
Version: unspecified
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: ---
Assignee: RHOS Maint
QA Contact:
URL: https://blueprints.launchpad.net/nova...
Whiteboard: upstream_milestone_none upstream_stat...
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-12-12 13:59 UTC by RHOS Integration
Modified: 2015-03-19 17:45 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-03-19 17:45:38 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description RHOS Integration 2013-12-12 13:59:20 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/nova/+spec/vcluster-api-extension.

Description:

This blue print adds an api extension called vcluster to nova. The new api allows the creation/update/delete of virtual clusters. A virtual cluster contains a set of instances, each can be of type "server" and "block-storage", and it contains a set of groups that define the relationship among all the instances. For each group, specification of the relationship (such as anti-affinity/proximity rules) can be defined.

POST v2/{tenant_id}/vclusters/ Create a virtual cluster
GET v2/{tenant_id}/vclusters/{vcluster_id} Describes a specific virtual cluster
DELETE v2/{tenant_id}/vclusters/{vcluster_id} Delete a virtual cluster

Example parameters for virtual clusters in JSON format are given as below.
1. use case of one volume attached to one server
{
"vcluster" : {
        "name" : "new-virtual-cluster",
         "instances" : {
              "instance": {
                     "name": "db-server-1",
                      "type": "server",
                      "spec": {
                              "imageRef": "xxx-yyy-zzz",
                              "flavorRef": "123-456-789"
                       }
               }
              "instance": {
                     "name": "db-vol-1",
                      "type": "volume",
                      "spec": {
                              "size": x,
                              "volume_type": ""
                       }
               }

         }
         "groupings": {
                "grouping": {
                        "name": "group-1",
                        "membersRef": "["db-server-1", "db-vol-1"],
                        "spec" {
                         "rule": "affinity"
                         }
                 }
          }
     }
}
2. use case of a redundant data servers
{
"vcluster" : {
        "name" : "new-virtual-cluster",
         "instances" : {
              "instance": {
                     "name": "db-server-1",
                      "type": "server",
                      "spec": {
                              "imageRef": "xxx-yyy-zzz",
                              "flavorRef": "123-456-789"
                       }
               }
              "instance": {
                     "name": "db-vol-1",
                      "type": "volume",
                      "spec": {
                              "size": x,
                              "volume_type": ""
                       }
               }
                     "name": "db-server-2",
                      "type": "server",
                      "spec": {
                              "imageRef": "xxx-yyy-zzz",
                              "flavorRef": "123-456-789"
                       }
               }
              "instance": {
                     "name": "db-vol-2",
                      "type": "volume",
                      "spec": {
                              "size": x,
                              "volume_type": ""
                       }
               }

         }
         "groupings": {
                "grouping": {
                        "name": "group-1",
                        "membersRef": "["db-server-1", "db-vol-1"],
                        "spec" {
                         "rule": "affinity"
                         }
                 }
                "grouping": {
                        "name": "group-2",
                        "membersRef": "["db-server-2", "db-vol-2"],
                        "spec" {
                         "rule": "affinity"
                         }
                 }
                "grouping": {
                        "name": "group-3",
                        "membersRef": "["db-server-1", "db-server-2"],
                        "spec" {
                         "rule": "anti-affinity"
                         }
                 }
                "grouping": {
                        "name": "group-1",
                        "membersRef": "["db-vol-1", "db-vol-2"],
                        "spec" {
                         "rule": "anti-affinity"
                         }
                 }

          }
     }
}


Specification URL (additional information):

None


Note You need to log in before you can comment on or make changes to this bug.