Skip to content

Commit e443959

Browse files
committed
Add offering preset variable to Network and VPC tariffs
1 parent e6c7a71 commit e443959

File tree

5 files changed

+94
-3
lines changed

5 files changed

+94
-3
lines changed

engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-common-daos-between-management-and-usage-context.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,6 @@
7373
<bean id="volumeDaoImpl" class="com.cloud.storage.dao.VolumeDaoImpl" />
7474
<bean id="reservationDao" class="org.apache.cloudstack.reservation.dao.ReservationDaoImpl" />
7575
<bean id="backupOfferingDaoImpl" class="org.apache.cloudstack.backup.dao.BackupOfferingDaoImpl" />
76+
<bean id="vpcOfferingDaoImpl" class="com.cloud.network.vpc.dao.VpcOfferingDaoImpl" />
77+
<bean id="vpcOfferingDetailsDaoImpl" class="com.cloud.network.vpc.dao.VpcOfferingDetailsDaoImpl"/>
7678
</beans>

engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,11 @@
236236
<bean id="volumeStatsDaoImpl" class="com.cloud.storage.dao.VolumeStatsDaoImpl" />
237237
<bean id="vpcDaoImpl" class="com.cloud.network.vpc.dao.VpcDaoImpl" />
238238
<bean id="vpcGatewayDaoImpl" class="com.cloud.network.vpc.dao.VpcGatewayDaoImpl" />
239-
<bean id="vpcOfferingDaoImpl" class="com.cloud.network.vpc.dao.VpcOfferingDaoImpl" />
240239
<bean id="vpcOfferingJoinDaoImpl" class="com.cloud.api.query.dao.VpcOfferingJoinDaoImpl" />
241240
<bean id="vpcOfferingServiceMapDaoImpl" class="com.cloud.network.vpc.dao.VpcOfferingServiceMapDaoImpl" />
242241
<bean id="vpcServiceMapDaoImpl" class="com.cloud.network.vpc.dao.VpcServiceMapDaoImpl" />
243242
<bean id="vpnUserDaoImpl" class="com.cloud.network.dao.VpnUserDaoImpl" />
244243
<bean id="applicationLbRuleDaoImpl" class="org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDaoImpl" />
245-
<bean id="vpcOfferingDetailsDaoImpl" class="com.cloud.network.vpc.dao.VpcOfferingDetailsDaoImpl"/>
246244
<bean id="networkDetailsDaoImpl" class="com.cloud.network.dao.NetworkDetailsDaoImpl" />
247245
<bean id="tungstenGuestNetworkIpAddressDaoImpl" class="com.cloud.network.dao.TungstenGuestNetworkIpAddressDaoImpl"/>
248246
<bean id="tungstenSecurityGroupRuleDaoImpl" class="com.cloud.network.security.dao.TungstenSecurityGroupRuleDaoImpl"/>

framework/quota/src/main/java/org/apache/cloudstack/quota/activationrule/presetvariables/PresetVariableHelper.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@
2828
import com.cloud.dc.ClusterDetailsDao;
2929
import com.cloud.dc.ClusterDetailsVO;
3030
import com.cloud.host.HostTagVO;
31+
import com.cloud.hypervisor.Hypervisor;
3132
import com.cloud.network.dao.NetworkVO;
33+
import com.cloud.network.vpc.VpcOfferingVO;
3234
import com.cloud.network.vpc.VpcVO;
3335
import javax.inject.Inject;
3436

