Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@ public interface UsageNetworksDao extends GenericDao<UsageNetworksVO, Long> {
void remove(long networkId, Date removed);

List<UsageNetworksVO> getUsageRecords(Long accountId, Date startDate, Date endDate);

List<UsageNetworksVO> listAll(long networkId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@
// under the License.
package com.cloud.usage.dao;

import com.cloud.network.Network;
import com.cloud.usage.UsageNetworksVO;
import com.cloud.utils.DateUtil;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.TransactionLegacy;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
Expand All @@ -39,6 +40,14 @@
" account_id = ? AND ((removed IS NULL AND created <= ?) OR (created BETWEEN ? AND ?) OR (removed BETWEEN ? AND ?) " +
" OR ((created <= ?) AND (removed >= ?)))";

private SearchBuilder<UsageNetworksVO> usageNetworksSearch;

@PostConstruct
public void init() {
usageNetworksSearch = createSearchBuilder();
usageNetworksSearch.and("networkId", usageNetworksSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
usageNetworksSearch.done();
}

Check warning on line 50 in engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java#L46-L50

Added lines #L46 - L50 were not covered by tests

@Override
public void update(long networkId, long newNetworkOffering, String state) {
Expand Down Expand Up @@ -68,11 +77,10 @@
SearchCriteria<UsageNetworksVO> sc = this.createSearchCriteria();
sc.addAnd("networkId", SearchCriteria.Op.EQ, networkId);
sc.addAnd("removed", SearchCriteria.Op.NULL);
UsageNetworksVO vo = findOneBy(sc);
if (vo != null) {
vo.setRemoved(removed);
vo.setState(Network.State.Destroy.name());
update(vo.getId(), vo);
List<UsageNetworksVO> usageNetworksVOs = listBy(sc);

Check warning on line 80 in engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java#L80

Added line #L80 was not covered by tests
for (UsageNetworksVO entry : usageNetworksVOs) {
entry.setRemoved(removed);
update(entry.getId(), entry);

Check warning on line 83 in engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java#L82-L83

Added lines #L82 - L83 were not covered by tests
}
} catch (final Exception e) {
txn.rollback();
Expand Down Expand Up @@ -131,4 +139,11 @@

return usageRecords;
}

@Override
public List<UsageNetworksVO> listAll(long networkId) {
SearchCriteria<UsageNetworksVO> sc = usageNetworksSearch.create();
sc.setParameters("networkId", networkId);
return listBy(sc);
}

Check warning on line 148 in engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java#L144-L148

Added lines #L144 - L148 were not covered by tests
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@

public interface UsageVpcDao extends GenericDao<UsageVpcVO, Long> {
void update(UsageVpcVO usage);

void remove(long vpcId, Date removed);

List<UsageVpcVO> getUsageRecords(Long accountId, Date startDate, Date endDate);

List<UsageVpcVO> listAll(long vpcId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@
// under the License.
package com.cloud.usage.dao;

import com.cloud.network.vpc.Vpc;
import com.cloud.usage.UsageVpcVO;
import com.cloud.utils.DateUtil;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.TransactionLegacy;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
Expand All @@ -39,6 +40,15 @@
" account_id = ? AND ((removed IS NULL AND created <= ?) OR (created BETWEEN ? AND ?) OR (removed BETWEEN ? AND ?) " +
" OR ((created <= ?) AND (removed >= ?)))";

private SearchBuilder<UsageVpcVO> usageVpcSearch;

@PostConstruct
public void init() {
usageVpcSearch = createSearchBuilder();
usageVpcSearch.and("vpcId", usageVpcSearch.entity().getVpcId(), SearchCriteria.Op.EQ);
usageVpcSearch.done();
}

Check warning on line 50 in engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java#L46-L50

Added lines #L46 - L50 were not covered by tests

@Override
public void update(UsageVpcVO usage) {
TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB);
Expand Down Expand Up @@ -66,11 +76,10 @@
SearchCriteria<UsageVpcVO> sc = this.createSearchCriteria();
sc.addAnd("vpcId", SearchCriteria.Op.EQ, vpcId);
sc.addAnd("removed", SearchCriteria.Op.NULL);
UsageVpcVO vo = findOneBy(sc);
if (vo != null) {
vo.setRemoved(removed);
vo.setState(Vpc.State.Inactive.name());
update(vo.getId(), vo);
List<UsageVpcVO> usageVpcVOs = listBy(sc);

Check warning on line 79 in engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java#L79

Added line #L79 was not covered by tests
for (UsageVpcVO entry : usageVpcVOs) {
entry.setRemoved(removed);
update(entry.getId(), entry);

Check warning on line 82 in engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java#L81-L82

Added lines #L81 - L82 were not covered by tests
}
} catch (final Exception e) {
txn.rollback();
Expand Down Expand Up @@ -128,4 +137,11 @@

return usageRecords;
}

@Override
public List<UsageVpcVO> listAll(long vpcId) {
SearchCriteria<UsageVpcVO> sc = usageVpcSearch.create();
sc.setParameters("vpcId", vpcId);
return listBy(sc);
}

Check warning on line 146 in engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java#L142-L146

Added lines #L142 - L146 were not covered by tests
}
38 changes: 30 additions & 8 deletions usage/src/main/java/com/cloud/usage/UsageManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -1540,7 +1540,7 @@
//For volumes which are 'attached' successfully, set the 'deleted' column in the usage_storage table,
//so that the secondary storage should stop accounting and only primary will be accounted.
SearchCriteria<UsageStorageVO> sc = _usageStorageDao.createSearchCriteria();
sc.addAnd("id", SearchCriteria.Op.EQ, volId);
sc.addAnd("entityId", SearchCriteria.Op.EQ, volId);

Check warning on line 1543 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L1543

Added line #L1543 was not covered by tests
sc.addAnd("storageType", SearchCriteria.Op.EQ, StorageTypes.VOLUME);
List<UsageStorageVO> volumesVOs = _usageStorageDao.search(sc, null);
if (volumesVOs != null) {
Expand Down Expand Up @@ -1595,7 +1595,8 @@
//For Upload event add an entry to the usage_storage table.
SearchCriteria<UsageStorageVO> sc = _usageStorageDao.createSearchCriteria();
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
sc.addAnd("id", SearchCriteria.Op.EQ, volId);
sc.addAnd("entityId", SearchCriteria.Op.EQ, volId);
sc.addAnd("storageType", SearchCriteria.Op.EQ, StorageTypes.VOLUME);

Check warning on line 1599 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L1598-L1599

Added lines #L1598 - L1599 were not covered by tests
sc.addAnd("deleted", SearchCriteria.Op.NULL);
List<UsageStorageVO> volumesVOs = _usageStorageDao.search(sc, null);

Expand Down Expand Up @@ -1772,7 +1773,7 @@
} else if (EventTypes.EVENT_LOAD_BALANCER_DELETE.equals(event.getType())) {
SearchCriteria<UsageLoadBalancerPolicyVO> sc = _usageLoadBalancerPolicyDao.createSearchCriteria();
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
sc.addAnd("id", SearchCriteria.Op.EQ, id);
sc.addAnd("lbId", SearchCriteria.Op.EQ, id);

Check warning on line 1776 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L1776

Added line #L1776 was not covered by tests
sc.addAnd("deleted", SearchCriteria.Op.NULL);
List<UsageLoadBalancerPolicyVO> lbVOs = _usageLoadBalancerPolicyDao.search(sc, null);
if (lbVOs.size() > 1) {
Expand Down Expand Up @@ -1806,7 +1807,7 @@
} else if (EventTypes.EVENT_NET_RULE_DELETE.equals(event.getType())) {
SearchCriteria<UsagePortForwardingRuleVO> sc = _usagePortForwardingRuleDao.createSearchCriteria();
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
sc.addAnd("id", SearchCriteria.Op.EQ, id);
sc.addAnd("pfId", SearchCriteria.Op.EQ, id);

Check warning on line 1810 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L1810

Added line #L1810 was not covered by tests
sc.addAnd("deleted", SearchCriteria.Op.NULL);
List<UsagePortForwardingRuleVO> pfVOs = _usagePortForwardingRuleDao.search(sc, null);
if (pfVOs.size() > 1) {
Expand Down Expand Up @@ -2104,7 +2105,7 @@
} else if (EventTypes.EVENT_VM_SNAPSHOT_OFF_PRIMARY.equals(event.getType())) {
QueryBuilder<UsageSnapshotOnPrimaryVO> sc = QueryBuilder.create(UsageSnapshotOnPrimaryVO.class);
sc.and(sc.entity().getAccountId(), SearchCriteria.Op.EQ, event.getAccountId());
sc.and(sc.entity().getId(), SearchCriteria.Op.EQ, vmId);
sc.and(sc.entity().getVmId(), SearchCriteria.Op.EQ, vmId);

Check warning on line 2108 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2108

Added line #L2108 was not covered by tests
sc.and(sc.entity().getName(), SearchCriteria.Op.EQ, name);
sc.and(sc.entity().getDeleted(), SearchCriteria.Op.NULL);
List<UsageSnapshotOnPrimaryVO> vmsnaps = sc.list();
Expand Down Expand Up @@ -2142,15 +2143,29 @@
}

private void handleNetworkEvent(UsageEventVO event) {
long networkId = event.getResourceId();

Check warning on line 2146 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2146

Added line #L2146 was not covered by tests
Account account = _accountDao.findByIdIncludingRemoved(event.getAccountId());
long domainId = account.getDomainId();
if (EventTypes.EVENT_NETWORK_DELETE.equals(event.getType())) {
usageNetworksDao.remove(event.getResourceId(), event.getCreateDate());
usageNetworksDao.remove(networkId, event.getCreateDate());

Check warning on line 2150 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2150

Added line #L2150 was not covered by tests
} else if (EventTypes.EVENT_NETWORK_CREATE.equals(event.getType())) {
UsageNetworksVO usageNetworksVO = new UsageNetworksVO(event.getResourceId(), event.getOfferingId(), event.getZoneId(), event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null);
List<UsageNetworksVO> entries = usageNetworksDao.listAll(networkId);

Check warning on line 2152 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2152

Added line #L2152 was not covered by tests
if (!entries.isEmpty()) {
s_logger.warn(String.format("Received a NETWORK.CREATE event for a network [%s] that already has helper entries; " +
"therefore, we will not create a new one.", networkId));
return;

Check warning on line 2156 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2154-L2156

Added lines #L2154 - L2156 were not covered by tests
}
s_logger.debug(String.format("Creating a helper entry for network [%s].", networkId));
UsageNetworksVO usageNetworksVO = new UsageNetworksVO(networkId, event.getOfferingId(), event.getZoneId(),
event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null);

Check warning on line 2160 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2158-L2160

Added lines #L2158 - L2160 were not covered by tests
usageNetworksDao.persist(usageNetworksVO);
} else if (EventTypes.EVENT_NETWORK_UPDATE.equals(event.getType())) {
usageNetworksDao.update(event.getResourceId(), event.getOfferingId(), event.getResourceType());
s_logger.debug(String.format("Marking previous helper entries of network [%s] as removed.", networkId));
usageNetworksDao.remove(networkId, event.getCreateDate());
s_logger.debug(String.format("Creating an updated helper entry for network [%s].", networkId));
UsageNetworksVO usageNetworksVO = new UsageNetworksVO(networkId, event.getOfferingId(), event.getZoneId(),
event.getAccountId(), domainId, event.getResourceType(), event.getCreateDate(), null);
usageNetworksDao.persist(usageNetworksVO);

Check warning on line 2168 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2163-L2168

Added lines #L2163 - L2168 were not covered by tests
} else {
s_logger.error(String.format("Unknown event type [%s] in Networks event parser. Skipping it.", event.getType()));
}
Expand All @@ -2162,6 +2177,13 @@
if (EventTypes.EVENT_VPC_DELETE.equals(event.getType())) {
usageVpcDao.remove(event.getResourceId(), event.getCreateDate());
} else if (EventTypes.EVENT_VPC_CREATE.equals(event.getType())) {
List<UsageVpcVO> entries = usageVpcDao.listAll(event.getResourceId());

Check warning on line 2180 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2180

Added line #L2180 was not covered by tests
if (!entries.isEmpty()) {
s_logger.warn(String.format("Active helper entries already exist for VPC [%s]; therefore, we will not create a new one.",
event.getResourceId()));
return;

Check warning on line 2184 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2182-L2184

Added lines #L2182 - L2184 were not covered by tests
}
s_logger.debug(String.format("Creating a helper entry for VPC [%s].", event.getResourceId()));

Check warning on line 2186 in usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java#L2186

Added line #L2186 was not covered by tests
UsageVpcVO usageVPCVO = new UsageVpcVO(event.getResourceId(), event.getZoneId(), event.getAccountId(), domainId, Vpc.State.Enabled.name(), event.getCreateDate(), null);
usageVpcDao.persist(usageVPCVO);
} else {
Expand Down
Loading