1
package edu.ucsb.eucalyptus.cloud.cluster;
3
import edu.ucsb.eucalyptus.msgs.*;
4
import edu.ucsb.eucalyptus.transport.client.Client;
5
import edu.ucsb.eucalyptus.util.Messaging;
6
import org.apache.log4j.Logger;
7
import org.bouncycastle.util.encoders.Base64;
11
public class ConsoleOutputCallback extends QueuedEventCallback<GetConsoleOutputType> {
13
private static Logger LOG = Logger.getLogger( ConsoleOutputCallback.class );
15
private Cluster parent;
17
public ConsoleOutputCallback( final Cluster parent ) {
21
public void process( final Client cluster, final GetConsoleOutputType msg ) throws Exception {
22
GetConsoleOutputResponseType reply = ( GetConsoleOutputResponseType ) cluster.send( msg );
23
VmInstance vm = VmInstances.getInstance().lookup( msg.getInstanceId() );
24
String output = new String( Base64.decode( reply.getOutput().getBytes() ) );
25
if ( !"EMPTY".equals( output ) )
26
vm.getConsoleOutput().append( output );
27
reply.setInstanceId( msg.getInstanceId() );
28
reply.setTimestamp( new Date() );
29
reply.setOutput( new String( Base64.encode( vm.getConsoleOutput().toString().getBytes() ) ) );
30
Messaging.dispatch( "vm://ReplyQueue", reply );