def test_publish_autoscale_event(self): """ Publish an event to cloudfeeds. Successfully handle non-JSON data. """ _log = object() eff = cf.publish_autoscale_event({'event': 'stuff'}, log=_log) expected = service_request( ServiceType.CLOUD_FEEDS, 'POST', 'autoscale/events', headers={'content-type': ['application/vnd.rackspace.atom+json']}, data={'event': 'stuff'}, log=_log, success_pred=has_code(201), json_response=False) # success dispatcher = EQFDispatcher([( expected.intent, service_request_eqf(stub_pure_response('<this is xml>', 201)))]) resp, body = sync_perform(dispatcher, eff) self.assertEqual(body, '<this is xml>') # Add regression test that 202 should be an API error because this # is a bug in CF dispatcher = EQFDispatcher([( expected.intent, service_request_eqf(stub_pure_response('<this is xml>', 202)))]) self.assertRaises(APIError, sync_perform, dispatcher, eff)
def add_event(event, admin_tenant_id, region, log): """ Add event to cloud feeds """ event, error, timestamp, event_tenant_id, event_id = sanitize_event(event) req = prepare_request(request_format, event, error, timestamp, region, event_tenant_id, event_id) eff = retry_effect( publish_autoscale_event(req, log=log), compose_retries(lambda f: (not f.check(APIError) or f.value.code < 400 or f.value.code >= 500), retry_times(5)), exponential_backoff_interval(2), ) return Effect(TenantScope(tenant_id=admin_tenant_id, effect=eff))
def add_event(event, admin_tenant_id, region, log): """ Add event to cloud feeds """ event, error, timestamp, event_tenant_id, event_id = sanitize_event(event) req = prepare_request(request_format, event, error, timestamp, region, event_tenant_id, event_id) eff = retry_effect( publish_autoscale_event(req, log=log), compose_retries( lambda f: (not f.check(APIError) or f.value.code < 400 or f.value.code >= 500), retry_times(5)), exponential_backoff_interval(2)) return Effect(TenantScope(tenant_id=admin_tenant_id, effect=eff))