The DuplicateOptError is probably caused by reusing a ConfigOpts instance with a slightly different definition of the zfssa_rest_timeout option, and I do see at least 2 places that option is defined, in zfssaiscsi.py and zfssanfs.py:
$ git grep zfssa_rest_timeout cinder/tests/unit/volume/drivers/test_zfssa.py: self.configuration.zfssa_rest_timeout = 60 cinder/tests/unit/volume/drivers/test_zfssa.py: self.configuration.zfssa_rest_timeout = '30' cinder/volume/drivers/zfssa/zfssaiscsi.py: cfg.IntOpt('zfssa_rest_timeout', cinder/volume/drivers/zfssa/zfssaiscsi.py: self.zfssa.set_host(lcfg.san_ip, timeout=lcfg.zfssa_rest_timeout) cinder/volume/drivers/zfssa/zfssanfs.py: cfg.IntOpt('zfssa_rest_timeout', cinder/volume/drivers/zfssa/zfssanfs.py: self.zfssa.set_host(host, timeout=lcfg.zfssa_rest_timeout) doc/source/configuration/tables/cinder-zfssa-iscsi.inc: * - ``zfssa_rest_timeout`` = ``None`` doc/source/configuration/tables/cinder-zfssa-nfs.inc: * - ``zfssa_rest_timeout`` = ``None``
The DuplicateOptError is probably caused by reusing a ConfigOpts instance with a slightly different definition of the zfssa_rest_timeout option, and I do see at least 2 places that option is defined, in zfssaiscsi.py and zfssanfs.py:
$ git grep zfssa_rest_timeout tests/unit/ volume/ drivers/ test_zfssa. py: self.configurat ion.zfssa_ rest_timeout = 60 tests/unit/ volume/ drivers/ test_zfssa. py: self.configurat ion.zfssa_ rest_timeout = '30' volume/ drivers/ zfssa/zfssaiscs i.py: cfg.IntOpt( 'zfssa_ rest_timeout' , volume/ drivers/ zfssa/zfssaiscs i.py: self.zfssa. set_host( lcfg.san_ ip, timeout= lcfg.zfssa_ rest_timeout) volume/ drivers/ zfssa/zfssanfs. py: cfg.IntOpt( 'zfssa_ rest_timeout' , volume/ drivers/ zfssa/zfssanfs. py: self.zfssa. set_host( host, timeout= lcfg.zfssa_ rest_timeout) configuration/ tables/ cinder- zfssa-iscsi. inc: * - ``zfssa_ rest_timeout` ` = ``None`` configuration/ tables/ cinder- zfssa-nfs. inc: * - ``zfssa_ rest_timeout` ` = ``None``
cinder/
cinder/
cinder/
cinder/
cinder/
cinder/
doc/source/
doc/source/