Implement Magnum resources¶
https://blueprints.launchpad.net/heat/+spec/magnum-resources
This Blueprint proposes to add support for Magnum resources.
Problem description¶
Magnum is a container management service that is currently not supported by Heat. Resources will be added to Heat to support:
- Baymodel, An object stores template information about the bay which is used to create new bays consistently. 
- Bay, A collection of node objects where work is scheduled. 
- Pod, A collection of containers running on one physical or virtual machine. 
- Service, An abstraction which defines a logical set of pods and a policy by which to access them. 
- ReplicationController, An abstraction for managing a group of PODs to ensure a specified number of PODs are running. 
- Node, A baremetal or virtual machine where work executes 
- Container, A docker container 
Proposed change¶
Magnum resources are not integrated, so they will be added to contrib directory.
Magnum client plugin will be added for communication with Magnum, which has his own requirements. Following resources will be added:
Add the OS::Magnum::BayModel resource
resources:
  model:
    type: OS::Magnum::BayModel
    properties:
      name: String
      image: String
      keypair: String
      external_network: String
      dns_nameserver: String
      flavor: String
      docker_volume_size: Int
      network_driver: String
      http_proxy: String
      https_proxy: String
      no_proxy: String
      labels: String
      insecure: Boolean
Add the OS::Magnum::Bay resource
resources:
  bay:
    type: OS::Magnum::Bay
    properties:
      name: String
      baymodel: { get_resource: model }
      node_count: Int
      discovery_url: String
      bay_create_timeout: Int
Add the OS::Magnum::Pod resource
resources:
  pod:
    type: OS::Magnum::Pod
    properties:
      bay: { get_resource: bay }
      manifest: SOFTWARE_CONFIG
      manifest_url: String
Add the OS::Magnum::Service resource
resources:
  service:
    type: OS::Magnum::Service
    properties:
      bay: { get_resource: bay }
      manifest: SOFTWARE_CONFIG
      manifest_url: String
Add the OS::Magnum::ReplicationController resource
resources:
  rc:
    type: OS::Magnum::ReplicationController
    properties:
      bay: { get_resource: bay }
      manifest: SOFTWARE_CONFIG
      manifest_url: String
Add the OS::Magnum::Node resource
resources:
  rc:
    type: OS::Magnum::Node
    properties:
      name: String
      type: String
      image: String
Add the OS::Magnum::Container resource
resources:
  rc:
    type: OS::Magnum::Node
    properties:
      name: String
      type: String
      command: String
Alternatives¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
Milestones¶
- Target Milestone for completion:
- liberty-1 
Work Items¶
- Add Magnum client plugin for Heat 
- Add Magnum BayModel and Bay resources 
- Add Magnum Pod, Service and ReplicationController resources 
- Add Magnum Node and Container resources 
Dependencies¶
None
