mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
This reverts commit cd7218e241a8ac93df7a73f938320487aa526de6, reversing changes made to f5a7395cc2ec37364a2e210eac60720e9b327451. Reason for Revert: noredist build failed with the below error: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project cloud-plugin-hypervisor-vmware: Compilation failure [ERROR] /home/jenkins/acs/workspace/build-master-noredist/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java:[484,12] error: non-static variable logger cannot be referenced from a static context [ERROR] -> [Help 1] even the normal build is broken as reported by @koushik-das on dev list http://markmail.org/message/nngimssuzkj5gpbz
136 lines
6.2 KiB
Java
136 lines
6.2 KiB
Java
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
package com.cloud.usage.dao;
|
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.ejb.Local;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import com.cloud.usage.UsageNetworkVO;
|
|
import com.cloud.utils.db.GenericDaoBase;
|
|
import com.cloud.utils.db.TransactionLegacy;
|
|
import com.cloud.utils.exception.CloudRuntimeException;
|
|
|
|
@Component
|
|
@Local(value = {UsageNetworkDao.class})
|
|
public class UsageNetworkDaoImpl extends GenericDaoBase<UsageNetworkVO, Long> implements UsageNetworkDao {
|
|
private static final Logger s_logger = Logger.getLogger(UsageVMInstanceDaoImpl.class.getName());
|
|
private static final String SELECT_LATEST_STATS =
|
|
"SELECT u.account_id, u.zone_id, u.host_id, u.host_type, u.network_id, u.bytes_sent, u.bytes_received, u.agg_bytes_received, u.agg_bytes_sent, u.event_time_millis "
|
|
+ "FROM cloud_usage.usage_network u INNER JOIN (SELECT netusage.account_id as acct_id, netusage.zone_id as z_id, max(netusage.event_time_millis) as max_date "
|
|
+ "FROM cloud_usage.usage_network netusage " + "GROUP BY netusage.account_id, netusage.zone_id "
|
|
+ ") joinnet on u.account_id = joinnet.acct_id and u.zone_id = joinnet.z_id and u.event_time_millis = joinnet.max_date";
|
|
private static final String DELETE_OLD_STATS = "DELETE FROM cloud_usage.usage_network WHERE event_time_millis < ?";
|
|
|
|
private static final String INSERT_USAGE_NETWORK =
|
|
"INSERT INTO cloud_usage.usage_network (account_id, zone_id, host_id, host_type, network_id, bytes_sent, bytes_received, agg_bytes_received, agg_bytes_sent, event_time_millis) VALUES (?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
public UsageNetworkDaoImpl() {
|
|
}
|
|
|
|
@Override
|
|
public Map<String, UsageNetworkVO> getRecentNetworkStats() {
|
|
TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB);
|
|
String sql = SELECT_LATEST_STATS;
|
|
PreparedStatement pstmt = null;
|
|
try {
|
|
pstmt = txn.prepareAutoCloseStatement(sql);
|
|
ResultSet rs = pstmt.executeQuery();
|
|
Map<String, UsageNetworkVO> returnMap = new HashMap<String, UsageNetworkVO>();
|
|
while (rs.next()) {
|
|
long accountId = rs.getLong(1);
|
|
long zoneId = rs.getLong(2);
|
|
Long hostId = rs.getLong(3);
|
|
String hostType = rs.getString(4);
|
|
Long networkId = rs.getLong(5);
|
|
long bytesSent = rs.getLong(6);
|
|
long bytesReceived = rs.getLong(7);
|
|
long aggBytesReceived = rs.getLong(8);
|
|
long aggBytesSent = rs.getLong(9);
|
|
long eventTimeMillis = rs.getLong(10);
|
|
if (hostId != 0) {
|
|
returnMap.put(zoneId + "-" + accountId + "-Host-" + hostId, new UsageNetworkVO(accountId, zoneId, hostId, hostType, networkId, bytesSent,
|
|
bytesReceived, aggBytesReceived, aggBytesSent, eventTimeMillis));
|
|
} else {
|
|
returnMap.put(zoneId + "-" + accountId, new UsageNetworkVO(accountId, zoneId, hostId, hostType, networkId, bytesSent, bytesReceived,
|
|
aggBytesReceived, aggBytesSent, eventTimeMillis));
|
|
}
|
|
}
|
|
return returnMap;
|
|
} catch (Exception ex) {
|
|
s_logger.error("error getting recent usage network stats", ex);
|
|
} finally {
|
|
txn.close();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void deleteOldStats(long maxEventTime) {
|
|
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
|
String sql = DELETE_OLD_STATS;
|
|
PreparedStatement pstmt = null;
|
|
try {
|
|
txn.start();
|
|
pstmt = txn.prepareAutoCloseStatement(sql);
|
|
pstmt.setLong(1, maxEventTime);
|
|
pstmt.executeUpdate();
|
|
txn.commit();
|
|
} catch (Exception ex) {
|
|
txn.rollback();
|
|
s_logger.error("error deleting old usage network stats", ex);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void saveUsageNetworks(List<UsageNetworkVO> usageNetworks) {
|
|
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
|
try {
|
|
txn.start();
|
|
String sql = INSERT_USAGE_NETWORK;
|
|
PreparedStatement pstmt = null;
|
|
pstmt = txn.prepareAutoCloseStatement(sql); // in reality I just want CLOUD_USAGE dataSource connection
|
|
for (UsageNetworkVO usageNetwork : usageNetworks) {
|
|
pstmt.setLong(1, usageNetwork.getAccountId());
|
|
pstmt.setLong(2, usageNetwork.getZoneId());
|
|
pstmt.setLong(3, usageNetwork.getHostId());
|
|
pstmt.setString(4, usageNetwork.getHostType());
|
|
pstmt.setLong(5, usageNetwork.getNetworkId());
|
|
pstmt.setLong(6, usageNetwork.getBytesSent());
|
|
pstmt.setLong(7, usageNetwork.getBytesReceived());
|
|
pstmt.setLong(8, usageNetwork.getAggBytesReceived());
|
|
pstmt.setLong(9, usageNetwork.getAggBytesSent());
|
|
pstmt.setLong(10, usageNetwork.getEventTimeMillis());
|
|
pstmt.addBatch();
|
|
}
|
|
pstmt.executeBatch();
|
|
txn.commit();
|
|
} catch (Exception ex) {
|
|
txn.rollback();
|
|
s_logger.error("error saving usage_network to cloud_usage db", ex);
|
|
throw new CloudRuntimeException(ex.getMessage());
|
|
}
|
|
}
|
|
}
|