public <T> void unsubscribe(String subject, T subscriber, String listenerMethod) { synchronized (this) { List<SubscriberInfo> l = getSubscriberList(subject); if (l != null) { for (SubscriberInfo info : l) { if (info.isMe(subscriber.getClass(), subscriber, listenerMethod)) { l.remove(info); return; } } } } }
public <T> void subscribe(String subject, T subscriber, String listenerMethod) throws SecurityException, NoSuchMethodException { synchronized (this) { List<SubscriberInfo> l = getAndSetSubscriberList(subject); Class<?> clazz = subscriber.getClass(); SubscriberInfo subscribeInfo = new SubscriberInfo(clazz, subscriber, listenerMethod); if (!l.contains(subscribeInfo)) l.add(subscribeInfo); } }
public void notifySubscribers(String subject, Object sender, EventArgs args) { List<SubscriberInfo> l = getExecutableSubscriberList(subject); if (l != null) { for (SubscriberInfo info : l) { try { info.execute(sender, args); } catch (IllegalArgumentException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } catch (IllegalAccessException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } catch (InvocationTargetException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } } } }
public void notifyNodeJoined(final List<ManagementServerHostVO> nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Notify management server node join to listeners."); for (final ManagementServerHostVO mshost : nodeList) { s_logger.debug("Joining node, IP: " + mshost.getServiceIP() + ", msid: " + mshost.getMsid()); } } synchronized (_listeners) { for (final ClusterManagerListener listener : _listeners) { listener.onManagementNodeJoined(nodeList, _mshostId); } } SubscriptionMgr.getInstance().notifySubscribers(ClusterManager.ALERT_SUBJECT, this, new ClusterNodeJoinEventArgs(_mshostId, nodeList)); }
@Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { if (s_logger.isInfoEnabled()) s_logger.info("Start configuring console proxy alert manager : " + name); try { SubscriptionMgr.getInstance().subscribe(ConsoleProxyManager.ALERT_SUBJECT, this, "onProxyAlert"); } catch (SecurityException e) { throw new ConfigurationException("Unable to register console proxy event subscription, exception: " + e); } catch (NoSuchMethodException e) { throw new ConfigurationException("Unable to register console proxy event subscription, exception: " + e); } return true; } }
public void notifyNodeLeft(final List<ManagementServerHostVO> nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Notify management server node left to listeners."); } for (final ManagementServerHostVO mshost : nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Leaving node, IP: " + mshost.getServiceIP() + ", msid: " + mshost.getMsid()); } cancelClusterRequestToPeer(String.valueOf(mshost.getMsid())); } synchronized (_listeners) { for (final ClusterManagerListener listener : _listeners) { listener.onManagementNodeLeft(nodeList, _mshostId); } } SubscriptionMgr.getInstance().notifySubscribers(ClusterManager.ALERT_SUBJECT, this, new ClusterNodeLeftEventArgs(_mshostId, nodeList)); }
@Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { if (s_logger.isInfoEnabled()) s_logger.info("Start configuring secondary storage vm alert manager : " + name); try { SubscriptionMgr.getInstance().subscribe(SecondaryStorageVmManager.ALERT_SUBJECT, this, "onSSVMAlert"); } catch (SecurityException e) { throw new ConfigurationException("Unable to register secondary storage vm event subscription, exception: " + e); } catch (NoSuchMethodException e) { throw new ConfigurationException("Unable to register secondary storage vm event subscription, exception: " + e); } return true; } }
public <T> void subscribe(final String subject, final T subscriber, final String listenerMethod) throws SecurityException, NoSuchMethodException { synchronized (this) { final List<SubscriberInfo> l = getAndSetSubscriberList(subject); final Class<?> clazz = subscriber.getClass(); final SubscriberInfo subscribeInfo = new SubscriberInfo(clazz, subscriber, listenerMethod); if (!l.contains(subscribeInfo)) { l.add(subscribeInfo); } } }
public <T> void unsubscribe(final String subject, final T subscriber, final String listenerMethod) { synchronized (this) { final List<SubscriberInfo> l = getSubscriberList(subject); if (l != null) { for (final SubscriberInfo info : l) { if (info.isMe(subscriber.getClass(), subscriber, listenerMethod)) { l.remove(info); return; } } } } }
public void notifySubscribers(final String subject, final Object sender, final EventArgs args) { final List<SubscriberInfo> l = getExecutableSubscriberList(subject); if (l != null) { for (final SubscriberInfo info : l) { try { info.execute(sender, args); } catch (final IllegalArgumentException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } catch (final IllegalAccessException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } catch (final InvocationTargetException e) { s_logger.warn("Exception on notifying event subscribers: ", e); } } } }
s_logger.info("Console proxy " + proxy.getHostName() + " is started"); SubscriptionMgr.getInstance().notifySubscribers(ConsoleProxyManager.ALERT_SUBJECT, this, new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_UP, dataCenterId, proxy.getId(), proxy, null)); } else { SubscriptionMgr.getInstance().notifySubscribers(ConsoleProxyManager.ALERT_SUBJECT, this, new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_CREATE_FAILURE, dataCenterId, 0l, null, errorString));
@Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { if (s_logger.isInfoEnabled()) { s_logger.info("Start configuring cluster alert manager : " + name); } try { SubscriptionMgr.getInstance().subscribe(ClusterManager.ALERT_SUBJECT, this, "onClusterAlert"); } catch (SecurityException e) { throw new ConfigurationException("Unable to register cluster event subscription"); } catch (NoSuchMethodException e) { throw new ConfigurationException("Unable to register cluster event subscription"); } return true; } }
SubscriptionMgr.getInstance().notifySubscribers(ConsoleProxyManager.ALERT_SUBJECT, this, new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_CREATED, dataCenterId, proxy.getId(), proxy, null)); return proxy;
@Override public boolean rebootProxy(long proxyVmId) { final ConsoleProxyVO proxy = _consoleProxyDao.findById(proxyVmId); if (proxy == null || proxy.getState() == State.Destroyed) { return false; } if (proxy.getState() == State.Running && proxy.getHostId() != null) { final RebootCommand cmd = new RebootCommand(proxy.getInstanceName(), _itMgr.getExecuteInSequence(proxy.getHypervisorType())); final Answer answer = _agentMgr.easySend(proxy.getHostId(), cmd); if (answer != null && answer.getResult()) { if (s_logger.isDebugEnabled()) { s_logger.debug("Successfully reboot console proxy " + proxy.getHostName()); } SubscriptionMgr.getInstance().notifySubscribers(ConsoleProxyManager.ALERT_SUBJECT, this, new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_REBOOTED, proxy.getDataCenterId(), proxy.getId(), proxy, null)); return true; } else { if (s_logger.isDebugEnabled()) { s_logger.debug("failed to reboot console proxy : " + proxy.getHostName()); } return false; } } else { return startProxy(proxyVmId, false) != null; } }
public void notifyNodeJoined(final List<ManagementServerHostVO> nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Notify management server node join to listeners."); for (final ManagementServerHostVO mshost : nodeList) { s_logger.debug("Joining node, IP: " + mshost.getServiceIP() + ", msid: " + mshost.getMsid()); } } synchronized (_listeners) { for (final ClusterManagerListener listener : _listeners) { listener.onManagementNodeJoined(nodeList, _mshostId); } } SubscriptionMgr.getInstance().notifySubscribers(ClusterManager.ALERT_SUBJECT, this, new ClusterNodeJoinEventArgs(_mshostId, nodeList)); }
public void notifyNodeLeft(final List<ManagementServerHostVO> nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Notify management server node left to listeners."); } for (final ManagementServerHostVO mshost : nodeList) { if (s_logger.isDebugEnabled()) { s_logger.debug("Leaving node, IP: " + mshost.getServiceIP() + ", msid: " + mshost.getMsid()); } cancelClusterRequestToPeer(String.valueOf(mshost.getMsid())); } synchronized (_listeners) { for (final ClusterManagerListener listener : _listeners) { listener.onManagementNodeLeft(nodeList, _mshostId); } } SubscriptionMgr.getInstance().notifySubscribers(ClusterManager.ALERT_SUBJECT, this, new ClusterNodeLeftEventArgs(_mshostId, nodeList)); }