Bug 1331592

Summary: Creating crush nodes that aren't aligned with crush rules can result in pools that can't store or retrieve data
Product: Red Hat Ceph Storage Reporter: Christina Meno <gmeno>
Component: CalamariAssignee: Boris Ranto <branto>
Calamari sub component: Back-end QA Contact: ceph-qe-bugs <ceph-qe-bugs>
Status: CLOSED WONTFIX Docs Contact:
Severity: medium    
Priority: unspecified CC: ceph-eng-bugs, gmeno, hnallurv, kdreyer, uboppana, vsarmila
Version: 2.0Keywords: FutureFeature
Target Milestone: rc   
Target Release: 3.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-07-25 16:29:48 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Christina Meno 2016-04-28 22:37:46 UTC
Description of problem:
The calamari API allows creation of CRUSH nodes and CRUSH rules
but the validation of semantics are lacking.

for example you can
Make a new root node that contains all existing OSDs and the default crush rules will be very unhappy

rule replicated_ruleset {
        ruleset 0
        type replicated
        min_size 1
        max_size 10
        step take default
        step chooseleaf firstn 0 type host
        step emit
}

since we don't have hosts between the root node and the osd and the name of the root isn't called default this rule will not select any OSDs for pools using the replicated ruleset


Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1. POST {"bucket_type": "root", "name": "general", "items": [{"id": 0, "weight": 0.0, "pos": 0}]} to /api/v2/cluster/<FSID>/crush_node

2.
3.

Actual results:
HTTP 201

Expected results:
HTTP 4XX -- some validation error

Additional info: