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¶
- Task 1
- Task 2
- Task 3
Build / release tasks¶
- Task 1
- Task 2
- Task 3
Documentation tasks¶
- Task 1
- Task 2
- Task 3
Deprecation tasks¶
- Task 1
- Task 2
- Task 3