@@ -2151,39 +2151,90 @@ private void createBackupEvent(final UsageEventVO event) {
21512151 }
21522152
21532153 private void handleNetworkEvent (UsageEventVO event ) {
2154+ String eventType = event .getType ();
2155+ if (EventTypes .EVENT_NETWORK_DELETE .equals (eventType )) {
2156+ removeNetworkHelperEntry (event );
2157+ } else if (EventTypes .EVENT_NETWORK_CREATE .equals (eventType )) {
2158+ createNetworkHelperEntry (event );
2159+ } else if (EventTypes .EVENT_NETWORK_UPDATE .equals (eventType )) {
2160+ updateNetworkHelperEntry (event );
2161+ } else {
2162+ logger .error (String .format ("Unknown event type [%s] in Networks event parser. Skipping it." , eventType ));
2163+ }
2164+ }
2165+
2166+ private void removeNetworkHelperEntry (UsageEventVO event ) {
2167+ long networkId = event .getResourceId ();
2168+ logger .debug (String .format ("Removing helper entries of network [%s]." , networkId ));
2169+ usageNetworksDao .remove (networkId , event .getCreateDate ());
2170+ }
2171+
2172+ private void createNetworkHelperEntry (UsageEventVO event ) {
2173+ long networkId = event .getResourceId ();
21542174 Account account = _accountDao .findByIdIncludingRemoved (event .getAccountId ());
21552175 long domainId = account .getDomainId ();
2156- if (EventTypes .EVENT_NETWORK_DELETE .equals (event .getType ())) {
2157- usageNetworksDao .remove (event .getResourceId (), event .getCreateDate ());
2158- } else if (EventTypes .EVENT_NETWORK_CREATE .equals (event .getType ())) {
2159- logger .debug ("Marking existing helper entries for network [{}] as removed." , event .getResourceId ());
2160- usageNetworksDao .remove (event .getResourceId (), event .getCreateDate ());
2161- logger .debug ("Creating a helper entry for network [{}]." , event .getResourceId ());
2162- UsageNetworksVO usageNetworksVO = new UsageNetworksVO (event .getResourceId (), event .getOfferingId (), event .getZoneId (), event .getAccountId (), domainId , Network .State .Allocated .name (), event .getCreateDate (), null );
2163- usageNetworksDao .persist (usageNetworksVO );
2164- } else if (EventTypes .EVENT_NETWORK_UPDATE .equals (event .getType ())) {
2165- usageNetworksDao .update (event .getResourceId (), event .getOfferingId (), event .getResourceType ());
2166- } else {
2167- logger .error ("Unknown event type [{}] in Networks event parser. Skipping it." , event .getType ());
2176+
2177+ List <UsageNetworksVO > entries = usageNetworksDao .listAll (networkId );
2178+ if (!entries .isEmpty ()) {
2179+ logger .warn (String .format ("Received a NETWORK.CREATE event for a network [%s] that already has helper entries; " +
2180+ "therefore, we will not create a new one." , networkId ));
2181+ return ;
21682182 }
2183+
2184+ logger .debug (String .format ("Creating a helper entry for network [%s]." , networkId ));
2185+ UsageNetworksVO usageNetworksVO = new UsageNetworksVO (networkId , event .getOfferingId (), event .getZoneId (),
2186+ event .getAccountId (), domainId , Network .State .Allocated .name (), event .getCreateDate (), null );
2187+ usageNetworksDao .persist (usageNetworksVO );
21692188 }
21702189
2171- private void handleVpcEvent (UsageEventVO event ) {
2190+ private void updateNetworkHelperEntry (UsageEventVO event ) {
2191+ long networkId = event .getResourceId ();
21722192 Account account = _accountDao .findByIdIncludingRemoved (event .getAccountId ());
21732193 long domainId = account .getDomainId ();
2174- if (EventTypes .EVENT_VPC_DELETE .equals (event .getType ())) {
2175- usageVpcDao .remove (event .getResourceId (), event .getCreateDate ());
2176- } else if (EventTypes .EVENT_VPC_CREATE .equals (event .getType ())) {
2177- logger .debug ("Marking existing helper entries for VPC [{}] as removed." , event .getResourceId ());
2178- usageVpcDao .remove (event .getResourceId (), event .getCreateDate ());
2179- logger .debug ("Creating a helper entry for VPC [{}]." , event .getResourceId ());
2180- UsageVpcVO usageVPCVO = new UsageVpcVO (event .getResourceId (), event .getZoneId (), event .getAccountId (), domainId , Vpc .State .Enabled .name (), event .getCreateDate (), null );
2181- usageVpcDao .persist (usageVPCVO );
2194+
2195+ logger .debug (String .format ("Marking previous helper entries of network [%s] as removed." , networkId ));
2196+ usageNetworksDao .remove (networkId , event .getCreateDate ());
2197+
2198+ logger .debug (String .format ("Creating an updated helper entry for network [%s]." , networkId ));
2199+ UsageNetworksVO usageNetworksVO = new UsageNetworksVO (networkId , event .getOfferingId (), event .getZoneId (),
2200+ event .getAccountId (), domainId , event .getResourceType (), event .getCreateDate (), null );
2201+ usageNetworksDao .persist (usageNetworksVO );
2202+ }
2203+
2204+ private void handleVpcEvent (UsageEventVO event ) {
2205+ String eventType = event .getType ();
2206+ if (EventTypes .EVENT_VPC_DELETE .equals (eventType )) {
2207+ removeVpcHelperEntry (event );
2208+ } else if (EventTypes .EVENT_VPC_CREATE .equals (eventType )) {
2209+ createVpcHelperEntry (event );
21822210 } else {
2183- logger .error ("Unknown event type [{} ] in VPC event parser. Skipping it." , event . getType ( ));
2211+ logger .error (String . format ( "Unknown event type [%s ] in VPC event parser. Skipping it." , eventType ));
21842212 }
21852213 }
21862214
2215+ private void removeVpcHelperEntry (UsageEventVO event ) {
2216+ long vpcId = event .getResourceId ();
2217+ logger .debug (String .format ("Removing helper entries of VPC [%s]." , vpcId ));
2218+ usageVpcDao .remove (vpcId , event .getCreateDate ());
2219+ }
2220+
2221+ private void createVpcHelperEntry (UsageEventVO event ) {
2222+ long vpcId = event .getResourceId ();
2223+ Account account = _accountDao .findByIdIncludingRemoved (event .getAccountId ());
2224+ long domainId = account .getDomainId ();
2225+
2226+ List <UsageVpcVO > entries = usageVpcDao .listAll (vpcId );
2227+ if (!entries .isEmpty ()) {
2228+ logger .warn (String .format ("Active helper entries already exist for VPC [%s]; therefore, we will not create a new one." ,
2229+ vpcId ));
2230+ return ;
2231+ }
2232+
2233+ logger .debug (String .format ("Creating a helper entry for VPC [%s]." , vpcId ));
2234+ UsageVpcVO usageVPCVO = new UsageVpcVO (vpcId , event .getZoneId (), event .getAccountId (), domainId , Vpc .State .Enabled .name (), event .getCreateDate (), null );
2235+ usageVpcDao .persist (usageVPCVO );
2236+ }
2237+
21872238 private class Heartbeat extends ManagedContextRunnable {
21882239 @ Override
21892240 protected void runInContext () {
0 commit comments