1
package edu.ucsb.eucalyptus.cloud.cluster;
3
import edu.ucsb.eucalyptus.cloud.*;
4
import edu.ucsb.eucalyptus.msgs.*;
5
import edu.ucsb.eucalyptus.transport.client.Client;
6
import org.apache.log4j.Logger;
7
import org.apache.axis2.AxisFault;
9
import java.util.NoSuchElementException;
11
public class StopNetworkCallback extends QueuedEventCallback<StopNetworkType> {
13
private static Logger LOG = Logger.getLogger( StopNetworkCallback.class );
15
private NetworkToken token;
17
public StopNetworkCallback( final NetworkToken networkToken ) {
18
this.token = networkToken;
21
public void process( final Client clusterClient, final StopNetworkType msg ) throws Exception {
22
LOG.debug( "Sending stopNetwork for " + token.getName() + " on cluster " + token.getCluster() );
24
for ( VmInstance v : VmInstances.getInstance().listValues() ) {
25
if ( v.getNetworkNames().contains( token.getName() ) && v.getPlacement().equals( token.getCluster() ) ) return;
28
StopNetworkResponseType reply = ( StopNetworkResponseType ) clusterClient.send( msg );
30
Network net = Networks.getInstance().lookup( token.getName() );
31
Cluster cluster = Clusters.getInstance().lookup( token.getCluster() );
32
LOG.debug( "Releasing network token back to cluster: " + token );
33
cluster.getState().releaseNetworkAllocation( token );
34
LOG.debug( "Removing network token: " + token );
35
net.removeToken( token.getCluster() );
36
} catch ( NoSuchElementException e1 ) {
39
} catch ( AxisFault axisFault ) {
40
LOG.error( axisFault );
41
LOG.debug( axisFault, axisFault );