ceph/src/brag
..
client
server
CMakeLists.txt
README.md

Ceph-brag

ceph-brag is going to be an anonymized cluster reporting tool designed to collect a "registry" of Ceph clusters for community knowledge. This data will be displayed on a public web page using UUID by default, but users can claim their cluster and publish information about ownership if they so desire.

For more information please visit:

Client

How to use:

Pre-requisites:

ceph-brag uses 'ceph' python script. Hence, before executing ceph-brag script ensure that ceph services are all running and 'ceph' script is in 'PATH' environment

Runtime instructions:

Run 'ceph-brag -h' to get the usage information of this tool.

Sample output:

{
  "cluster_creation_date": "2014-01-16 13:38:41.928551",
  "uuid": "20679d0e-04b1-4004-8ee9-45ac271510e9",
  "components_count": {
    "num_data_bytes": 0,
    "num_bytes_total": 1209312904,
    "num_osds": 1,
    "num_objects": 0,
    "num_pgs": 192,
    "num_pools": 3,
    "num_mdss": 1,
    "num_mons": 1
  },
  "crush_types": [
    {
      "type": "osd"
      "count": 2,
    },
    {
      "type": "rack"
      "count": 1,
    },
    {
      "type": "host"
      "count": 1,
    },
    {
      "type": "root"
      "count": 1,
    }
  ],
  "ownership": {
    "organization": "eNovance",
    "description": "Use case1",
    "email": "mail@enovance.com",
    "name": "Cluster1"
  },
  "pool_metadata": [
    {
      "size": 3,
      "id": 0,
      "type": 1
    },
    {
      "size": 3,
      "id": 1,
      "type": 1
    },
    {
      "size": 3,
      "id": 2,
      "name": 1
    }
  ],
  "sysinfo": {
    "kernel_types": [
      {
        "count": 1,
        "type": "#36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012"
      }
    ],
    "cpu_archs": [
      {
        "count": 1,
        "arch": "x86_64"
      }
    ],
    "cpus": [
      {
        "count": 1,
        "cpu": "Intel Xeon E312xx (Sandy Bridge)"
      }
    ],
    "kernel_versions": [
      {
        "count": 1,
        "version": "3.2.0-23-virtual"
      }
    ],
    "ceph_versions": [
      {
        "count": 1,
        "version": "0.75-229-g4050eae(4050eae32cd77a1c210ca11d0f12c74daecb1bd3)"
      }
    ],
    "os_info": [
      {
        "count": 1,
        "os": "Linux"
      }
    ],
    "distros": [
      {
        "count": 1,
        "distro": "Ubuntu 12.04 precise (Ubuntu 12.04 LTS)"
      }
    ]
  }
}

Server

Info

The ceph-brag server code is a python based web application.

How to use

Prerequisites

  • pecan is the web framework that is used by this application.
  • sqlalchemy is the ORM that is used by this application

How to deploy

URLs

Following are the REST urls that are implemented with 'url-prefix' being the mount point for the WSGI script

GET

* GET /url-prefix/

Returns the list of clusters that are registered so far. Outputs - On success application/json of the following format is returned

[
  {
   "num_versions": 3, 
   "cluster_creation_date": "2014-01-16 13:38:41.928551", 
   "uuid": "20679d0e-04b1-4004-8ee9-45ac271510e9", 
   "cluster_name": "Cluster1", 
   "organization": "eNovance", 
   "email": "mail@enovance.com"
  },
  ...
]
* GET /url-prefix/UUID

Returns the list of version information for a particular UUID. Outputs - On success application/json of the following format is returned

[
  {
    "version_number": 1, 
    "version_date": "2014-02-10 10:17:56.283499"
  },
  ...
]
* GET /url-prefix/UUID/version_number

Returns the entire brag report as mentioned in client's sample output for a particular version of a UUID

PUT

* PUT /url-prefix

Uploads the brag report and creates a new version for the UUID mentioned in the payload

DELETE

* DELETE /url-prefix?uuid=xxxx

Deletes all the versions of a cluster whose UUID is sent as a parameter