Пример #1
0
 def delete_trunk(self, context, trunk_id):
     """Delete the specified trunk."""
     with db_api.autonested_transaction(context.session):
         trunk = self._get_trunk(context, trunk_id)
         rules.trunk_can_be_managed(context, trunk)
         trunk_port_validator = rules.TrunkPortValidator(trunk.port_id)
         if trunk_port_validator.can_be_trunked_or_untrunked(context):
             # NOTE(status_police): when a trunk is deleted, the logical
             # object disappears from the datastore, therefore there is no
             # status transition involved. If PRECOMMIT failures occur,
             # the trunk remains in the status where it was.
             trunk.delete()
             payload = callbacks.TrunkPayload(context,
                                              trunk_id,
                                              original_trunk=trunk)
             registry.notify(resources.TRUNK,
                             events.PRECOMMIT_DELETE,
                             self,
                             payload=payload)
         else:
             raise trunk_exc.TrunkInUse(trunk_id=trunk_id)
     registry.notify(resources.TRUNK,
                     events.AFTER_DELETE,
                     self,
                     payload=payload)
Пример #2
0
 def delete_trunk(self, context, trunk_id):
     """Delete the trunk port."""
     LOG.debug("Deleting trunk_id %s", trunk_id)
     deleted_from_db = False
     with db_context_writer.using(context):
         trunk = self._get_trunk(context, trunk_id)
         rules.trunk_can_be_managed(context, trunk)
         trunk_port_validator = rules.TrunkPortValidator(trunk.port_id)
         if not trunk_port_validator.is_bound(context):
             trunk.delete()
             deleted_from_db = True
             payload = callbacks.TrunkPayload(context,
                                              trunk_id,
                                              original_trunk=trunk)
             registry.notify(trunk_const.TRUNK,
                             events.PRECOMMIT_DELETE,
                             self,
                             payload=payload)
         else:
             raise trunk_exc.TrunkInUse(trunk_id=trunk_id)
     if deleted_from_db:
         registry.notify(trunk_const.TRUNK,
                         events.AFTER_DELETE,
                         self,
                         payload=payload)
Пример #3
0
 def delete_trunk(self, context, trunk_id):
     """Delete the specified trunk."""
     with db_api.CONTEXT_WRITER.using(context):
         trunk = self._get_trunk(context, trunk_id)
         rules.trunk_can_be_managed(context, trunk)
         trunk_port_validator = rules.TrunkPortValidator(trunk.port_id)
         if trunk_port_validator.can_be_trunked_or_untrunked(context):
             # NOTE(status_police): when a trunk is deleted, the logical
             # object disappears from the datastore, therefore there is no
             # status transition involved. If PRECOMMIT failures occur,
             # the trunk remains in the status where it was.
             try:
                 trunk.delete()
             except Exception as e:
                 with excutils.save_and_reraise_exception():
                     LOG.warning('Trunk driver raised exception when '
                                 'deleting trunk port %s: %s', trunk_id,
                                 str(e))
             payload = events.DBEventPayload(context, resource_id=trunk_id,
                                             states=(trunk,))
             registry.publish(resources.TRUNK, events.PRECOMMIT_DELETE,
                              self, payload=payload)
         else:
             LOG.info('Trunk driver does not consider trunk %s '
                      'untrunkable', trunk_id)
             raise trunk_exc.TrunkInUse(trunk_id=trunk_id)
     registry.publish(resources.TRUNK, events.AFTER_DELETE, self,
                      payload=events.DBEventPayload(
                          context, resource_id=trunk_id,
                          states=(trunk,)))
Пример #4
0
 def delete_trunk(self, context, trunk_id):
     """Delete the specified trunk."""
     with db_api.autonested_transaction(context.session):
         trunk = self._get_trunk(context, trunk_id)
         rules.trunk_can_be_managed(context, trunk)
         trunk_port_validator = rules.TrunkPortValidator(trunk.port_id)
         if not trunk_port_validator.is_bound(context):
             trunk.delete()
             payload = callbacks.TrunkPayload(context,
                                              trunk_id,
                                              original_trunk=trunk)
             registry.notify(constants.TRUNK,
                             events.PRECOMMIT_DELETE,
                             self,
                             payload=payload)
         else:
             raise trunk_exc.TrunkInUse(trunk_id=trunk_id)
     registry.notify(constants.TRUNK,
                     events.AFTER_DELETE,
                     self,
                     payload=payload)