Project

General

Profile

Add CRUSH management to calamari API

Summary

Add CRUSH management to calamari API

Owners

  • Gregory Meno (redhat)
  • John Spray (redhat)
  • Name

Interested Parties

  • Name (Affiliation)
  • Name (Affiliation)
  • Name

Current Status

Already implemented in ceph

Detailed Description

Blueprint recommendations

* Nodes and rules get CRUD - query filtering (depth, children_of)

Communications:
Rules:
/api/v2/cluster/<FSID>/crush_rule_set
GET -> CrushRuleSetViewSet.list(request, fsid)
POST -> CrushRuleSetViewSet.update(request, fsid)
/api/v2/cluster/<FSID>/crush_rule/<rule_id>
GET -> CrushRuleViewSet.retreive(request, fsid, rule_id)
POST -> CrushRuleViewSet.create(request, fsid, rule_id)
PATCH -> CrushRuleViewSet.update(request, fsid, rule_id)
DELETE -> CrushRuleViewSet.destroy(request, fsid, rule_id)

Nodes:
/api/vs/cluster/<FSID>/crush_node
GET -> CrushNodeViewSet.list(request, fsid)
POST -> CrushNodeViewSet.create(request, fsid)
/api/vs/cluster/<FSID>/crush_node/<node_id>?depth&children_of
GET -> CrushNodeViewSet.retreive(request, fsid, depth=None, children_of=False)
PATCH -> CrushNodeViewSet.update(request, fsid)
DELETE -> CrushNodeViewSet.destroy(request, fsid)
/api/vs/cluster/<FSID>/crush_map
GET -> CrushMapViewSet.retreive(request, fsid)
POST -> CrushMapViewSet.replace(request, fsid) #is POST the right verb for this?

* resolve an (OSD, host) to crush node, decorate the OSD, host details with that

/api/v2/cluster/<FSID>/osd
GET -> OsdViewSet.list(request, fsid)
/api/v2/cluster/<FSID>/osd/<osd_id>
GET -> OsdViewSet.retrieve(request, fsid, osd_id)
/api/v2/cluster/<FSID>/server
GET -> ServerClusterViewSet.list(request, fsid)
/api/v2/cluster/<FSID>/server/<FQDN>
GET -> ServerClusterViewSet.retreive(request, fsid, fqdn)

* override 'crush location' in the ceph config so that modifications to OSD position in the CRUSH map stick

Work items

Coding tasks

  1. Task 1
  2. Task 2
  3. Task 3

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3