35-
import com.cloud.hypervisor.Hypervisor;
3637
import com.cloud.storage.StoragePoolTagVO;
3738
import org.apache.cloudstack.acl.RoleVO;
3839
import org.apache.cloudstack.acl.dao.RoleDao;
@@ -66,6 +67,7 @@
6667
import com.cloud.host.HostVO;
6768
import com.cloud.host.dao.HostDao;
6869
import com.cloud.host.dao.HostTagsDao;
70+
import com.cloud.network.vpc.dao.VpcOfferingDao;
6971
import com.cloud.offerings.NetworkOfferingVO;
7072
import com.cloud.offerings.dao.NetworkOfferingDao;
7173
import com.cloud.server.ResourceTag;
@@ -191,6 +193,9 @@ public class PresetVariableHelper {
191193
@Inject
192194
ClusterDetailsDao clusterDetailsDao;
193195

196+
@Inject
197+
VpcOfferingDao vpcOfferingDao;
198+
194199
protected boolean backupSnapshotAfterTakingSnapshot = SnapshotInfo.BackupSnapshotAfterTakingSnapshot.value();
195200

196201
private List<Integer> runningAndAllocatedVmUsageTypes = Arrays.asList(UsageTypes.RUNNING_VM, UsageTypes.ALLOCATED_VM);
@@ -778,6 +783,19 @@ protected void loadPresetVariableValueForNetwork(UsageVO usageRecord, Value valu
778783
value.setId(network.getUuid());
779784
value.setName(network.getName());
780785
value.setState(usageRecord.getState());
786+
787+
value.setNetworkOffering(getPresetVariableValueNetworkOffering(network.getNetworkOfferingId()));
788+
}
789+
790+
protected GenericPresetVariable getPresetVariableValueNetworkOffering(Long networkOfferingId) {
791+
NetworkOfferingVO networkOfferingVo = networkOfferingDao.findByIdIncludingRemoved(networkOfferingId);
792+
validateIfObjectIsNull(networkOfferingVo, networkOfferingId, "network offering");
793+
794+
GenericPresetVariable networkOffering = new GenericPresetVariable();
795+
networkOffering.setId(networkOfferingVo.getUuid());
796+
networkOffering.setName(networkOfferingVo.getName());
797+
798+
return networkOffering;
781799
}
782800

783801
protected void loadPresetVariableValueForVpc(UsageVO usageRecord, Value value) {
@@ -793,6 +811,18 @@ protected void loadPresetVariableValueForVpc(UsageVO usageRecord, Value value) {
793811

794812
value.setId(vpc.getUuid());
795813
value.setName(vpc.getName());
814+
value.setVpcOffering(getPresetVariableValueVpcOffering(vpc.getVpcOfferingId()));
815+
}
816+
817+
protected GenericPresetVariable getPresetVariableValueVpcOffering(long vpcOfferingId) {
818+
VpcOfferingVO vpcOfferingVo = vpcOfferingDao.findByIdIncludingRemoved(vpcOfferingId);
819+
validateIfObjectIsNull(vpcOfferingVo, vpcOfferingId, "vpc offering");
820+
821+
GenericPresetVariable vpcOffering = new GenericPresetVariable();
822+
vpcOffering.setId(vpcOfferingVo.getUuid());
823+
vpcOffering.setName(vpcOfferingVo.getName());
824+
825+
return vpcOffering;
796826
}
797827

798828
/**

framework/quota/src/main/java/org/apache/cloudstack/quota/activationrule/presetvariables/Value.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,12 @@ public class Value extends GenericPresetVariable {
100100

101101
private String state;
102102

103+
@PresetVariableDefinition(description = "Network offering of the network.", supportedTypes = {QuotaTypes.NETWORK})
104+
private GenericPresetVariable networkOffering;
105+
106+
@PresetVariableDefinition(description = "VPC offering of the VPC.", supportedTypes = {QuotaTypes.VPC})
107+
private GenericPresetVariable vpcOffering;
108+
103109
public Host getHost() {
104110
return host;
105111
}
@@ -279,4 +285,22 @@ public void setState(String state) {
279285
this.state = state;
280286
fieldNamesToIncludeInToString.add("state");
281287
}
288+
289+
public GenericPresetVariable getNetworkOffering() {
290+
return networkOffering;
291+
}
292+
293+
public void setNetworkOffering(GenericPresetVariable networkOffering) {
294+
this.networkOffering = networkOffering;
295+
fieldNamesToIncludeInToString.add("networkOffering");
296+
}
297+
298+
public GenericPresetVariable getVpcOffering() {
299+
return vpcOffering;
300+
}
301+
302+
public void setVpcOffering(GenericPresetVariable vpcOffering) {
303+
this.vpcOffering = vpcOffering;
304+
fieldNamesToIncludeInToString.add("vpcOffering");
305+
}
282306
}

framework/quota/src/test/java/org/apache/cloudstack/quota/activationrule/presetvariables/PresetVariableHelperTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import com.cloud.dc.ClusterDetailsVO;
3232
import com.cloud.host.HostTagVO;
3333
import com.cloud.hypervisor.Hypervisor;
34+
import com.cloud.network.vpc.VpcOfferingVO;
35+
import com.cloud.network.vpc.dao.VpcOfferingDao;
3436
import com.cloud.storage.StoragePoolTagVO;
3537
import org.apache.cloudstack.acl.RoleType;
3638
import org.apache.cloudstack.acl.RoleVO;
@@ -188,6 +190,9 @@ public class PresetVariableHelperTest {
188190
@Mock
189191
BackupOfferingDao backupOfferingDaoMock;
190192

193+
@Mock
194+
VpcOfferingDao vpcOfferingDao;
195+
191196
List<Integer> runningAndAllocatedVmUsageTypes = Arrays.asList(UsageTypes.RUNNING_VM, UsageTypes.ALLOCATED_VM);
192197
List<Integer> templateAndIsoUsageTypes = Arrays.asList(UsageTypes.TEMPLATE, UsageTypes.ISO);
193198

@@ -1339,4 +1344,36 @@ public void testGetSnapshotImageStoreRefNotNull() {
13391344
Mockito.when(imageStoreDaoMock.findById(1L)).thenReturn(store);
13401345
Assert.assertNotNull(presetVariableHelperSpy.getSnapshotImageStoreRef(1L, 1L));
13411346
}
1347+
1348+
@Test
1349+
public void getPresetVariableValueNetworkOfferingTestSetValuesAndReturnObject() {
1350+
NetworkOfferingVO networkOfferingVoMock = Mockito.mock(NetworkOfferingVO.class);
1351+
Mockito.doReturn(networkOfferingVoMock).when(networkOfferingDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
1352+
mockMethodValidateIfObjectIsNull();
1353+
1354+
GenericPresetVariable expected = getGenericPresetVariableForTests();
1355+
Mockito.doReturn(expected.getId()).when(networkOfferingVoMock).getUuid();
1356+
Mockito.doReturn(expected.getName()).when(networkOfferingVoMock).getName();
1357+
1358+
GenericPresetVariable result = presetVariableHelperSpy.getPresetVariableValueNetworkOffering(1L);
1359+
1360+
assertPresetVariableIdAndName(expected, result);
1361+
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name"), result);
1362+
}
1363+
1364+
@Test
1365+
public void getPresetVariableValueVpcOfferingTestSetValuesAndReturnObject() {
1366+
VpcOfferingVO vpcOfferingVoMock = Mockito.mock(VpcOfferingVO.class);
1367+
Mockito.doReturn(vpcOfferingVoMock).when(vpcOfferingDao).findByIdIncludingRemoved(Mockito.anyLong());
1368+
mockMethodValidateIfObjectIsNull();
1369+
1370+
GenericPresetVariable expected = getGenericPresetVariableForTests();
1371+
Mockito.doReturn(expected.getId()).when(vpcOfferingVoMock).getUuid();
1372+
Mockito.doReturn(expected.getName()).when(vpcOfferingVoMock).getName();
1373+
1374+
GenericPresetVariable result = presetVariableHelperSpy.getPresetVariableValueVpcOffering(1L);
1375+
1376+
assertPresetVariableIdAndName(expected, result);
1377+
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name"), result);
1378+
}
13421379
}

0 commit comments

Comments
 (0)