Adding a property to setup the RESTAPI connection timeout with
ZFS Storage Appliance, allow tempest to pass with slower network links.
DocImpact: New config parameter is added to allow configuring timeout value.
Closes-Bug: #
1369136
Change-Id: I8de19f56a18106324ed414cf41ee2323de639359
def login(self, user):
self.user = user
- def set_host(self, host):
+ def set_host(self, host, timeout=None):
self.host = host
def create_project(self, pool, project, compression, logbias):
self.configuration.zfssa_target_password = ''
self.configuration.zfssa_target_portal = '1.1.1.1:3260'
self.configuration.zfssa_target_interfaces = 'e1000g0'
+ self.configuration.zfssa_rest_timeout = 60
def test_create_delete_volume(self):
self.drv.create_volume(self.test_vol)
try:
response = urllib2.urlopen(req, timeout=self.timeout)
except urllib2.HTTPError as err:
- LOG.error(_('REST Not Available: %s') % err.code)
+ if err.code == httplib.NOT_FOUND:
+ LOG.debug('REST Not Found: %s' % err.code)
+ else:
+ LOG.error(_('REST Not Available: %s') % err.code)
+
if err.code == httplib.SERVICE_UNAVAILABLE and \
retry < maxreqretries:
retry += 1
cfg.StrOpt('zfssa_target_portal',
help='iSCSI target portal (Data-IP:Port, w.x.y.z:3260).'),
cfg.StrOpt('zfssa_target_interfaces',
- help='Network interfaces of iSCSI targets. (comma separated)')
+ help='Network interfaces of iSCSI targets. (comma separated)'),
+ cfg.IntOpt('zfssa_rest_timeout',
+ help='REST connection timeout. (seconds)')
+
]
CONF.register_opts(ZFSSA_OPTS)
msg = (_('Connecting to host: %s.') % lcfg.san_ip)
LOG.info(msg)
self.zfssa = factory_zfssa()
- self.zfssa.set_host(lcfg.san_ip)
+ self.zfssa.set_host(lcfg.san_ip, timeout=lcfg.zfssa_rest_timeout)
auth_str = base64.encodestring('%s:%s' %
(lcfg.san_login,
lcfg.san_password))[:-1]
return vdata['version']['asn'] == pdata['pool']['asn'] and \
vdata['version']['nodename'] == pdata['pool']['owner']
- def set_host(self, host):
+ def set_host(self, host, timeout=None):
self.host = host
self.url = "https://" + self.host + ":215"
- self.rclient = restclient.RestClientURL(self.url)
+ self.rclient = restclient.RestClientURL(self.url, timeout=timeout)
def login(self, auth_str):
"""Login to the appliance"""
optional - volblocksize, sparse, compression, logbias
"""
svc = '/api/storage/v1/pools/' + pool + '/projects/' + \
- project + '/luns'
+ project + '/luns'
arg = {
'name': lun,
'volsize': volsize,
# (string value)
#zfssa_target_interfaces=<None>
+# REST connection timeout. (seconds) (integer value)
+#zfssa_rest_timeout=<None>
+
#
# Options defined in cinder.volume.manager