コード例 #1
0
ファイル: ImageBase.java プロジェクト: rechen/zstack
 private void returnBackupStorageCapacity(final String bsUuid, final long size) {
   ReturnBackupStorageMsg msg = new ReturnBackupStorageMsg();
   msg.setBackupStorageUuid(bsUuid);
   msg.setSize(size);
   bus.makeTargetServiceIdByResourceUuid(msg, BackupStorageConstant.SERVICE_ID, bsUuid);
   bus.send(
       msg,
       new CloudBusCallBack() {
         @Override
         public void run(MessageReply reply) {
           if (!reply.isSuccess()) {
             // TODO
             logger.warn(
                 String.format(
                     "failed to return capacity[%s] to the backup storage[uuid:%s]",
                     size, bsUuid));
           }
         }
       });
 }
コード例 #2
0
  @Transactional
  private void handle(ReturnBackupStorageMsg msg) {
    self =
        dbf.getEntityManager()
            .find(BackupStorageVO.class, self.getUuid(), LockModeType.PESSIMISTIC_WRITE);
    long availSize = self.getAvailableCapacity() + msg.getSize();
    if (availSize > self.getTotalCapacity()) {
      availSize = self.getTotalCapacity();
    }

    self.setAvailableCapacity(availSize);
    dbf.getEntityManager().merge(self);
    bus.reply(msg, new ReturnBackupStorageReply());
  }