def test_should_return_ca_unavailable_for_request(self): retry_msec = 123 status_msg = 'Test status' self.result.status = ( cert_man.CertificateStatus.CA_UNAVAILABLE_FOR_REQUEST) self.result.retry_msec = retry_msec self.result.status_message = status_msg order_ref = hrefs.convert_order_to_href(self.order.id) cert_res.check_certificate_request(self.order, self.project, self.result_follow_on) self._verify_check_certificate_plugins_called() epm = self.cert_event_plugin_patcher.target._EVENT_PLUGIN_MANAGER epm.notify_ca_is_unavailable.assert_called_once_with( self.project.id, order_ref, status_msg, retry_msec ) self.assertEqual( common.RetryTasks.INVOKE_SAME_TASK, self.result_follow_on.retry_task) self.assertEqual( cert_res.ORDER_STATUS_CA_UNAVAIL_FOR_CHECK.id, self.result_follow_on.status) self.assertEqual( cert_res.ORDER_STATUS_CA_UNAVAIL_FOR_CHECK.message, self.result_follow_on.status_message)
def _notify_ca_unavailable(order_model, result): """Notify observer(s) that the CA was unavailable at this time.""" cert.get_event_plugin_manager().notify_ca_is_unavailable( order_model.project_id, hrefs.convert_order_to_href(order_model.id), result.status_message, result.retry_msec)
def _notify_ca_unavailable(order_model, result): """Notify observer(s) that the CA was unavailable at this time.""" cert.EVENT_PLUGIN_MANAGER.notify_ca_is_unavailable( order_model.project_id, hrefs.convert_order_to_href(order_model.id), result.status_message, result.retry_msec)
def on_post(self, external_project_id, **kwargs): project = res.get_or_create_project(external_project_id) body = api.load_body(pecan.request, validator=self.type_order_validator) order_type = body.get('type') order_meta = body.get('meta') request_type = order_meta.get('request_type') LOG.debug('Processing order type %(order_type)s,' ' request type %(request_type)s' % { 'order_type': order_type, 'request_type': request_type }) if order_type == models.OrderType.CERTIFICATE: msg = _DEPRECATION_MSG % "Certificate Order Resource" versionutils.report_deprecated_feature(LOG, msg) validators.validate_ca_id(project.id, body.get('meta')) if request_type == 'stored-key': container_ref = order_meta.get('container_ref') validators.validate_stored_key_rsa_container( external_project_id, container_ref, pecan.request) self.quota_enforcer.enforce(project) new_order = models.Order() new_order.meta = body.get('meta') new_order.type = order_type new_order.project_id = project.id request_id = None ctxt = controllers._get_barbican_context(pecan.request) if ctxt: new_order.creator_id = ctxt.user request_id = ctxt.request_id self.order_repo.create_from(new_order) # Grab our id before commit due to obj expiration from sqlalchemy order_id = new_order.id # Force commit to avoid async issues with the workers repo.commit() self.queue.process_type_order(order_id=order_id, project_id=external_project_id, request_id=request_id) url = hrefs.convert_order_to_href(order_id) pecan.response.status = 202 pecan.response.headers['Location'] = url return {'order_ref': url}
def on_post(self, external_project_id, **kwargs): project = res.get_or_create_project(external_project_id) body = api.load_body(pecan.request, validator=self.type_order_validator) order_type = body.get('type') order_meta = body.get('meta') request_type = order_meta.get('request_type') LOG.debug('Processing order type %s, request type %s', order_type, request_type) if order_type == models.OrderType.CERTIFICATE: validators.validate_ca_id(project.id, body.get('meta')) if request_type == 'stored-key': container_ref = order_meta.get('container_ref') validators.validate_stored_key_rsa_container( external_project_id, container_ref, pecan.request) self.quota_enforcer.enforce(project) new_order = models.Order() new_order.meta = body.get('meta') new_order.type = order_type new_order.project_id = project.id request_id = None ctxt = controllers._get_barbican_context(pecan.request) if ctxt: new_order.creator_id = ctxt.user request_id = ctxt.request_id self.order_repo.create_from(new_order) # Grab our id before commit due to obj expiration from sqlalchemy order_id = new_order.id # Force commit to avoid async issues with the workers repo.commit() self.queue.process_type_order(order_id=order_id, project_id=external_project_id, request_id=request_id) url = hrefs.convert_order_to_href(order_id) pecan.response.status = 202 pecan.response.headers['Location'] = url return {'order_ref': url}
def on_post(self, external_project_id, **kwargs): project = res.get_or_create_project(external_project_id) body = api.load_body(pecan.request, validator=self.type_order_validator) order_type = body.get('type') order_meta = body.get('meta') request_type = order_meta.get('request_type') LOG.debug('Processing order type %(order_type)s,' ' request type %(request_type)s' % { 'order_type': order_type, 'request_type': request_type }) self.quota_enforcer.enforce(project) new_order = models.Order() new_order.meta = body.get('meta') new_order.type = order_type new_order.project_id = project.id request_id = None ctxt = controllers._get_barbican_context(pecan.request) if ctxt: new_order.creator_id = ctxt.user request_id = ctxt.request_id self.order_repo.create_from(new_order) # Grab our id before commit due to obj expiration from sqlalchemy order_id = new_order.id # Force commit to avoid async issues with the workers repo.commit() self.queue.process_type_order(order_id=order_id, project_id=external_project_id, request_id=request_id) url = hrefs.convert_order_to_href(order_id) pecan.response.status = 202 pecan.response.headers['Location'] = url return {'order_ref': url}
def test_should_return_ca_unavailable_for_request(self): retry_msec = 123 status_msg = 'Test status' self.result.status = ( cert_man.CertificateStatus.CA_UNAVAILABLE_FOR_REQUEST) self.result.retry_msec = retry_msec self.result.status_message = status_msg order_ref = hrefs.convert_order_to_href(self.order_id) cert_res.issue_certificate_request(self.order_model, self.tenant_model, self.repos) self._verify_issue_certificate_plugins_called() epm = self.cert_event_plugin_patcher.target.EVENT_PLUGIN_MANAGER epm.notify_ca_is_unavailable.assert_called_once_with( self.project_id, order_ref, status_msg, retry_msec )
def on_post(self, keystone_id, **kwargs): tenant = res.get_or_create_tenant(keystone_id, self.tenant_repo) body = api.load_body(pecan.request, validator=self.type_order_validator) order_type = body.get('type') LOG.debug('Processing order type %s', order_type) new_order = models.Order() new_order.meta = body.get('meta') new_order.type = order_type new_order.tenant_id = tenant.id self.order_repo.create_from(new_order) self.queue.process_type_order(order_id=new_order.id, keystone_id=keystone_id) pecan.response.status = 202 pecan.response.headers['Location'] = '/{0}/orders/{1}'.format( keystone_id, new_order.id ) url = hrefs.convert_order_to_href(new_order.id) return {'order_ref': url}
def on_post(self, external_project_id, **kwargs): project = res.get_or_create_project(external_project_id, self.project_repo) body = api.load_body(pecan.request, validator=self.type_order_validator) order_type = body.get('type') LOG.debug('Processing order type %s', order_type) new_order = models.Order() new_order.meta = body.get('meta') new_order.type = order_type new_order.project_id = project.id self.order_repo.create_from(new_order) self.queue.process_type_order(order_id=new_order.id, project_id=external_project_id) pecan.response.status = 202 pecan.response.headers['Location'] = '/{0}/orders/{1}'.format( external_project_id, new_order.id) url = hrefs.convert_order_to_href(new_order.id) return {'order_ref': url}