99
99
import com.eucalyptus.component.ServiceRegistrationException;
100
100
import com.eucalyptus.component.event.StartComponentEvent;
101
101
import com.eucalyptus.component.event.StopComponentEvent;
102
import com.eucalyptus.config.BogoConfig;
102
103
import com.eucalyptus.config.ComponentConfiguration;
103
104
import com.eucalyptus.config.RemoteConfiguration;
105
import com.eucalyptus.context.Contexts;
104
106
import com.eucalyptus.event.EventVetoedException;
105
107
import com.eucalyptus.event.ListenerRegistry;
106
108
import com.eucalyptus.http.MappingHttpRequest;
166
168
final Component comp = safeLookupComponent( component.getComponent( ) );
167
169
URI uri = comp.getUri( localAddr.getHostName( ), 8773 );
168
ServiceConfiguration config = new ComponentConfiguration( comp.getName( ), uri.getHost( ), 8773, uri.getPath( ) ) {
170
public com.eucalyptus.bootstrap.Component getComponent( ) {
171
return comp.getPeer( );
175
public Boolean isLocal( ) {
170
ServiceConfiguration config = new BogoConfig( comp.getPeer( ), comp.getName( ), uri.getHost( ), 8773, uri.getPath( ) );
180
171
System.setProperty( "euca." + component.getComponent( ) + ".name", component.getName( ) );
181
172
comp.buildService( config );
182
173
initializedComponents.add( component.getComponent( ) );
259
250
public void messageReceived( ChannelHandlerContext ctx, MessageEvent e ) throws Exception {
260
if ( e.getMessage( ) instanceof HttpRequest && HttpMethod.GET.equals( ( ( HttpRequest ) e.getMessage( ) ).getMethod( ) ) ) {
261
HttpRequest request = ( HttpRequest ) e.getMessage( );
262
HttpResponse response = new DefaultHttpResponse( request.getProtocolVersion( ), HttpResponseStatus.OK );
264
for ( Component c : Components.list( ) ) {
265
resp += String.format( "name=%-20.20s enabled=%-10.10s local=%-10.10s initialized=%-10.10s\n", c.getName( ), c.isEnabled( ), c.isLocal( ),
266
c.isInitialized( ) );
251
if ( e.getMessage( ) instanceof MappingHttpRequest && HttpMethod.GET.equals( ( ( MappingHttpRequest ) e.getMessage( ) ).getMethod( ) ) ) {
252
MappingHttpRequest request = ( MappingHttpRequest ) e.getMessage( );
254
HttpResponse response = new DefaultHttpResponse( request.getProtocolVersion( ), HttpResponseStatus.OK );
256
for ( Component c : Components.list( ) ) {
257
resp += String.format( "name=%-20.20s enabled=%-10.10s local=%-10.10s initialized=%-10.10s\n", c.getName( ), c.isEnabled( ), c.isLocal( ),
258
c.isInitialized( ) );
260
ChannelBuffer buf = ChannelBuffers.copiedBuffer( resp.getBytes( ) );
261
response.setContent( buf );
262
response.addHeader( HttpHeaders.Names.CONTENT_LENGTH, String.valueOf( buf.readableBytes( ) ) );
263
response.addHeader( HttpHeaders.Names.CONTENT_TYPE, "text/plain; charset=UTF-8" );
264
ChannelFuture writeFuture = ctx.getChannel( ).write( response );
265
writeFuture.addListener( ChannelFutureListener.CLOSE );
267
Contexts.clear( request.getCorrelationId( ) );
268
ChannelBuffer buf = ChannelBuffers.copiedBuffer( resp.getBytes( ) );
269
response.setContent( buf );
270
response.addHeader( HttpHeaders.Names.CONTENT_LENGTH, String.valueOf( buf.readableBytes( ) ) );
271
response.addHeader( HttpHeaders.Names.CONTENT_TYPE, "text/plain; charset=UTF-8" );
272
ChannelFuture writeFuture = ctx.getChannel( ).write( response );
273
writeFuture.addListener( ChannelFutureListener.CLOSE );
275
270
ctx.sendUpstream( e );
295
290
Object message = ( ( MessageEvent ) e ).getMessage( );
296
291
if ( message instanceof MappingHttpRequest ) {
297
292
MappingHttpRequest request = ( ( MappingHttpRequest ) message );
298
if ( HttpMethod.GET.equals( request.getMethod( ) ) ) {
299
handleGet( ctx, request );
300
} else if ( !initialized.get( ) && pending.compareAndSet( false, true ) ) {
302
handleInitialize( ctx, request );
303
} catch ( Exception ex ) {
307
pending.set( false );
294
if ( HttpMethod.GET.equals( request.getMethod( ) ) ) {
295
handleGet( ctx, request );
296
} else if ( !initialized.get( ) && pending.compareAndSet( false, true ) ) {
298
handleInitialize( ctx, request );
299
} catch ( Exception ex ) {
303
pending.set( false );
305
} else if ( initialized.get( ) && request.getMessage( ) instanceof HeartbeatType ) {
306
handleHeartbeat( request );
308
ChannelFuture writeFuture = ctx.getChannel( ).write( new DefaultHttpResponse( request.getProtocolVersion( ), HttpResponseStatus.NOT_ACCEPTABLE ) );
309
writeFuture.addListener( ChannelFutureListener.CLOSE );
309
} else if ( initialized.get( ) && request.getMessage( ) instanceof HeartbeatType ) {
310
handleHeartbeat( request );
312
ChannelFuture writeFuture = ctx.getChannel( ).write( new DefaultHttpResponse( request.getProtocolVersion( ), HttpResponseStatus.NOT_ACCEPTABLE ) );
313
writeFuture.addListener( ChannelFutureListener.CLOSE );
312
Contexts.clear( request.getCorrelationId( ) );
316
315
super.messageReceived( ctx, e );