~ubuntu-branches/ubuntu/vivid/eucalyptus/vivid

« back to all changes in this revision

Viewing changes to .pc/26-google-collections-1.0-ftbfs.patch/clc/modules/configuration/src/main/java/com/eucalyptus/config/Configuration.java

  • Committer: Bazaar Package Importer
  • Author(s): James Page
  • Date: 2011-05-18 10:46:58 UTC
  • Revision ID: james.westby@ubuntu.com-20110518104658-umi4lvp0yqtu8cl9
Tags: 2.0.1+bzr1256-0ubuntu5
* Fix FTBFS against libgoogle-collections-java 1.0 (LP: #784491). 
  - debian/patches/26-google-collections-1.0-ftbfs.patch: refactoring
    to use 1.0 API.
* Fix libjibx-java to version 1.1 to allow entry of libjibx1.2-java 
  into universe without breaking eucalyptus:
  - debian/eucalyptus-java-common.links: use jibx-*-1.1.jar.
  - debian/build-jars: use jibx-*-1.1.jar.
  - debian/control: use libjibx1.1-java instead of libjibx-java.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*******************************************************************************
 
2
 *Copyright (c) 2009 Eucalyptus Systems, Inc.
 
3
 * 
 
4
 * This program is free software: you can redistribute it and/or modify
 
5
 * it under the terms of the GNU General Public License as published by
 
6
 * the Free Software Foundation, only version 3 of the License.
 
7
 * 
 
8
 * 
 
9
 * This file is distributed in the hope that it will be useful, but WITHOUT
 
10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
11
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
 
12
 * for more details.
 
13
 * 
 
14
 * You should have received a copy of the GNU General Public License along
 
15
 * with this program. If not, see <http://www.gnu.org/licenses/>.
 
16
 * 
 
17
 * Please contact Eucalyptus Systems, Inc., 130 Castilian
 
18
 * Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
 
19
 * if you need additional information or have any questions.
 
20
 * 
 
21
 * This file may incorporate work covered under the following copyright and
 
22
 * permission notice:
 
23
 * 
 
24
 * Software License Agreement (BSD License)
 
25
 * 
 
26
 * Copyright (c) 2008, Regents of the University of California
 
27
 * All rights reserved.
 
28
 * 
 
29
 * Redistribution and use of this software in source and binary forms, with
 
30
 * or without modification, are permitted provided that the following
 
31
 * conditions are met:
 
32
 * 
 
33
 * Redistributions of source code must retain the above copyright notice,
 
34
 * this list of conditions and the following disclaimer.
 
35
 * 
 
36
 * Redistributions in binary form must reproduce the above copyright
 
37
 * notice, this list of conditions and the following disclaimer in the
 
38
 * documentation and/or other materials provided with the distribution.
 
39
 * 
 
40
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 
41
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 
42
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 
43
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 
44
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
45
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 
46
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 
47
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 
48
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 
49
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
50
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
 
51
 * THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
 
52
 * LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
 
53
 * SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
 
54
 * IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
 
55
 * BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
 
56
 * THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
 
57
 * OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
 
58
 * WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
 
59
 * ANY SUCH LICENSES OR RIGHTS.
 
60
 *******************************************************************************/
 
61
/*
 
62
 * Author: chris grzegorczyk <grze@eucalyptus.com>
 
63
 */
 
64
package com.eucalyptus.config;
 
65
 
 
66
import java.util.ArrayList;
 
67
import java.util.List;
 
68
import java.util.Map;
 
69
import org.apache.log4j.Logger;
 
70
import com.eucalyptus.component.ServiceBuilder;
 
71
import com.eucalyptus.component.ServiceConfiguration;
 
72
import com.eucalyptus.component.ServiceConfigurations;
 
73
import com.eucalyptus.component.ServiceRegistrationException;
 
74
import com.eucalyptus.entities.EntityWrapper;
 
75
import com.eucalyptus.scripting.groovy.GroovyUtil;
 
76
import com.eucalyptus.util.EucalyptusCloudException;
 
77
import com.eucalyptus.util.NetworkUtil;
 
78
import com.google.common.collect.Maps;
 
79
import edu.ucsb.eucalyptus.msgs.ComponentInfoType;
 
80
import edu.ucsb.eucalyptus.msgs.DeregisterComponentResponseType;
 
81
import edu.ucsb.eucalyptus.msgs.DeregisterComponentType;
 
82
import edu.ucsb.eucalyptus.msgs.DescribeComponentsResponseType;
 
83
import edu.ucsb.eucalyptus.msgs.DescribeComponentsType;
 
84
import edu.ucsb.eucalyptus.msgs.DescribeNodesResponseType;
 
85
import edu.ucsb.eucalyptus.msgs.DescribeNodesType;
 
86
import edu.ucsb.eucalyptus.msgs.NodeComponentInfoType;
 
87
import edu.ucsb.eucalyptus.msgs.RegisterComponentResponseType;
 
88
import edu.ucsb.eucalyptus.msgs.RegisterComponentType;
 
89
 
 
90
public class Configuration {
 
91
  static Logger         LOG                 = Logger.getLogger( Configuration.class );
 
92
  public static String DB_NAME             = "eucalyptus_config";
 
93
  static String         CLUSTER_KEY_FSTRING = "cc-%s";
 
94
  static String         NODE_KEY_FSTRING    = "nc-%s";
 
95
 
 
96
  private static Map<Class,ServiceBuilder<ComponentConfiguration>> builders = Maps.newConcurrentHashMap( );
 
97
  public static void addBuilder( Class c, ServiceBuilder b ) {
 
98
    builders.put( c, b );
 
99
  }
 
100
  
 
101
  public RegisterComponentResponseType registerComponent( RegisterComponentType request ) throws EucalyptusCloudException {
 
102
    RegisterComponentResponseType reply = ( RegisterComponentResponseType ) request.getReply( );
 
103
    reply.set_return( false );
 
104
    String name = request.getName( );
 
105
    String hostName = request.getHost();
 
106
    Integer port = request.getPort( );
 
107
    ServiceBuilder builder = builders.get( request.getClass( ) );
 
108
    if( !builder.checkAdd( name, hostName, port ) ) {
 
109
      reply.set_return(true);
 
110
      return reply;
 
111
    }
 
112
    ServiceConfiguration newComponent = builder.add( name, hostName, port );
 
113
    builder.getComponent( ).buildService( newComponent );
 
114
    builder.getComponent( ).startService( newComponent );
 
115
    reply.set_return( true );
 
116
    return reply;
 
117
  }
 
118
    
 
119
  public DeregisterComponentResponseType deregisterComponent( DeregisterComponentType request ) throws EucalyptusCloudException {
 
120
    DeregisterComponentResponseType reply = ( DeregisterComponentResponseType ) request.getReply( );
 
121
    reply.set_return( false );
 
122
    ServiceBuilder builder = builders.get( request.getClass( ) );
 
123
    if( !builder.checkRemove( request.getName( ) ) ) {
 
124
      return reply;
 
125
    }
 
126
    ServiceConfiguration conf;
 
127
    try {
 
128
      conf = builder.lookupByName( request.getName( ) );
 
129
      builder.remove( conf );
 
130
      builder.getComponent( ).removeService( conf );
 
131
//      builder.fireStop( conf );
 
132
      reply.set_return( true );
 
133
    } catch( EucalyptusCloudException e ) {
 
134
      throw e;
 
135
    } catch ( Exception e ) {
 
136
      LOG.debug( e, e );
 
137
    }
 
138
    return reply;
 
139
  }
 
140
  
 
141
  public DescribeNodesResponseType listComponents( DescribeNodesType request ) throws EucalyptusCloudException {
 
142
    DescribeNodesResponseType reply = ( DescribeNodesResponseType ) request.getReply( );
 
143
    reply.setRegistered( ( ArrayList<NodeComponentInfoType> ) GroovyUtil.evaluateScript( "describe_nodes" ) );
 
144
    return reply;
 
145
  }
 
146
 
 
147
  public DescribeComponentsResponseType listComponents( DescribeComponentsType request ) throws EucalyptusCloudException {
 
148
    DescribeComponentsResponseType reply = ( DescribeComponentsResponseType ) request.getReply( );
 
149
    List<ComponentInfoType> listConfigs = reply.getRegistered( );
 
150
    for( ComponentConfiguration conf : builders.get( request.getClass( ) ).list( ) ) {
 
151
      listConfigs.add( new ComponentInfoType( conf.getName( ), conf.getHostName( ) ) );
 
152
    }
 
153
    return reply;
 
154
  }
 
155
  
 
156
  public static List<ClusterConfiguration> getClusterConfigurations( ) throws EucalyptusCloudException {
 
157
    EntityWrapper<ClusterConfiguration> db = ServiceConfigurations.getEntityWrapper( );
 
158
    try {
 
159
      List<ClusterConfiguration> componentList = db.query( new ClusterConfiguration( ) );
 
160
      for ( ClusterConfiguration cc : componentList ) {
 
161
        if ( cc.getMinVlan( ) == null ) cc.setMinVlan( 10 );
 
162
        if ( cc.getMaxVlan( ) == null ) cc.setMaxVlan( 4095 );
 
163
      }
 
164
      db.commit( );
 
165
      return componentList;
 
166
    } catch ( Exception e ) {
 
167
      db.rollback( );
 
168
      LOG.error( e, e );
 
169
      throw new EucalyptusCloudException( e );
 
170
    }
 
171
  }
 
172
  
 
173
  public static List<StorageControllerConfiguration> getStorageControllerConfigurations( ) throws EucalyptusCloudException {
 
174
    EntityWrapper<StorageControllerConfiguration> db = ServiceConfigurations.getEntityWrapper( );
 
175
    try {
 
176
      List<StorageControllerConfiguration> componentList = db.query( new StorageControllerConfiguration( ) );
 
177
      db.commit( );
 
178
      return componentList;
 
179
    } catch ( Exception e ) {
 
180
      db.rollback( );
 
181
      LOG.error( e, e );
 
182
      throw new EucalyptusCloudException( e );
 
183
    }
 
184
  }
 
185
  
 
186
  public static List<WalrusConfiguration> getWalrusConfigurations( ) throws EucalyptusCloudException {
 
187
    EntityWrapper<WalrusConfiguration> db = ServiceConfigurations.getEntityWrapper( );
 
188
    try {
 
189
      List<WalrusConfiguration> componentList = db.query( new WalrusConfiguration( ) );
 
190
      db.commit( );
 
191
      return componentList;
 
192
    } catch ( Exception e ) {
 
193
      db.rollback( );
 
194
      LOG.error( e, e );
 
195
      throw new EucalyptusCloudException( e );
 
196
    }
 
197
  }
 
198
  
 
199
  public static StorageControllerConfiguration getStorageControllerConfiguration( String scName ) throws EucalyptusCloudException {
 
200
    List<StorageControllerConfiguration> scs = Configuration.getStorageControllerConfigurations( );
 
201
    for ( StorageControllerConfiguration sc : scs ) {
 
202
      if ( sc.getName( ).equals( scName ) ) {
 
203
        return sc;
 
204
      }
 
205
    }
 
206
    throw new NoSuchComponentException( StorageControllerConfiguration.class.getSimpleName( ) + " named " + scName );
 
207
  }
 
208
  
 
209
  public static WalrusConfiguration getWalrusConfiguration( String walrusName ) throws EucalyptusCloudException {
 
210
    List<WalrusConfiguration> walri = Configuration.getWalrusConfigurations( );
 
211
    for ( WalrusConfiguration w : walri ) {
 
212
      if ( w.getName( ).equals( walrusName ) ) {
 
213
        return w;
 
214
      }
 
215
    }
 
216
    throw new NoSuchComponentException( WalrusConfiguration.class.getSimpleName( ) + " named " + walrusName );
 
217
  }
 
218
  
 
219
  public static ClusterConfiguration getClusterConfiguration( String clusterName ) throws EucalyptusCloudException {
 
220
    List<ClusterConfiguration> clusters = Configuration.getClusterConfigurations( );
 
221
    for ( ClusterConfiguration c : clusters ) {
 
222
      if ( c.getName( ).equals( clusterName ) ) {
 
223
        return c;
 
224
      }
 
225
    }
 
226
    throw new NoSuchComponentException( ClusterConfiguration.class.getSimpleName( ) + " named " + clusterName );
 
227
  }
 
228
    
 
229
}