def call(self, context, version, method, *args, **kwargs): """ Call a glance client method. If we get a connection error, retry the request according to FLAGS.glance_num_retries. """ retry_excs = (glanceclient.exc.ServiceUnavailable, glanceclient.exc.InvalidEndpoint, glanceclient.exc.CommunicationError) num_attempts = 1 + FLAGS.glance_num_retries for attempt in xrange(1, num_attempts + 1): client = self.client or self._create_onetime_client( context, version) try: return getattr(client.images, method)(*args, **kwargs) except retry_excs as e: host = self.host port = self.port extra = "retrying" error_msg = _( "Error contacting glance server " "'%(host)s:%(port)s' for '%(method)s', %(extra)s.") if attempt == num_attempts: extra = 'done trying' LOG.exception(error_msg, locals()) raise exception.GlanceConnectionFailed(host=host, port=port, reason=str(e)) LOG.exception(error_msg, locals()) time.sleep(1)
def call(self, context, method, *args, **kwargs): """Call a glance client method. If we get a connection error, retry the request according to CONF.glance_num_retries. """ retry_excs = (glanceclient.exc.ServiceUnavailable, glanceclient.exc.InvalidEndpoint, glanceclient.exc.CommunicationError) num_attempts = 1 + CONF.glance_num_retries glance_controller = kwargs.pop('controller', 'images') store_id = kwargs.pop('store_id', None) base_image_ref = kwargs.pop('base_image_ref', None) for attempt in range(1, num_attempts + 1): client = self.client or self._create_onetime_client(context) keys = ( 'x-image-meta-store', 'x-openstack-base-image-ref', ) values = ( store_id, base_image_ref, ) headers = {k: v for (k, v) in zip(keys, values) if v is not None} if headers: client.http_client.additional_headers = headers try: controller = getattr(client, glance_controller) return getattr(controller, method)(*args, **kwargs) except retry_excs as e: netloc = self.netloc extra = "retrying" error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") if attempt == num_attempts: extra = 'done trying' LOG.exception(error_msg, { 'netloc': netloc, 'method': method, 'extra': extra }) raise exception.GlanceConnectionFailed(reason=e) LOG.exception(error_msg, { 'netloc': netloc, 'method': method, 'extra': extra }) time.sleep(1) except glanceclient.exc.HTTPOverLimit as e: raise exception.ImageLimitExceeded(e)
def call(self, context, method, *args, **kwargs): """Call a glance client method. If we get a connection error, retry the request according to CONF.glance_num_retries. """ version = self.version if version in kwargs: version = kwargs['version'] retry_excs = (glanceclient.exc.ServiceUnavailable, glanceclient.exc.InvalidEndpoint, glanceclient.exc.CommunicationError) num_attempts = 1 + CONF.glance_num_retries for attempt in xrange(1, num_attempts + 1): client = self.client or self._create_onetime_client(context, version) try: return getattr(client.images, method)(*args, **kwargs) except retry_excs as e: netloc = self.netloc extra = "retrying" error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") % { 'netloc': netloc, 'method': method, 'extra': extra, } if attempt == num_attempts: extra = 'done trying' error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") % { 'netloc': netloc, 'method': method, 'extra': extra, } LOG.exception(error_msg) raise exception.GlanceConnectionFailed(netloc=netloc, reason=str(e)) LOG.exception(error_msg) time.sleep(1)
def call(self, context, method, *args, **kwargs): """Call a glance client method. If we get a connection error, retry the request according to CONF.glance_num_retries. """ version = kwargs.pop('version', self.version) retry_excs = (glanceclient.exc.ServiceUnavailable, glanceclient.exc.InvalidEndpoint, glanceclient.exc.CommunicationError) num_attempts = 1 + CONF.glance_num_retries for attempt in range(1, num_attempts + 1): client = self.client or self._create_onetime_client( context, version) try: controller = getattr(client, kwargs.pop('controller', 'images')) return getattr(controller, method)(*args, **kwargs) except retry_excs as e: netloc = self.netloc extra = "retrying" error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") if attempt == num_attempts: extra = 'done trying' LOG.exception(error_msg, { 'netloc': netloc, 'method': method, 'extra': extra }) raise exception.GlanceConnectionFailed(reason=e) LOG.exception(error_msg, { 'netloc': netloc, 'method': method, 'extra': extra }) time.sleep(1) except glanceclient.exc.HTTPOverLimit as e: raise exception.ImageLimitExceeded(e)