def update_servicechain_instance(self, context, servicechain_instance_id, servicechain_instance): session = context.session with session.begin(subtransactions=True): original_sc_instance = self.get_servicechain_instance( context, servicechain_instance_id) updated_sc_instance = super(ServiceChainPlugin, self).update_servicechain_instance( context, servicechain_instance_id, servicechain_instance) sc_context = servicechain_context.ServiceChainInstanceContext( self, context, updated_sc_instance, original_sc_instance=original_sc_instance) self.driver_manager.update_servicechain_instance_precommit( sc_context) self.driver_manager.update_servicechain_instance_postcommit( sc_context) return updated_sc_instance
def delete_servicechain_instance(self, context, servicechain_instance_id): session = context.session with session.begin(subtransactions=True): sc_instance = self.get_servicechain_instance( context, servicechain_instance_id) sc_context = servicechain_context.ServiceChainInstanceContext( self, context, sc_instance) self.driver_manager.delete_servicechain_instance_precommit( sc_context) super(ServiceChainPlugin, self).delete_servicechain_instance( context, servicechain_instance_id) try: self.driver_manager.delete_servicechain_instance_postcommit( sc_context) except Exception: LOG.exception(_("delete_servicechain_instance_postcommit failed " "for servicechain_instance %s"), servicechain_instance_id)
def create_servicechain_instance(self, context, servicechain_instance): session = context.session with session.begin(subtransactions=True): result = super(ServiceChainPlugin, self).create_servicechain_instance( context, servicechain_instance) sc_context = servicechain_context.ServiceChainInstanceContext( self, context, result) self.driver_manager.create_servicechain_instance_precommit( sc_context) try: self.driver_manager.create_servicechain_instance_postcommit( sc_context) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_( "driver_manager.create_servicechain_instance_postcommit " "failed, deleting servicechain_instance %s"), result['id']) self.delete_servicechain_instance(context, result['id']) return result