Пример #1
0
  /**
   * Manages the counters for all kind of resources available for OpenStack operations
   *
   * @param connection
   * @param freeCounterBean
   * @param resourceBean
   * @param ifIds2
   * @return
   * @throws SQLException
   */
  private boolean manageCounter(
      Connection connection,
      FreeCounterBean freeCounterBean,
      Object resourceBean,
      List<Integer> ifIds)
      throws SQLException {
    boolean result = false;
    final FreeCounterDao freeCounterDao = new FreeCounterDao();

    /*
     * delete child counters in case of parent entity is deleted
     */
    if (freeCounterBean.getResourceId().equalsIgnoreCase(VtnServiceOpenStackConsts.TENANT_RES_ID)) {
      FreeCounterBean localBean = new FreeCounterBean();
      localBean.setVtnName(((VtnBean) resourceBean).getVtnName());
      freeCounterDao.deleteVtnChilds(connection, localBean);
    } else if (freeCounterBean
            .getResourceId()
            .equalsIgnoreCase(VtnServiceOpenStackConsts.NETWORK_RES_ID)
        || freeCounterBean
            .getResourceId()
            .equalsIgnoreCase(VtnServiceOpenStackConsts.ROUTER_RES_ID)) {
      if (ifIds.size() > 0) {
        // insert unused counter into os_free_resource_counter table
        FreeCounterBean localBean = new FreeCounterBean();
        localBean.setResourceId(VtnServiceOpenStackConsts.PORT);
        localBean.setVtnName(freeCounterBean.getVtnName());
        for (int i = 0; i < ifIds.size(); i++) {
          localBean.setResourceCounter(ifIds.get(i));
          freeCounterDao.insertCounter(connection, localBean);
        }
      }
    }

    /*
     * if resource counter is 0, then no need to insert resource counter in
     * pool
     */
    if (freeCounterBean.getResourceCounter() == 0) {
      LOG.debug(
          "Resource counter is not auto-generated, insertion not required in os_res_counter table.");
      result = true;
    } else {
      LOG.debug("Resource is auto-generated, insertion required in os_res_counter table.");
      result = freeCounterDao.insertCounter(connection, freeCounterBean) == 1;
    }
    return result;
  }