Hi Zack,

In order to test locally repairable codes ( described at 
https://wiki.ceph.com/Planning/Blueprints/Giant/Pyramid_Erasure_Code and 
documented at 
https://github.com/dachary/ceph/commit/2ae645438243232392c11fd80fd960f6221fd2a0#diff-5518964bc98a094a784ce2d17a5b0cc1R20
 ) it would be a convenient to set the erasure code profile without modifying 
the teuthology code. 

There are not too many instances of hardcoded parameters:

  
https://github.com/ceph/teuthology/blob/master/teuthology/task_util/rados.py#L27
  
https://github.com/ceph/teuthology/blob/master/teuthology/task/ceph_manager.py#L732

and it could be generalized. In a nutshell, the definition of an erasure coded 
profile is a set of key value which should default to:

  k: 2
  m: 1
  plugin: jerasure
  ruleset-failure-domain: osd

and 

  self.raw_cluster_cmd('osd', 'erasure-code-profile', 'set', 
'teuthologyprofile', 'ruleset-failure-domain=osd', 'm='+str(ec_m), 
'k='+str(ec_k))

could be replaced with:
   
   self.raw_cluster_cmd('osd', 'erasure-code-profile', 'set', 
'teuthologyprofile', **kwargs)

assuming kwargs is the above map parsed from the yaml. 

Any advice you may have on the implementation would be very welcome :-)

Cheers
-- 
Loïc Dachary, Artisan Logiciel Libre

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to