================
Demo Data Script
================

This document details the beginning of the walkthrough script for the Tuskar
demo.

To use this, clear your database and run the commands below.  The result
should be a HEAT template with 6 compute Nodes and 1 non-compute Node.

N.B. The HEAT template does not define availability zones for the nodes.
Therefore the nodes could be deployed onto any rack.  This will be fixed
in a subsequent patch.

**Note:** The commands below are useful for experimenting with different
creation scenarios, but the exact data center described therein can also
be created by running:

::

    python tools/sample_data/py

from your development environment.

Create Racks
------------

This command creates three Racks.  Two Racks are assigned to the
compute Resource Class and contain three Baremetal Nodes each. One Rack
is designated to the non-compute Resource Class and contains 1 Baremetal
Node only.

::

    curl -vX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d  '
    {
      "subnet": "192.168.1.0/255",
      "name": "compute_1",
      "capacities": [{
        "name": "total_cpu",
        "value": "64"
      }, {
        "name": "total_memory",
        "value": "1024"
      }],
      "nodes": [
      {
        "id": "nova_bare_metal_1"
      },
      {
        "id": "nova_bare_metal_2"
      }, 
      {
        "id": "nova_bare_metal_3"
      }
      ],
      "slots": 3
    }
    ' http://0.0.0.0:8585/v1/racks

    curl -vX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d  '
    {
      "subnet": "192.168.2.0/255",
      "name": "compute_2",
      "capacities": [{
        "name": "total_cpu",
        "value": "64"
      }, {
        "name": "total_memory",
        "value": "1024"
      }],
      "nodes": [
      {
        "id": "nova_bare_metal_4"
      },
      {
        "id": "nova_bare_metal_5"
      }, 
      {
        "id": "nova_bare_metal_6"
      }
      ],
      "slots": 3
    }
    ' http://0.0.0.0:8585/v1/racks

    curl -vX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d  '
    {
      "subnet": "192.168.2.0/255",
      "name": "non_compute",
      "capacities": [{
        "name": "total_cpu",
        "value": "64"
      }, {
        "name": "total_memory",
        "value": "1024"
      }],
      "nodes": [
      {
        "id": "nova_bare_metal_7"
      }],
      "slots": 3
    }
    ' http://0.0.0.0:8585/v1/racks

Create Resource Classes
-----------------------

This command creates two Resource Classes.  The compute Resource Class contains two Racks
and a total of six Nodes.  The non-compute Resource Class contains one Rack and one Node.

::

    curl -iX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '
        {
              "name": "compute-rc", 
              "service_type":"compute",
              "racks": [
                  { 
                    "id":1,
                    "links":[{"href":"http://0.0.0.0:8585/v1/racks/1","rel":"self"}]
                  },
                  { 
                    "id":2,
                    "links":[{"href":"http://0.0.0.0:8585/v1/racks/2","rel":"self"}]
                  }
               ],
               "flavors": [
                    { "name" : "x-large",
                      "capacities" : [
                         {   "name": "cpu", 
                             "value" : "4",
                              "unit" : "count" }, 
                         {   "name": "memory",
                             "value" : "8192",
                             "unit" : "MiB" },
                         {   "name": "storage", 
                             "value" : "1024",
                             "unit" : "GiB" }
                      ]
                    }
               ]
          }
    ' http://0.0.0.0:8585/v1/resource_classes

    curl -iX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '
        {
              "name": "non-compute-rc", 
              "service_type":"not_compute",
              "racks": [
                  { 
                    "id":3,
                    "links":[{"href":"http://0.0.0.0:8585/v1/racks/3","rel":"self"}]
                  }
               ]
          }
    ' http://0.0.0.0:8585/v1/resource_classes

Generate HEAT Template
----------------------

This command generates the HEAT template based on the Tuskar description.

::

    curl http://0.0.0.0:8585/v1/data_centers
