package com.eucalyptus.ws.client;
import java.util.NavigableSet;
import org.apache.log4j.Logger;
import com.eucalyptus.bootstrap.Component;
import com.eucalyptus.component.Components;
import com.eucalyptus.component.Service;
import com.eucalyptus.component.event.StartComponentEvent;
import com.eucalyptus.event.ClockTick;
import com.eucalyptus.event.Event;
import com.eucalyptus.event.EventListener;
import com.eucalyptus.event.ListenerRegistry;
import com.eucalyptus.util.LogUtil;
public class ServiceEventListener implements EventListener {
private static Logger LOG = Logger.getLogger( ServiceEventListener.class );
public static void register( ) {
ServiceEventListener me = new ServiceEventListener( );
for( Component c : Component.values() ) {
ListenerRegistry.getInstance( ).register( c, me );
}
if( Component.eucalyptus.isLocal( ) ) {
ListenerRegistry.getInstance( ).register( ClockTick.class, RemoteBootstrapperClient.getInstance( ) );
ListenerRegistry.getInstance( ).register( Component.walrus, RemoteBootstrapperClient.getInstance( ) );
ListenerRegistry.getInstance( ).register( Component.storage, RemoteBootstrapperClient.getInstance( ) );
}
}
@Override
public void advertiseEvent( Event event ) {
}
@Override
public void fireEvent( Event event ) {
if ( event instanceof StartComponentEvent ) {
StartComponentEvent e = ( StartComponentEvent ) event;
if ( Component.db.equals( e.getPeer( ) ) ) {
LOG.info( LogUtil.header( "Got information for the " + e.getPeer( ) + " " + LogUtil.dumpObject( e.getConfiguration( ) ) ) );
}
NavigableSet<Service> services = Components.lookup( e.getPeer( ) ).getServices( );
for( Service s : services ) {
LOG.info( "Registered service dispatchers: " + s.getName( ) + " " + s.getUri( ).toASCIIString( ) + " " + LogUtil.dumpObject( e.getConfiguration( ) ) );
}
}
}
}