def handle_order(self, order): """Handle checking the status of a certificate order. :param order: Order to process. :return: None if no follow on processing is needed for this task, otherwise a :class:`FollowOnProcessingStatusDTO` instance with information on how to process this task into the future. """ result_follow_on = common.FollowOnProcessingStatusDTO() order_info = order.to_dict_fields() order_type = order_info.get('type') # Retrieve the project. project = self.project_repo.get(order.project_id) if order_type != models.OrderType.CERTIFICATE: raise NotImplementedError( u._('Order type "{order_type}" not supported.').format( order_type=order_type)) # Request a certificate new_container = cert.check_certificate_request(order, project, result_follow_on) if new_container: order.container_id = new_container.id LOG.debug(u._("...done checking status of a certificate order.")) return result_follow_on
def handle_order(self, order): """Handle secret creation using meta info. If type is key create secret if type is asymmetric create secrets create containers if type is certificate TBD :param order: Order to process. :return: None if no follow on processing is needed for this task, otherwise a :class:`FollowOnProcessingStatusDTO` instance with information on how to process this task into the future. """ result_follow_on = common.FollowOnProcessingStatusDTO() order_info = order.to_dict_fields() order_type = order_info.get('type') meta_info = order_info.get('meta') if order_info.get('creator_id'): meta_info.setdefault('creator_id', order_info.get('creator_id')) # Retrieve the project. project = self.project_repo.get(order.project_id) if order_type == models.OrderType.KEY: # Create Secret new_secret = plugin.generate_secret( meta_info, meta_info.get('payload_content_type', 'application/octet-stream'), project) order.secret_id = new_secret.id LOG.debug(u._("...done creating keys order's secret.")) elif order_type == models.OrderType.ASYMMETRIC: # Create asymmetric Secret new_container = plugin.generate_asymmetric_secret( meta_info, meta_info.get('payload_content_type', 'application/octet-stream'), project) order.container_id = new_container.id LOG.debug(u._("...done creating asymmetric order's secret.")) elif order_type == models.OrderType.CERTIFICATE: # Request a certificate new_container = cert.issue_certificate_request( order, project, result_follow_on) if new_container: order.container_id = new_container.id LOG.debug(u._("...done requesting a certificate.")) else: raise NotImplementedError( u._('Order type "{order_type}" not implemented.').format( order_type=order_type)) return result_follow_on
class TestClass(object): self.order_id = None my_args = None my_kwargs = None is_exception_needed = False result = common.FollowOnProcessingStatusDTO() @server.retryable_order def test_method(self, order_id, *args, **kwargs): if self.is_exception_needed: raise ValueError() self.order_id = order_id self.my_args = args self.my_kwargs = kwargs return self.result
def setUp(self): super(WhenCallingScheduleOrderRetryTasks, self).setUp() self.project = database_utils.create_project() self.order = database_utils.create_order(self.project) database_utils.get_session().commit() self.repo = repositories.OrderRetryTaskRepo() self.result = common.FollowOnProcessingStatusDTO() self.args = ['args-foo', 'args-bar'] self.kwargs = {'order_id': self.order.id, 'foo': 1, 'bar': 2} self.date_to_retry_at = ( datetime.datetime.utcnow() + datetime.timedelta(milliseconds=self.result.retry_msec))
def setUp(self): super(BaseCertificateRequestsTestCase, self).setUp() self.external_project_id = "56789" self.project = res.get_or_create_project(self.external_project_id) project_repo.save(self.project) self.barbican_meta_dto = mock.MagicMock() self.order_meta = {} self.plugin_meta = {} self.barbican_meta = {} self.result = cert_man.ResultDTO( cert_man.CertificateStatus.WAITING_FOR_CA ) self.result_follow_on = common.FollowOnProcessingStatusDTO() self.cert_plugin = mock.MagicMock() self.cert_plugin.issue_certificate_request.return_value = self.result self.cert_plugin.check_certificate_status.return_value = self.result self.store_plugin = mock.MagicMock() parsed_ca = { 'plugin_name': "cert_plugin", 'plugin_ca_id': "XXXX", 'name': "test ca", 'description': 'Test CA', 'ca_signing_certificate': 'ZZZZZ', 'intermediates': 'YYYYY' } self.ca = models.CertificateAuthority(parsed_ca) ca_repo.create_from(self.ca) self.ca_id = self.ca.id # second ca for testing parsed_ca = { 'plugin_name': "cert_plugin", 'plugin_ca_id': "XXXX2", 'name': "test ca2", 'description': 'Test CA2', 'ca_signing_certificate': 'ZZZZZ2', 'intermediates': 'YYYYY2' } self.ca2 = models.CertificateAuthority(parsed_ca) ca_repo.create_from(self.ca2) self.ca_id2 = self.ca2.id # data for preferred CA and global preferred CA tests # add those to the repo in those tests self.pref_ca = models.PreferredCertificateAuthority( self.project.id, self.ca_id) self.global_pref_ca = models.PreferredCertificateAuthority( self.project.id, self.ca_id) # data for stored key cases self.private_key = models.Secret() self.private_key.secret_type = 'PRIVATE' self.private_key.project_id = self.project.id secret_repo.create_from(self.private_key) self.public_key = models.Secret() self.public_key.secret_type = 'PUBLIC' self.public_key.project_id = self.project.id secret_repo.create_from(self.public_key) self.passphrase = models.Secret() self.passphrase.secret_type = 'PASSPHRASE' self.passphrase.project_id = self.project.id secret_repo.create_from(self.passphrase) self.private_key_value = None self.public_key_value = "public_key" self.passphrase_value = None self.parsed_container_with_passphrase = { 'name': 'container name', 'type': 'rsa', 'secret_refs': [ {'name': 'private_key', 'secret_ref': 'https://localhost/secrets/' + self.private_key.id}, {'name': 'public_key', 'secret_ref': 'https://localhost/secrets/' + self.public_key.id}, {'name': 'private_key_passphrase', 'secret_ref': 'https://localhost/secrets/' + self.passphrase.id} ] } self.parsed_container = { 'name': 'container name', 'type': 'rsa', 'secret_refs': [ {'name': 'private_key', 'secret_ref': 'https://localhost/secrets/' + self.private_key.id}, {'name': 'public_key', 'secret_ref': 'https://localhost/secrets/' + self.public_key.id} ] } self.container_with_passphrase = models.Container( self.parsed_container_with_passphrase) self.container_with_passphrase.project_id = self.project.id container_repo.create_from(self.container_with_passphrase) self.container = models.Container(self.parsed_container) self.container.project_id = self.project.id container_repo.create_from(self.container) repositories.commit() self.stored_key_meta = { cert_man.REQUEST_TYPE: cert_man.CertificateRequestType.STORED_KEY_REQUEST, "container_ref": "https://localhost/containers/" + self.container.id, "subject_dn": "cn=host.example.com,ou=dev,ou=us,o=example.com" } self.order = models.Order() self.order.meta = self.order_meta self.order.project_id = self.project.id self.order.order_barbican_meta = self.barbican_meta self.order.type = 'certificate' order_repo.create_from(self.order) self._config_cert_plugin() self._config_store_plugin() self._config_cert_event_plugin() self._config_save_meta_plugin() self._config_get_meta_plugin() self._config_save_barbican_meta_plugin() self._config_get_barbican_meta_plugin() self._config_barbican_meta_dto()
def setUp(self): super(WhenUsingOrderTaskHelper, self).setUp() self.result = common.FollowOnProcessingStatusDTO() self.helper = resources._OrderTaskHelper()
def setUp(self): super(WhenUsingFollowOnProcessingStatusDTO, self).setUp() self.target = common.FollowOnProcessingStatusDTO()