Skip to content

Commit 4b89a45

Browse files
rootmurali-reddy
authored andcommitted
CLOUDSTACK-3272 Latest changes to add global configuration parameters to control the publishing of events on the message bus
1 parent 23c7a89 commit 4b89a45

14 files changed

Lines changed: 105 additions & 10 deletions

File tree

engine/components-api/src/com/cloud/event/UsageEventUtils.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.log4j.Logger;
2929
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3030

31+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
3132
import org.apache.cloudstack.framework.events.Event;
3233
import org.apache.cloudstack.framework.events.EventBus;
3334
import org.apache.cloudstack.framework.events.EventBusException;
@@ -46,13 +47,16 @@ public class UsageEventUtils {
4647
private static DataCenterDao s_dcDao;
4748
private static final Logger s_logger = Logger.getLogger(UsageEventUtils.class);
4849
protected static EventBus s_eventBus = null;
50+
protected static ConfigurationDao s_configDao;
4951

5052
@Inject
5153
UsageEventDao usageEventDao;
5254
@Inject
5355
AccountDao accountDao;
5456
@Inject
5557
DataCenterDao dcDao;
58+
@Inject
59+
ConfigurationDao configDao;
5660

5761
public UsageEventUtils() {
5862
}
@@ -62,6 +66,7 @@ void init() {
6266
s_usageEventDao = usageEventDao;
6367
s_accountDao = accountDao;
6468
s_dcDao = dcDao;
69+
s_configDao = configDao;
6570
}
6671

6772
public static void publishUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId,
@@ -161,7 +166,11 @@ public static void saveUsageEvent(String usageType, long accountId, long zoneId,
161166
}
162167

163168
private static void publishUsageEvent(String usageEventType, Long accountId, Long zoneId, String resourceType, String resourceUUID) {
164-
169+
String configKey = "publish.usage.events";
170+
String value = s_configDao.getValue(configKey);
171+
boolean configValue = Boolean.parseBoolean(value);
172+
if( !configValue)
173+
return;
165174
try {
166175
s_eventBus = ComponentContext.getComponent(EventBus.class);
167176
} catch (NoSuchBeanDefinitionException nbe) {

engine/components-api/src/com/cloud/network/NetworkStateListener.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.apache.log4j.Logger;
2828
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2929

30+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
3031
import org.apache.cloudstack.framework.events.EventBus;
3132
import org.apache.cloudstack.framework.events.EventBusException;
3233

@@ -44,14 +45,17 @@ public class NetworkStateListener implements StateListener<State, Event, Network
4445
protected UsageEventDao _usageEventDao;
4546
@Inject
4647
protected NetworkDao _networkDao;
48+
@Inject
49+
protected ConfigurationDao _configDao;
4750

4851
protected static EventBus s_eventBus = null;
4952

5053
private static final Logger s_logger = Logger.getLogger(NetworkStateListener.class);
5154

52-
public NetworkStateListener(UsageEventDao usageEventDao, NetworkDao networkDao) {
55+
public NetworkStateListener(UsageEventDao usageEventDao, NetworkDao networkDao, ConfigurationDao configDao) {
5356
_usageEventDao = usageEventDao;
5457
_networkDao = networkDao;
58+
_configDao = configDao;
5559
}
5660

5761
@Override
@@ -68,6 +72,11 @@ public boolean postStateTransitionEvent(State oldState, Event event, State newSt
6872

6973
private void pubishOnEventBus(String event, String status, Network vo, State oldState, State newState) {
7074

75+
String configKey = "publish.resource.state.events";
76+
String value = _configDao.getValue(configKey);
77+
boolean configValue = Boolean.parseBoolean(value);
78+
if(!configValue)
79+
return;
7180
try {
7281
s_eventBus = ComponentContext.getComponent(EventBus.class);
7382
} catch (NoSuchBeanDefinitionException nbe) {

engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
574574

575575
_agentMgr.registerForHostEvents(this, true, false, true);
576576

577-
Network.State.getStateMachine().registerListener(new NetworkStateListener(_usageEventDao, _networksDao));
577+
Network.State.getStateMachine().registerListener(new NetworkStateListener(_usageEventDao, _networksDao, _configDao));
578578

579579
s_logger.info("Network Manager is configured.");
580580

server/src/com/cloud/configuration/Config.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1915,7 +1915,12 @@ public enum Config {
19151915
"timeout in seconds for each Virtual Router command being aggregated. The final aggregation command timeout would be determined by this timeout * commands counts ",
19161916
null),
19171917

1918-
ManagementServerVendor("Advanced", ManagementServer.class, String.class, "mgt.server.vendor", "ACS", "the vendor of management server", null);
1918+
ManagementServerVendor("Advanced", ManagementServer.class, String.class, "mgt.server.vendor", "ACS", "the vendor of management server", null),
1919+
PublishActionEvent("Advanced", ManagementServer.class, Boolean.class, "publish.action.events", "true", "enable or disable publishing of action events on the event bus", null),
1920+
PublishAlertEvent("Advanced", ManagementServer.class, Boolean.class, "publish.alert.events", "true", "enable or disable publishing of alert events on the event bus", null),
1921+
PublishResourceStateEvent("Advanced", ManagementServer.class, Boolean.class, "publish.resource.state.events", "true", "enable or disable publishing of alert events on the event bus", null),
1922+
PublishUsageEvent("Advanced", ManagementServer.class, Boolean.class, "publish.usage.events", "true", "enable or disable publishing of usage events on the event bus", null),
1923+
PublishAsynJobEvent("Advanced", ManagementServer.class, Boolean.class, "publish.async.job.events", "true", "enable or disable publishing of usage events on the event bus", null);
19191924

19201925
private final String _category;
19211926
private final Class<?> _componentClass;

server/src/com/cloud/event/ActionEventUtils.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@
3232
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3333

3434
import org.apache.cloudstack.context.CallContext;
35+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
3536
import org.apache.cloudstack.framework.events.EventBus;
3637
import org.apache.cloudstack.framework.events.EventBusException;
3738

39+
import com.cloud.configuration.Config;
3840
import com.cloud.domain.Domain;
3941
import com.cloud.event.dao.EventDao;
4042
import com.cloud.server.ManagementService;
@@ -56,6 +58,7 @@ public class ActionEventUtils {
5658
protected static UserDao s_userDao;
5759
protected static EventBus s_eventBus = null;
5860
protected static EntityManager s_entityMgr;
61+
protected static ConfigurationDao s_configDao;
5962

6063
public static final String EventDetails = "event_details";
6164
public static final String EventId = "event_id";
@@ -73,6 +76,8 @@ public class ActionEventUtils {
7376
ProjectDao projectDao;
7477
@Inject
7578
EntityManager entityMgr;
79+
@Inject
80+
ConfigurationDao configDao;
7681

7782
public ActionEventUtils() {
7883
}
@@ -84,6 +89,7 @@ void init() {
8489
s_userDao = userDao;
8590
s_projectDao = projectDao;
8691
s_entityMgr = entityMgr;
92+
s_configDao = configDao;
8793
}
8894

8995
public static Long onActionEvent(Long userId, Long accountId, Long domainId, String type, String description) {
@@ -183,6 +189,11 @@ private static Event persistActionEvent(Long userId, Long accountId, Long domain
183189
}
184190

185191
private static void publishOnEventBus(long userId, long accountId, String eventCategory, String eventType, Event.State state, String description) {
192+
String configKey = Config.PublishActionEvent.key();
193+
String value = s_configDao.getValue(configKey);
194+
boolean configValue = Boolean.parseBoolean(value);
195+
if(!configValue)
196+
return;
186197
try {
187198
s_eventBus = ComponentContext.getComponent(EventBus.class);
188199
} catch (NoSuchBeanDefinitionException nbe) {

server/src/com/cloud/event/AlertGenerator.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@
2929
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3030
import org.springframework.stereotype.Component;
3131

32+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
3233
import org.apache.cloudstack.framework.events.EventBus;
3334
import org.apache.cloudstack.framework.events.EventBusException;
3435

36+
import com.cloud.configuration.Config;
3537
import com.cloud.dc.DataCenterVO;
3638
import com.cloud.dc.HostPodVO;
3739
import com.cloud.dc.dao.DataCenterDao;
@@ -46,11 +48,14 @@ public class AlertGenerator {
4648
private static DataCenterDao s_dcDao;
4749
private static HostPodDao s_podDao;
4850
protected static EventBus s_eventBus = null;
51+
protected static ConfigurationDao s_configDao;
4952

5053
@Inject
5154
DataCenterDao dcDao;
5255
@Inject
5356
HostPodDao podDao;
57+
@Inject
58+
ConfigurationDao configDao;
5459

5560
public AlertGenerator() {
5661
}
@@ -62,6 +67,12 @@ void init() {
6267
}
6368

6469
public static void publishAlertOnEventBus(String alertType, long dataCenterId, Long podId, String subject, String body) {
70+
71+
String configKey = Config.PublishAlertEvent.key();
72+
String value = s_configDao.getValue(configKey);
73+
boolean configValue = Boolean.parseBoolean(value);
74+
if(!configValue)
75+
return;
6576
try {
6677
s_eventBus = ComponentContext.getComponent(EventBus.class);
6778
} catch (NoSuchBeanDefinitionException nbe) {

server/src/com/cloud/network/IpAddressManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ public boolean configure(String name, Map<String, Object> params) {
398398
AssignIpAddressFromPodVlanSearch.join("vlan", podVlanSearch, podVlanSearch.entity().getId(), AssignIpAddressFromPodVlanSearch.entity().getVlanId(), JoinType.INNER);
399399
AssignIpAddressFromPodVlanSearch.done();
400400

401-
Network.State.getStateMachine().registerListener(new NetworkStateListener(_usageEventDao, _networksDao));
401+
Network.State.getStateMachine().registerListener(new NetworkStateListener(_usageEventDao, _networksDao, _configDao));
402402

403403
s_logger.info("Network Manager is configured.");
404404

server/src/com/cloud/storage/StorageManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
488488
LocalStorageSearch.and("type", LocalStorageSearch.entity().getPoolType(), SearchCriteria.Op.IN);
489489
LocalStorageSearch.done();
490490

491-
Volume.State.getStateMachine().registerListener(new VolumeStateListener());
491+
Volume.State.getStateMachine().registerListener(new VolumeStateListener(_configDao));
492492

493493
return true;
494494
}

server/src/com/cloud/storage/listener/SnapshotStateListener.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@
2222
import java.util.HashMap;
2323
import java.util.Map;
2424

25+
import javax.inject.Inject;
26+
2527
import org.apache.log4j.Logger;
2628
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2729

30+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
2831
import org.apache.cloudstack.framework.events.EventBus;
2932
import org.apache.cloudstack.framework.events.EventBusException;
3033

34+
import com.cloud.configuration.Config;
3135
import com.cloud.event.EventCategory;
3236
import com.cloud.server.ManagementService;
3337
import com.cloud.storage.Snapshot;
@@ -40,6 +44,8 @@
4044
public class SnapshotStateListener implements StateListener<State, Event, SnapshotVO> {
4145

4246
protected static EventBus s_eventBus = null;
47+
@Inject
48+
private ConfigurationDao _configDao;
4349

4450
private static final Logger s_logger = Logger.getLogger(VolumeStateListener.class);
4551

@@ -61,6 +67,11 @@ public boolean postStateTransitionEvent(State oldState, Event event, State newSt
6167

6268
private void pubishOnEventBus(String event, String status, Snapshot vo, State oldState, State newState) {
6369

70+
String configKey = Config.PublishResourceStateEvent.key();
71+
String value = _configDao.getValue(configKey);
72+
boolean configValue = Boolean.parseBoolean(value);
73+
if(!configValue)
74+
return;
6475
try {
6576
s_eventBus = ComponentContext.getComponent(EventBus.class);
6677
} catch (NoSuchBeanDefinitionException nbe) {

server/src/com/cloud/storage/listener/VolumeStateListener.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import org.apache.log4j.Logger;
2626
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2727

28+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
2829
import org.apache.cloudstack.framework.events.EventBus;
2930
import org.apache.cloudstack.framework.events.EventBusException;
3031

32+
import com.cloud.configuration.Config;
3133
import com.cloud.event.EventCategory;
3234
import com.cloud.server.ManagementService;
3335
import com.cloud.storage.Volume;
@@ -39,11 +41,12 @@
3941
public class VolumeStateListener implements StateListener<State, Event, Volume> {
4042

4143
protected static EventBus s_eventBus = null;
44+
protected ConfigurationDao _configDao;
4245

4346
private static final Logger s_logger = Logger.getLogger(VolumeStateListener.class);
4447

45-
public VolumeStateListener() {
46-
48+
public VolumeStateListener(ConfigurationDao configDao) {
49+
this._configDao = configDao;
4750
}
4851

4952
@Override
@@ -60,6 +63,11 @@ public boolean postStateTransitionEvent(State oldState, Event event, State newSt
6063

6164
private void pubishOnEventBus(String event, String status, Volume vo, State oldState, State newState) {
6265

66+
String configKey = Config.PublishResourceStateEvent.key();
67+
String value = _configDao.getValue(configKey);
68+
boolean configValue = Boolean.parseBoolean(value);
69+
if(!configValue)
70+
return;
6371
try {
6472
s_eventBus = ComponentContext.getComponent(EventBus.class);
6573
} catch (NoSuchBeanDefinitionException nbe) {

0 commit comments

Comments
 (0)