~davewalker/ubuntu/maverick/eucalyptus/lp611144

« back to all changes in this revision

Viewing changes to clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/RequestQueue.java

  • Committer: Dave Walker (Daviey)
  • Date: 2010-06-21 12:59:20 UTC
  • mfrom: (1048.1.14 ubuntu)
  • Revision ID: davewalker@ubuntu.com-20100621125920-60uhixwq174elnj1
* New major upstream version merge, 1.7 (r1200).
* debian/patches/:
  - 02-Makefile.patch: Updated to reflect new code layout.
  - 07-local_support_euca_conf-in.patch: Updated to reflect new code layout.
  - 08-ubuntu-default-networking.patch: Refreshed.
  - 09-small-128-192MB.patch: Updated to point to new location.
  - 10-disable-iscsi.patch: Refreshed.
  - 11-state-cleanup-memleakfix.patch: Refreshed.
  - 15-fix-default-ramdisk.patch: Updated to point to new location.
  - 16-kvm_libvirt_xml_default_use_kvm.patch: Updated to reflect changes.
  - 17-fix_walrus_OOM_errors.patch: Removed, fixed upstream.
  - 18-priv_security.patch: Updated to reflect upstream changes.
  - 20-brute-force-webui.patch: Updated to reflect upstream changes. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
65
65
 
66
66
package com.eucalyptus.ws.util;
67
67
 
 
68
import org.apache.log4j.Logger;
 
69
import com.eucalyptus.component.Components;
 
70
import com.eucalyptus.records.EventType;
 
71
import com.eucalyptus.util.EucalyptusCloudException;
68
72
import edu.ucsb.eucalyptus.cloud.NotReadyException;
69
 
import edu.ucsb.eucalyptus.msgs.EucalyptusMessage;
 
73
import edu.ucsb.eucalyptus.msgs.BaseMessage;
 
74
import com.eucalyptus.records.EventRecord;
70
75
import edu.ucsb.eucalyptus.msgs.WalrusRequestType;
71
76
 
72
 
import com.eucalyptus.bootstrap.Component;
73
 
import com.eucalyptus.config.ComponentConfiguration;
74
 
import com.eucalyptus.config.Configuration;
75
 
import com.eucalyptus.config.WalrusConfiguration;
76
 
import com.eucalyptus.event.Event;
77
 
import com.eucalyptus.event.EventListener;
78
 
import com.eucalyptus.event.ListenerRegistry;
79
 
import com.eucalyptus.event.StartComponentEvent;
80
 
import com.eucalyptus.event.StopComponentEvent;
81
 
import com.eucalyptus.util.EntityWrapper;
82
 
import com.eucalyptus.util.EucalyptusCloudException;
83
 
 
84
 
public class RequestQueue implements EventListener
85
 
{
86
 
        private static boolean acceptable;
87
 
 
88
 
        public EucalyptusMessage handle( EucalyptusMessage msg ) throws EucalyptusCloudException
89
 
        {
90
 
                if(msg instanceof WalrusRequestType) {
91
 
                        if(!acceptable)
92
 
                                throw new NotReadyException("walrus");
93
 
                }
94
 
                return msg;
95
 
        }
96
 
 
97
 
        public static void register() {
98
 
                ListenerRegistry.getInstance( ).register( Component.walrus, new RequestQueue() );       
99
 
        }
100
 
 
101
 
        @Override
102
 
        public void advertiseEvent(Event event) {
103
 
        }
104
 
 
105
 
        @Override
106
 
        public void fireEvent(Event event) {
107
 
                if(event instanceof StartComponentEvent) {
108
 
                        EntityWrapper<WalrusConfiguration> db = Configuration.getEntityWrapper( );
109
 
                        try {
110
 
                                db.getUnique(new WalrusConfiguration());
111
 
                                db.commit();
112
 
                                acceptable = true;
113
 
                        } catch(EucalyptusCloudException ex) {
114
 
                                db.rollback();
115
 
                        }
116
 
                } else if(event instanceof StopComponentEvent) {
117
 
                        EntityWrapper<WalrusConfiguration> db = Configuration.getEntityWrapper( );
118
 
                        try {
119
 
                                db.getUnique(new WalrusConfiguration());
120
 
                                db.commit();
121
 
                        } catch(EucalyptusCloudException ex) {
122
 
                                acceptable = false;
123
 
                                db.rollback();
124
 
                        }
125
 
                }
126
 
        }
 
77
public class RequestQueue {
 
78
  private static Logger  LOG = Logger.getLogger( RequestQueue.class );
 
79
  private static boolean acceptable;
 
80
  
 
81
  public BaseMessage handle( BaseMessage msg ) throws EucalyptusCloudException {
 
82
    if ( msg instanceof WalrusRequestType ) {
 
83
      if ( !Components.lookup( Components.delegate.walrus ).isInitialized( ) ) {
 
84
        throw new NotReadyException( "walrus" );
 
85
      }
 
86
    }
 
87
    EventRecord.here( RequestQueue.class, EventType.MSG_RECEIVED, msg.getCorrelationId( ), msg.getClass( ).getSimpleName( ) ).debug( );
 
88
    return msg;
 
89
  }
 
90
  
127
91
}