Merge lp:~kirkland/eucalyptus/label-metadata into lp:eucalyptus/1.6.2

Proposed by Dustin Kirkland 
Status: Superseded
Proposed branch: lp:~kirkland/eucalyptus/label-metadata
Merge into: lp:eucalyptus/1.6.2
Diff against target: 97407 lines (+47387/-30493) (has conflicts)
813 files modified
Makefile (+1/-1)
VERSION (+1/-1)
clc/.classpath (+24/-10)
clc/.project (+1/-1)
clc/Makefile (+12/-16)
clc/build.xml (+223/-189)
clc/modules/authentication/conf/upgrade/upgrade_auth.groovy (+173/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/AllGroup.java (+44/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialEntities.groovy (+140/-34)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialProvider.java (+0/-347)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/Credentials.java (+0/-107)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthBootstrapper.java (+72/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthProvider.java (+423/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedGroup.java (+218/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedUser.java (+299/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/Debugging.java (+45/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/GroupEntity.java (+254/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java (+0/-120)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/SystemCredentialProvider.java (+25/-15)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/UserExistsException.java (+0/-84)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/WrappedUser.java (+8/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/crypto/DefaultCryptoProvider.java (+215/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/AuthBootstrapHelper.java (+49/-0)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/EucaKeyStore.java (+1/-6)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/Hashes.java (+37/-121)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/KeyTool.java (+0/-156)
clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/SslSetup.java (+2/-2)
clc/modules/bootstrap/Makefile (+1/-1)
clc/modules/bootstrap/arguments.ggo (+3/-1)
clc/modules/bootstrap/eucalyptus-bootstrap.c (+28/-20)
clc/modules/bootstrap/eucalyptus-bootstrap.h (+5/-2)
clc/modules/bootstrap/eucalyptus-opts.c (+77/-30)
clc/modules/bootstrap/eucalyptus-opts.h (+8/-1)
clc/modules/cloud/src/main/resources/com.eucalyptus.CloudServiceProvider (+3/-0)
clc/modules/cloud/src/main/resources/eucalyptus-interface.xml (+8/-4)
clc/modules/cloud/src/main/resources/eucalyptus-runtime.xml (+9/-9)
clc/modules/cloud/src/main/resources/eucalyptus-services.xml (+1/-1)
clc/modules/cloud/src/main/resources/eucalyptus-storage.xml (+3/-3)
clc/modules/cloud/src/main/resources/eucalyptus-verification.xml (+2/-2)
clc/modules/cluster-manager/cluster-manager.iml (+0/-27)
clc/modules/cluster-manager/conf/scripts/LeastFullFirst.groovy (+0/-34)
clc/modules/cluster-manager/pom.xml (+0/-101)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AbstractSystemAddressManager.java (+148/-15)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/Address.java (+262/-105)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AddressCategory.java (+28/-8)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AddressManager.java (+236/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/Addresses.java (+25/-77)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/ClusterAddressInfo.groovy (+52/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/DynamicSystemAddressManager.java (+14/-16)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/NullSystemAddressManager.java (+1/-8)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/StaticSystemAddressManager.java (+1/-8)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/Callback.java (+0/-1)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/Cluster.java (+43/-109)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterBootstrapper.java (+0/-224)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterBuilder.java (+261/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterEndpoint.java (+319/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterMessageQueue.java (+138/-30)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterNodeState.java (+42/-16)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterState.java (+28/-13)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/ClusterThreadFactory.java (+39/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/Clusters.java (+141/-49)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/FailureCallback.java (+4/-3)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/NetworkAlreadyExistsException.java (+68/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/NoSuchTokenException.java (+82/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/StatefulMessageSet.java (+111/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/SuccessCallback.java (+6/-3)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/UnconditionalCallback.java (+4/-3)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/VmInstance.java (+578/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/VmInstances.java (+242/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/VmTypeAvailability.java (+166/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/VmTypeVerify.java (+91/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/VmTypes.java (+152/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/AssignAddressCallback.java (+163/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/BroadcastCallback.java (+19/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/ConfigureNetworkCallback.java (+107/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/ConsoleOutputCallback.java (+110/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/QueuedEventCallback.java (+401/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/RebootCallback.java (+94/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/ResourceStateCallback.java (+31/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/StartNetworkCallback.java (+118/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/StateUpdateHandler.java (+68/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/StopNetworkCallback.java (+118/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/TerminateCallback.java (+99/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/UnassignAddressCallback.java (+165/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/VmRunCallback.java (+210/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/VolumeAttachCallback.java (+124/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/VolumeDetachCallback.java (+102/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/AbstractClusterMessageDispatcher.java (+18/-28)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/AddressStateHandler.java (+11/-10)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/ClusterCertificateHandler.java (+18/-17)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/LogStateHandler.java (+1/-1)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/NetworkStateHandler.java (+2/-2)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/ResourceStateHandler.java (+19/-23)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/handlers/VmStateHandler.java (+48/-41)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/util/ClusterUtil.java (+0/-86)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/sla/ClusterAllocator.java (+153/-140)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/sla/CreateVmInstances.java (+112/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/sla/NodeResourceAllocator.java (+38/-31)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/sla/PrivateNetworkAllocator.groovy (+1/-3)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/sla/VmAdmissionControl.java (+7/-7)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/vm/SystemState.java (+446/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/vm/VmControl.java (+224/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/vm/VmMetadata.java (+97/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/vm/VmReplyTransform.java (+97/-0)
clc/modules/cluster-manager/src/main/java/com/eucalyptus/vm/VmState.java (+109/-0)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ClusterEndpoint.java (+0/-294)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ClusterEnvelope.java (+0/-105)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ConfigureNetworkCallback.java (+0/-102)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/EucalyptusWSException.java (+0/-90)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/MultiClusterCallback.java (+0/-36)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/NetworkAlreadyExistsException.java (+0/-68)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/NoSuchTokenException.java (+0/-68)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/QueuedEvent.java (+0/-128)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/QueuedLogEvent.java (+0/-74)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/RebootCallback.java (+0/-93)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/Reservation.java (+0/-181)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/Reservations.java (+0/-106)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/StartNetworkCallback.java (+0/-127)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/StopNetworkCallback.java (+0/-124)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/TerminateCallback.java (+0/-99)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmRunCallback.java (+0/-170)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmTypeAvailability.java (+0/-166)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmTypeVerify.java (+0/-91)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmTypes.java (+0/-152)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VolumeAttachCallback.java (+0/-117)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VolumeDetachCallback.java (+0/-103)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/AddressManager.java (+0/-252)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/CreateVmInstances.java (+0/-118)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VmControl.java (+0/-131)
clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VmReplyTransform.java (+0/-97)
clc/modules/cluster-manager/src/main/resources/cluster-model.xml (+79/-0)
clc/modules/cluster-manager/src/main/resources/cluster-services.xml (+78/-0)
clc/modules/cluster-manager/src/main/resources/com.eucalyptus.CloudServiceProvider (+6/-0)
clc/modules/component/build.xml (+42/-0)
clc/modules/component/src/main/java/com/eucalyptus/cloud/ws/ComponentService.java (+72/-0)
clc/modules/component/src/main/resources/com.eucalyptus.CloudServiceProvider (+6/-0)
clc/modules/component/src/main/resources/component-model.xml (+113/-0)
clc/modules/component/src/main/resources/component-services.xml (+82/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/accounts/Accounts.java (+142/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/config/Configuration.java (+58/-161)
clc/modules/configuration/src/main/java/com/eucalyptus/config/ConfigurationEntities.groovy (+0/-295)
clc/modules/configuration/src/main/java/com/eucalyptus/config/ConfigurationUtil.java (+5/-146)
clc/modules/configuration/src/main/java/com/eucalyptus/config/Handles.java (+12/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/config/Properties.java (+58/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/config/RegistrationHandlerDiscovery.java (+26/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/config/StorageControllerBuilder.java (+79/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/config/WalrusBuilder.java (+31/-0)
clc/modules/configuration/src/main/java/com/eucalyptus/event/ComponentEvent.java (+0/-38)
clc/modules/configuration/src/main/java/com/eucalyptus/event/StartComponentEvent.java (+0/-41)
clc/modules/configuration/src/main/java/com/eucalyptus/event/StopComponentEvent.java (+0/-31)
clc/modules/configuration/src/main/resources/com.eucalyptus.CloudServiceProvider (+3/-0)
clc/modules/configuration/src/main/resources/eucalyptus-configuration.xml (+78/-78)
clc/modules/core/conf/scripts/Import_150.groovy (+0/-561)
clc/modules/core/conf/scripts/Import_152.groovy (+0/-584)
clc/modules/core/conf/scripts/storageprops.groovy (+8/-0)
clc/modules/core/conf/scripts/walrusprops.groovy (+17/-0)
clc/modules/core/conf/upgrade/Upgrade1_6_2to2_0.java (+290/-0)
clc/modules/core/conf/upgrade/upgrade_misc_1_6_2to2_0_0.groovy (+92/-0)
clc/modules/core/conf/upgrade/upgrade_walrus_1_6_2to2_0_0.groovy (+119/-0)
clc/modules/core/pom.xml (+0/-143)
clc/modules/core/src/main/java/com/eucalyptus/bootstrap/RemoteDatabaseBootstrapper.java (+7/-7)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/AbstractUpgradeScript.java (+28/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/DatabaseDestination.java (+5/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/DatabaseSource.java (+10/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/HsqldbDestination.java (+20/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/HsqldbSource.java (+51/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/StandalonePersistence.java (+276/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/UpgradeScript.java (+30/-0)
clc/modules/core/src/main/java/com/eucalyptus/upgrade/UpgradeScriptDiscovery.java (+23/-0)
clc/modules/core/src/main/java/com/eucalyptus/util/BlockStorageUtil.java (+129/-0)
clc/modules/core/src/main/java/com/eucalyptus/util/DNSProperties.java (+1/-2)
clc/modules/core/src/main/java/com/eucalyptus/util/StorageProperties.java (+33/-14)
clc/modules/core/src/main/java/com/eucalyptus/util/WalrusProperties.java (+28/-18)
clc/modules/core/src/main/java/com/eucalyptus/util/WalrusUtil.java (+8/-1)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/StartupChecks.java (+0/-250)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/InvalidBucketNameException.java (+91/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/AOEMetaInfo.java (+105/-87)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/AOEVolumeInfo.java (+4/-2)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/AttachedVolumeInfo.java (+0/-132)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/BucketInfo.java (+23/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/CHAPUserInfo.java (+136/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/CertificateInfo.java (+0/-125)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/ClusterInfo.java (+6/-3)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/Counters.java (+0/-169)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/DirectStorageInfo.java (+219/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/GrantInfo.java (+6/-5)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/ISCSIMetaInfo.java (+124/-105)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/ISCSIVolumeInfo.java (+1/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/ImagePermissionInfo.java (+0/-117)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/LVMMetaInfo.java (+2/-41)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/LVMVolumeInfo.java (+1/-1)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/MetaDataInfo.java (+0/-2)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/ObjectInfo.java (+52/-3)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/StorageInfo.java (+101/-103)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/SystemConfiguration.java (+222/-62)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/UserGroupInfo.java (+0/-158)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/UserInfo.java (+0/-334)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/VmType.java (+0/-214)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/entities/WalrusInfo.java (+90/-61)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/state/AbstractIsomorph.java (+5/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/cloud/state/State.java (+1/-1)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/Admin.java (+0/-125)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/ReplyCoordinator.java (+65/-48)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/StreamConsumer.java (+1/-0)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/SystemUtil.java (+26/-4)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/UserManagement.java (+6/-70)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/WalrusDataMessenger.java (+0/-1)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/WalrusDataQueue.java (+0/-88)
clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/XMLParser.java (+1/-1)
clc/modules/core/src/main/java/org/hsqldb/HsqlSocketFactorySecure.java (+0/-94)
clc/modules/core/src/main/resources/log4j.xml (+195/-203)
clc/modules/database/conf/scripts/after_database.groovy (+10/-8)
clc/modules/database/conf/scripts/after_persistence.groovy (+1/-3)
clc/modules/database/conf/scripts/before_database.groovy (+32/-7)
clc/modules/database/conf/scripts/caches.groovy (+0/-1)
clc/modules/database/conf/scripts/pools.groovy (+4/-4)
clc/modules/database/src/main/java/com/eucalyptus/bootstrap/DatabaseConfig.java (+12/-14)
clc/modules/database/src/main/java/com/eucalyptus/bootstrap/LocalDatabaseBootstrapper.java (+14/-23)
clc/modules/database/src/main/java/com/eucalyptus/util/DatabaseUtil.java (+0/-109)
clc/modules/database/src/main/java/com/eucalyptus/util/EntityWrapper.java (+0/-233)
clc/modules/database/src/main/java/com/eucalyptus/util/TxHandle.java (+0/-198)
clc/modules/distribution/bin-assembly.xml (+0/-164)
clc/modules/distribution/distribution.iml (+0/-49)
clc/modules/distribution/lib-assembly.xml (+0/-84)
clc/modules/distribution/modules-assembly.xml (+0/-81)
clc/modules/distribution/pom.xml (+0/-299)
clc/modules/dns/src/main/java/com/eucalyptus/bootstrap/DNSBootstrapper.java (+5/-3)
clc/modules/dns/src/main/java/com/eucalyptus/cloud/ws/DNSControl.java (+19/-9)
clc/modules/dns/src/main/java/com/eucalyptus/cloud/ws/ZoneManager.java (+7/-1)
clc/modules/dns/src/main/java/com/eucalyptus/dns/TransientZone.java (+76/-5)
clc/modules/dns/src/main/java/com/eucalyptus/ic/DNS.java (+0/-101)
clc/modules/dns/src/main/resources/com.eucalyptus.CloudServiceProvider (+3/-0)
clc/modules/dns/src/main/resources/dns-model.xml (+0/-7)
clc/modules/dns/src/main/resources/dns-services.xml (+2/-2)
clc/modules/group-manager/pom.xml (+0/-87)
clc/modules/group-manager/src/main/java/com/eucalyptus/network/NetworkGroupManager.java (+54/-50)
clc/modules/group-manager/src/main/java/com/eucalyptus/network/NetworkGroupUtil.java (+6/-6)
clc/modules/hsqldb/build.xml (+71/-0)
clc/modules/hsqldb/src/main/java/org/hsqldb/HsqlSocketFactorySecure.java (+321/-0)
clc/modules/hsqldb/src/main/resources/com.eucalyptus.CloudServiceProvider (+6/-0)
clc/modules/hsqldb/src/main/resources/db-model.xml (+79/-0)
clc/modules/hsqldb/src/main/resources/db-services.xml (+78/-0)
clc/modules/image-manager/image-manager.iml (+0/-35)
clc/modules/image-manager/pom.xml (+0/-92)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/Snapshot.java (+160/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/SnapshotManager.java (+251/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/StorageUtil.java (+172/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/Volume.java (+202/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/VolumeManager.java (+390/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/blockstorage/WalrusUtil.java (+210/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/images/ImageManager.java (+523/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/images/ImageUtil.java (+508/-0)
clc/modules/image-manager/src/main/java/com/eucalyptus/images/util/ImageUtil.java (+0/-481)
clc/modules/image-manager/src/main/java/com/eucalyptus/images/util/WalrusUtil.java (+0/-204)
clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/state/Snapshot.java (+0/-155)
clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/state/Volume.java (+0/-188)
clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/SnapshotManager.java (+0/-206)
clc/modules/interface/interface.iml (+0/-21)
clc/modules/interface/pom.xml (+0/-101)
clc/modules/interface/src/main/java/edu/ucsb/eucalyptus/ic/DNSReplyQueue.java (+7/-7)
clc/modules/interface/src/main/java/edu/ucsb/eucalyptus/ic/Eucalyptus.java (+4/-12)
clc/modules/interface/src/main/java/edu/ucsb/eucalyptus/ic/StorageReplyQueue.java (+5/-4)
clc/modules/interface/src/main/java/edu/ucsb/eucalyptus/ic/WalrusMessaging.java (+0/-120)
clc/modules/interface/src/main/java/edu/ucsb/eucalyptus/ic/WalrusReplyQueue.java (+0/-124)
clc/modules/key-manager/pom.xml (+0/-87)
clc/modules/key-manager/src/main/java/com/eucalyptus/keys/KeyPairManager.java (+2/-2)
clc/modules/key-manager/src/main/java/com/eucalyptus/keys/KeyPairUtil.java (+4/-8)
clc/modules/module-inc.xml (+136/-107)
clc/modules/msgs/build.xml (+1/-31)
clc/modules/msgs/conf/scripts/startup.groovy (+0/-77)
clc/modules/msgs/pom.xml (+0/-167)
clc/modules/msgs/src/main/java/com/eucalyptus/BaseException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/Authentication.java (+153/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/GroupExistsException.java (+23/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/Groups.java (+62/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/NoSuchGroupException.java (+85/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/NoSuchUserException.java (+62/-65)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/UserExistsException.java (+85/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/UserInfo.java (+280/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/UserInfoStore.java (+41/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/Users.java (+130/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/BaseLoginModule.java (+151/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/BaseSecurityException.java (+40/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/BaseSecurityProvider.java (+10/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/CertificateProvider.java (+34/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/CryptoProvider.java (+29/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/GroupProvider.java (+27/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/HmacProvider.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/NoSuchCertificateException.java (+39/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/UserInfoProvider.java (+16/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/api/UserProvider.java (+95/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Certs.java (+76/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Crypto.java (+51/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Digest.java (+31/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Hmac.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Hmacs.java (+42/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/crypto/Signatures.java (+52/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/AuthenticationException.java (+88/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/HmacCredentials.java (+73/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/Hmacv1LoginModule.java (+78/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/Hmacv2LoginModule.java (+98/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/SecurityContext.java (+72/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/WalrusWrappedComponentCredentials.java (+91/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/WalrusWrappedCredentials.java (+85/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/WrappedCredentials.java (+28/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/WsSecCredentials.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/login/WsSecLoginModule.java (+56/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Authorization.java (+43/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/AvailabilityZonePermission.java (+35/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/BaseAuthorization.java (+85/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/BasePrincipal.java (+37/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Cluster.java (+7/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/ComponentPrincipal.java (+9/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Eucalyptus.java (+6/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Group.java (+41/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Node.java (+6/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Storage.java (+7/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/User.java (+82/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/Walrus.java (+5/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/credential/CredentialPrincipal.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/credential/HmacPrincipal.java (+24/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/credential/X509Principal.java (+36/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/domain/ClusterDomain.java (+7/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/domain/Domain.java (+8/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/domain/ExternalDomain.java (+6/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/principal/domain/UserDomain.java (+6/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/util/B64.java (+72/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/util/PEMFiles.java (+56/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/util/SecurityParameter.java (+13/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/util/Timestamps.java (+36/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/auth/util/WSSecurity.java (+117/-99)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/Binding.java (+107/-228)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/BindingDiscovery.java (+49/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/BindingException.java (+7/-4)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/BindingGenerator.java (+24/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/BindingManager.java (+83/-68)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/BuildBindings.java (+164/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/HoldMe.java (+58/-54)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/HttpEmbedded.java (+77/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/HttpParameterMapping.java (+78/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/binding/InternalSoapBindingGenerator.java (+465/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Bootstrap.java (+281/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/BootstrapException.java (+59/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/BootstrapFactory.java (+0/-183)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Bootstrapper.java (+207/-99)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/BootstrapperDiscovery.java (+72/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Component.java (+96/-167)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/DatabaseBootstrapper.java (+8/-2)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/DeferredInitializer.java (+0/-116)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Depends.java (+0/-77)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/DependsLocal.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/DependsRemote.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/NeedsDeferredInitialization.java (+0/-75)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Provides.java (+1/-2)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/Resource.java (+0/-166)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/ResourceProvider.java (+0/-151)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/RunDuring.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/ServiceBootstrapper.java (+0/-152)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/ServiceJarDiscovery.java (+224/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/SystemBootstrapper.java (+139/-193)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/transitions/BootstrapTransition.java (+16/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/bootstrap/transitions/LoadConfigs.java (+63/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/AbstractServiceBuilder.java (+79/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Component.java (+327/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ComponentInformation.java (+11/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Components.java (+290/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Configuration.java (+152/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Configurations.java (+19/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Credentials.java (+40/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DatabaseServiceBuilder.java (+93/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DatabaseServiceConfigurationProvider.java (+82/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DefaultServiceBuilder.java (+73/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DefaultTransition.java (+26/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DefaultTransitionList.java (+25/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DiscoverableServiceBuilder.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Dispatcher.java (+27/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DispatcherFactory.java (+28/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/DispatcherFactoryDiscovery.java (+23/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Lifecycle.java (+63/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Lifecycles.java (+72/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Resource.java (+158/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Service.java (+106/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceBuilder.java (+43/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceBuilderDiscovery.java (+28/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceConfiguration.java (+27/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceConfigurationProvider.java (+13/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceConfigurations.java (+18/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceEndpoint.java (+47/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/ServiceRegistrationException.java (+23/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/Services.java (+90/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/event/LifecycleEvent.java (+34/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/event/StartComponentEvent.java (+42/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/component/event/StopComponentEvent.java (+29/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/config/ConfigurationEntities.groovy (+321/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/AbstractConfigurableProperty.java (+95/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurableClass.java (+16/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurableField.java (+19/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurableFieldType.java (+69/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurableIdentifier.java (+11/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurableProperty.java (+34/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurablePropertyBuilder.java (+7/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurablePropertyException.java (+23/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/ConfigurationProperties.java (+151/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/MultiDatabasePropertyEntry.java (+193/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/PropertiesBootstrapper.java (+25/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/PropertiesDiscovery.java (+42/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/PropertyDirectory.java (+153/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/PropertyTypeParser.java (+70/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/SingletonDatabasePropertyEntry.java (+148/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/configurable/StaticPropertyEntry.java (+81/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/Context.java (+136/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/Contexts.java (+89/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/IllegalContextAccessException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/NoSuchContextException.java (+23/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/ServiceContext.java (+205/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/context/ServiceInitializationException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/Counters.java (+172/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/EntityWrapper.java (+243/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/PersistenceContextDiscovery.java (+42/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/PersistenceContexts.java (+137/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/TxHandle.java (+200/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/VmType.java (+183/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/entities/_anon.java (+66/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/event/AbstractNamedRegistry.java (+6/-4)
clc/modules/msgs/src/main/java/com/eucalyptus/event/Event.java (+0/-1)
clc/modules/msgs/src/main/java/com/eucalyptus/event/EventListenerDiscovery.java (+40/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/event/ListenerRegistry.java (+2/-2)
clc/modules/msgs/src/main/java/com/eucalyptus/event/PassiveEventListener.java (+22/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/event/ReentrantListenerRegistry.java (+25/-18)
clc/modules/msgs/src/main/java/com/eucalyptus/event/StatefulNamedRegistry.java (+1/-3)
clc/modules/msgs/src/main/java/com/eucalyptus/event/SystemClock.java (+71/-3)
clc/modules/msgs/src/main/java/com/eucalyptus/http/MappingHttpMessage.java (+14/-14)
clc/modules/msgs/src/main/java/com/eucalyptus/http/MappingHttpRequest.java (+27/-22)
clc/modules/msgs/src/main/java/com/eucalyptus/http/MappingHttpResponse.java (+1/-1)
clc/modules/msgs/src/main/java/com/eucalyptus/images/Image.java (+48/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/images/ImageAuthorization.java (+68/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/images/ImageInfo.java (+408/-203)
clc/modules/msgs/src/main/java/com/eucalyptus/images/Images.java (+48/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/images/NoSuchImageException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/images/ProductCode.java (+1/-1)
clc/modules/msgs/src/main/java/com/eucalyptus/records/BaseRecord.java (+338/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/EventClass.java (+5/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/EventRecord.java (+68/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/EventType.java (+221/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/LogFileRecord.java (+44/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/Record.java (+27/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/records/RecordLevel.java (+12/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/scripting/ScriptExecutionFailedException.java (+89/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/scripting/groovy/GroovyUtil.java (+21/-12)
clc/modules/msgs/src/main/java/com/eucalyptus/system/Ats.java (+26/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/BaseDirectory.java (+113/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/DirectoryBootstrapper.java (+36/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/EucaLayout.java (+136/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/LogLevels.java (+8/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/SubDirectory.java (+116/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/system/Threads.java (+346/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/BaseDirectory.java (+0/-102)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Committor.java (+6/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Composite.java (+22/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/CompositeHelper.groovy (+71/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Composites.java (+101/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/DebugUtil.java (+0/-180)
clc/modules/msgs/src/main/java/com/eucalyptus/util/EucaLayout.java (+0/-136)
clc/modules/msgs/src/main/java/com/eucalyptus/util/EucalyptusCloudException.java (+4/-2)
clc/modules/msgs/src/main/java/com/eucalyptus/util/EucalyptusProperties.java (+0/-99)
clc/modules/msgs/src/main/java/com/eucalyptus/util/ExceptionNotRelatedException.java (+0/-21)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Exceptions.java (+59/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Expendable.java (+74/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/FailScriptFailException.java (+0/-87)
clc/modules/msgs/src/main/java/com/eucalyptus/util/FinalReturn.java (+24/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/GenerateJiBXBinding.java (+0/-238)
clc/modules/msgs/src/main/java/com/eucalyptus/util/HasName.java (+64/-67)
clc/modules/msgs/src/main/java/com/eucalyptus/util/HasParent.java (+5/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/JoinTx.java (+7/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/LogUtil.groovy (+17/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Mappable.java (+69/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/NetworkUtil.java (+61/-28)
clc/modules/msgs/src/main/java/com/eucalyptus/util/ServiceJarFile.java (+0/-190)
clc/modules/msgs/src/main/java/com/eucalyptus/util/SimpleTransition.java (+38/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/SubDirectory.java (+0/-96)
clc/modules/msgs/src/main/java/com/eucalyptus/util/TimedEvictionSet.java (+188/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/TransactionException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/TransactionFireException.java (+21/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Transactions.java (+125/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Transition.java (+240/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/Tx.java (+5/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/util/async/Callback.java (+166/-0)
clc/modules/msgs/src/main/java/com/eucalyptus/ws/Client.java (+4/-4)
clc/modules/msgs/src/main/java/com/eucalyptus/ws/WebServicesException.java (+2/-1)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/annotation/HttpBinding.java (+0/-77)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/annotation/HttpEmbedded.java (+0/-77)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/annotation/HttpParameterMapping.java (+0/-78)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/cloud/Extra.groovy (+218/-209)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/constants/EventType.java (+0/-90)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/constants/VmState.java (+0/-109)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/BaseMessage.java (+148/-0)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/Configuration.groovy (+2/-3)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/DNS.groovy (+8/-4)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/EventRecord.java (+0/-102)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/Messages.groovy (+111/-134)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/Properties.groovy (+92/-0)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/StorageController.groovy (+56/-62)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/Users.groovy (+112/-0)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmAddresses.groovy (+1/-1)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmBlockDevice.groovy (+22/-7)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmControl.groovy (+5/-4)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmImages.groovy (+8/-1)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmKeys.groovy (+1/-1)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmLocation.groovy (+1/-1)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmNetwork.groovy (+16/-12)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmSecurity.groovy (+2/-2)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/Walrus.groovy (+94/-33)
clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/util/BindingUtil.java (+0/-79)
clc/modules/msgs/src/main/resources/aws-images-09-10-31.xml (+118/-107)
clc/modules/msgs/src/main/resources/cc-types.xml (+162/-186)
clc/modules/msgs/src/main/resources/com.eucalyptus.CloudServiceProvider (+3/-0)
clc/modules/msgs/src/main/resources/eucalyptus-bootstrap.xml (+55/-49)
clc/modules/msgs/src/main/resources/s3-2006-03-01-binding.xml (+113/-44)
clc/modules/msgs/src/main/resources/storage-controller-binding.xml (+0/-38)
clc/modules/storage-common/src/main/java/edu/ucsb/eucalyptus/storage/StorageManager.java (+11/-0)
clc/modules/storage-common/src/main/java/edu/ucsb/eucalyptus/storage/fs/FileSystemStorageManager.java (+51/-1)
clc/modules/storage-controller/build.xml (+16/-14)
clc/modules/storage-controller/include/storage_native.h (+4/-0)
clc/modules/storage-controller/native/Makefile (+1/-0)
clc/modules/storage-controller/native/com_eucalyptus_storage_AOEManager.c (+49/-0)
clc/modules/storage-controller/native/com_eucalyptus_storage_OverlayManager.c (+88/-0)
clc/modules/storage-controller/native/edu_ucsb_eucalyptus_storage_AOEManager.c (+0/-48)
clc/modules/storage-controller/native/edu_ucsb_eucalyptus_storage_LVM2Manager.c (+0/-87)
clc/modules/storage-controller/native/liblvm2control.iml (+0/-124)
clc/modules/storage-controller/native/pom.xml (+0/-151)
clc/modules/storage-controller/pom.xml (+0/-161)
clc/modules/storage-controller/src/main/java/com/eucalyptus/bootstrap/BlockStorageBootstrapper.java (+10/-5)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/AOEManager.java (+182/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/BlockStorageChecker.java (+280/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/BlockStorageManagerFactory.java (+89/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/ISCSIManager.java (+351/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/LogicalStorageManager.java (+128/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/OverlayManager.java (+1253/-0)
clc/modules/storage-controller/src/main/java/com/eucalyptus/storage/StorageExportManager.java (+83/-0)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/BlockStorage.java (+252/-176)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/BlockStorageEventListener.java (+92/-0)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/BlockStorageStatistics.java (+17/-4)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/HttpReader.java (+44/-8)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/HttpWriter.java (+2/-2)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/SnapshotProgressCallback.java (+4/-5)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/SnapshotService.java (+1/-1)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/StorageEventListener.java (+0/-119)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/tests/CreateSnapshotTest.java (+1/-1)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/tests/DeleteSnapshotTest.java (+1/-1)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/tests/VolumeTest.java (+1/-1)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/ic/StorageController.java (+0/-105)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/AOEManager.java (+0/-185)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/BlockStorageChecker.java (+0/-315)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/BlockStorageManagerFactory.java (+0/-72)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/ISCSIManager.java (+0/-213)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/LogicalStorageManager.java (+0/-114)
clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/StorageExportManager.java (+0/-83)
clc/modules/storage-controller/src/main/resources/com.eucalyptus.CloudServiceProvider (+3/-0)
clc/modules/storage-controller/src/main/resources/storage-model.xml (+112/-123)
clc/modules/storage-controller/src/main/resources/storage-services.xml (+4/-4)
clc/modules/walrus/pom.xml (+0/-146)
clc/modules/walrus/src/main/java/com/eucalyptus/auth/login/WalrusComponentLoginModule.java (+153/-0)
clc/modules/walrus/src/main/java/com/eucalyptus/auth/login/WalrusLoginModule.java (+122/-0)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/TorrentCreator.java (+1/-1)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/Tracker.java (+18/-5)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusBlockStorageManager.java (+100/-70)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusControl.java (+63/-86)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusEventListener.java (+8/-20)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusImageManager.java (+278/-39)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusManager.java (+2029/-760)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusStatistics.java (+1/-1)
clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/ic/Walrus.java (+0/-100)
clc/modules/walrus/src/main/resources/com.eucalyptus.CloudServiceProvider (+4/-1)
clc/modules/walrus/src/main/resources/walrus-model.xml (+60/-77)
clc/modules/walrus/src/main/resources/walrus-services.xml (+2/-2)
clc/modules/walrus/storage-manager.iml (+0/-19)
clc/modules/wsstack/conf/scripts/walruslogger.groovy (+10/-0)
clc/modules/wsstack/pom.xml (+0/-222)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/AuthenticationException.java (+0/-87)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/DeferredPropertiesBootstrapper.java (+119/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/EucalyptusRemoteFault.java (+22/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/ServiceDispatchBootstrapper.java (+136/-171)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/ServiceNotReadyException.java (+25/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/ServiceVerifyBootstrapper.java (+43/-26)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/DefaultDispatcherFactory.java (+30/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/HeartbeatClient.java (+7/-6)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/LocalDispatcher.java (+4/-8)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/NioBootstrap.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/NioClient.java (+9/-8)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/NioMessageAdapter.java (+3/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/NioMessageDispatcher.java (+5/-5)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/NioMessageReceiver.java (+0/-4)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/RemoteBootstrapperClient.java (+47/-36)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/RemoteDispatcher.java (+14/-18)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/ServiceDispatcher.java (+63/-25)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/ServiceEventListener.java (+18/-36)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/pipeline/ClusterClientPipeline.java (+3/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/pipeline/InternalClientPipeline.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/client/pipeline/NioClientPipeline.java (+8/-7)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/BindingHandler.java (+18/-14)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/ChannelStateMonitor.java (+21/-12)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/EucalyptusQueryBinding.java (+13/-12)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/HeartbeatHandler.java (+158/-114)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/HmacHandler.java (+92/-153)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/MessageStackHandler.java (+4/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/NioHttpResponseDecoder.java (+2/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/NioResponseHandler.java (+20/-20)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/QueryTimestampHandler.java (+15/-13)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/ResponseHandler.java (+14/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/RestfulMarshallingHandler.java (+94/-92)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/ServiceSinkHandler.java (+112/-52)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/SoapMarshallingHandler.java (+3/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/UploadPolicyChecker.java (+216/-0)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusAuthenticationHandler.java (+96/-101)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusOutboundHandler.java (+9/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusPOSTAuthenticationHandler.java (+16/-163)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusPOSTIncomingHandler.java (+3/-4)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTBinding.java (+90/-57)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTLoggerInbound.java (+12/-11)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTLoggerOutbound.java (+5/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusSoapHandler.java (+3/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusSoapUserAuthenticationHandler.java (+12/-11)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/http/NioHttpDecoder.java (+5/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/http/NioHttpRequestEncoder.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/soap/AddressingHandler.java (+2/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/soap/SoapHandler.java (+4/-4)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/wssecurity/ClusterWsSecHandler.java (+0/-5)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/wssecurity/InternalWsSecHandler.java (+20/-11)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/wssecurity/UserWsSecHandler.java (+4/-16)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/wssecurity/WsSecHandler.java (+2/-8)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/ElasticFoxPipeline.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/EucalyptusQueryPipeline.java (+4/-4)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/EucalyptusSoapPipeline.java (+1/-5)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/FilteredPipeline.java (+10/-15)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/HeartbeatPipeline.java (+0/-14)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/InternalQueryPipeline.java (+3/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/InternalSoapPipeline.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/MetadataPipeline.java (+5/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/NioServerHandler.java (+43/-20)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/NioServerPipelineFactory.java (+0/-5)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/RemoteBootstrapperServer.java (+46/-14)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/WalrusRESTPipeline.java (+2/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/WalrusRESTPostPipeline.java (+2/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/BindingStage.java (+0/-4)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/ElasticFoxMangleHandler.java (+6/-3)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/HmacUserAuthenticationStage.java (+7/-9)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/QueryBindingStage.java (+2/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/SoapUserAuthenticationStage.java (+0/-2)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/WalrusOutboundStage.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/stages/WalrusPOSTUserAuthenticationStage.java (+1/-1)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/ChannelUtil.java (+123/-90)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/HmacUtils.java (+5/-38)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/PipelineRegistry.java (+5/-6)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/ReplyQueue.java (+56/-45)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/RequestQueue.java (+27/-57)
clc/modules/wsstack/src/main/java/com/eucalyptus/ws/util/WalrusBucketLogger.java (+17/-10)
clc/modules/www/build.xml (+48/-23)
clc/modules/www/conf/www/admin.xml (+1/-0)
clc/modules/www/pom.xml (+0/-232)
clc/modules/www/src/main/java/com/eucalyptus/bootstrap/HttpServerBootstrapper.java (+142/-82)
clc/modules/www/src/main/java/com/eucalyptus/www/Redirect.java (+28/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/EucalyptusWebInterface.gwt.xml (+8/-3)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/ClusterInfoTable.java (+59/-94)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/ContentControl.java (+8/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/Debugging.java (+19/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucaButton.java (+143/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucaImageButton.java (+129/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebBackend.java (+1/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebBackendAsync.java (+3/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java (+14/-14)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/ImageInfoWeb.java (+9/-8)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/StorageInfoWeb.java (+107/-150)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/SystemConfigTable.java (+8/-6)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/SystemConfigWeb.java (+166/-177)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/Tooltip.java (+66/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/UserInfoWeb.java (+54/-57)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/VmTypeTable.java (+5/-3)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/WalrusInfoTable.java (+64/-65)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/WalrusInfoWeb.java (+12/-64)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/util/Buttons.java (+22/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/util/Events.java (+12/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/util/Images.java (+5/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/util/Observer.java (+6/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/EucalyptusWebInterface.html (+1/-0)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/EucalyptusManagement.java (+187/-328)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/EucalyptusWebBackendImpl.java (+107/-40)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/Registration.java (+136/-198)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/RemoteInfoHandler.java (+219/-225)
clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/X509Download.java (+163/-164)
clc/modules/www/src/main/resources/com.eucalyptus.CloudServiceProvider (+4/-1)
clc/modules/www/src/main/resources/eucalyptus-jetty.xml (+89/-74)
clc/modules/www/test-gwt/.classpath (+7/-0)
clc/modules/www/test-gwt/.project (+29/-0)
clc/modules/www/test-gwt/src/edu/ucsb/eucalyptus/admin/EucalyptusWebInterface.gwt.xml (+101/-0)
clc/modules/www/test-gwt/src/edu/ucsb/eucalyptus/admin/server/EucalyptusWebBackendImpl.java (+288/-0)
clc/modules/www/test-gwt/war/WEB-INF/web.xml (+24/-0)
clc/pom.xml (+0/-802)
clc/tools/.project (+17/-0)
clc/tools/.pydevproject (+10/-0)
clc/tools/src/euca-add-group (+17/-0)
clc/tools/src/euca-add-user (+14/-0)
clc/tools/src/euca-add-user-group (+14/-0)
clc/tools/src/euca-delete-user (+14/-0)
clc/tools/src/euca-delete-user-group (+14/-0)
clc/tools/src/euca-deregister-cluster (+14/-0)
clc/tools/src/euca-deregister-storage-controller (+14/-0)
clc/tools/src/euca-deregister-walrus (+17/-0)
clc/tools/src/euca-describe-clusters (+12/-0)
clc/tools/src/euca-describe-groups (+15/-0)
clc/tools/src/euca-describe-properties (+12/-0)
clc/tools/src/euca-describe-storage-controllers (+12/-0)
clc/tools/src/euca-describe-user-groups (+12/-0)
clc/tools/src/euca-describe-users (+12/-0)
clc/tools/src/euca-describe-walruses (+12/-0)
clc/tools/src/euca-get-credentials (+21/-0)
clc/tools/src/euca-modify-property (+12/-0)
clc/tools/src/euca-register-cluster (+14/-0)
clc/tools/src/euca-register-storage-controller (+14/-0)
clc/tools/src/euca-register-walrus (+17/-0)
clc/tools/src/euca_admin/__init__.py (+46/-0)
clc/tools/src/euca_admin/clusters.py (+94/-0)
clc/tools/src/euca_admin/generic.py (+41/-0)
clc/tools/src/euca_admin/groups.py (+90/-0)
clc/tools/src/euca_admin/properties.py (+105/-0)
clc/tools/src/euca_admin/storagecontrollers.py (+94/-0)
clc/tools/src/euca_admin/users.py (+142/-0)
clc/tools/src/euca_admin/walruses.py (+67/-0)
cluster/CCclient.c (+8/-2)
cluster/Makefile (+10/-10)
cluster/axis2_svc_generated.patch (+1/-1)
cluster/cc-client-marshal-adb.c (+7/-12)
cluster/cc-client-marshal.h (+2/-1)
cluster/handlers.c (+885/-692)
cluster/handlers.h (+25/-28)
cluster/server-marshal.c (+17/-24)
configure (+87/-9)
configure.ac (+1/-0)
debian/axis2.xml (+0/-128)
debian/control (+16/-13)
debian/eucalyptus-cc.install (+1/-1)
debian/eucalyptus-cloud.install (+0/-2)
debian/eucalyptus-cloud.postinst (+3/-3)
debian/eucalyptus-common.install (+37/-3)
debian/eucalyptus-common.postinst (+10/-2)
debian/eucalyptus-common.preinst (+15/-1)
debian/eucalyptus-java-common.install (+6/-16)
debian/eucalyptus-java-common.postinst (+17/-0)
debian/eucalyptus-nc.install (+4/-5)
debian/eucalyptus-sc.install (+0/-1)
debian/eucalyptus-walrus.install (+0/-1)
debian/patches/03-DESTDIR.patch (+0/-282)
debian/rules (+1/-2)
eucalyptus.spec (+156/-85)
gatherlog/Makefile (+1/-1)
gatherlog/handlers.c (+15/-9)
net/Makefile (+1/-1)
net/dhcp.c (+0/-344)
net/dhcp.h (+0/-99)
net/test.c (+0/-104)
net/vnetwork.c (+154/-114)
net/vnetwork.h (+14/-6)
node/Makefile (+7/-7)
node/NCclient.c (+21/-6)
node/axis2_svc_generated.patch (+1/-1)
node/client-marshal-adb.c (+86/-48)
node/client-marshal-local.c (+2/-2)
node/client-marshal.h (+2/-1)
node/handlers.c (+172/-76)
node/handlers.h (+44/-20)
node/handlers_default.c (+67/-25)
node/handlers_kvm.c (+168/-36)
node/handlers_xen.c (+124/-68)
node/server-marshal.c (+17/-16)
node/test_nc.c (+1/-0)
storage/storage.c (+191/-72)
storage/storage.h (+9/-1)
storage/walrus.c (+3/-3)
tools/Makefile (+22/-22)
tools/add_key.pl (+17/-0)
tools/connect_iscsitarget.pl (+32/-25)
tools/detach.pl (+36/-3)
tools/disconnect_iscsitarget.pl (+7/-2)
tools/euca-axis2c.spec-not (+16/-12)
tools/euca-rampartc.spec-not (+14/-15)
tools/euca_conf.8 (+8/-8)
tools/euca_conf.in (+77/-44)
tools/euca_upgrade (+212/-137)
tools/eucalyptus-cloud.in (+11/-9)
tools/eucalyptus-nc.in (+17/-5)
tools/eucalyptus.conf (+46/-9)
tools/eucalyptus.conf.5 (+222/-0)
tools/gen_kvm_libvirt_xml (+48/-2)
tools/get_iscsitarget.pl (+1/-1)
tools/partition2disk (+14/-0)
util/Makefile (+6/-6)
util/adb-helpers.h (+48/-0)
util/data.c (+38/-8)
util/data.h (+31/-19)
util/euca_auth.c (+2/-167)
util/euca_auth.h (+0/-15)
util/euca_axis.c (+258/-0)
util/euca_axis.h (+84/-0)
util/euca_mountwrap.c (+18/-5)
util/euca_rootwrap.c (+10/-0)
util/eucalyptus-config.h.in (+2/-0)
util/eucalyptus.h (+34/-2)
util/ipc.c (+22/-10)
util/ipc.h (+2/-0)
util/misc.c (+396/-122)
util/misc.h (+19/-10)
util/pwcb.c (+0/-172)
wsdl/eucalyptus_cc.wsdl (+23/-24)
wsdl/eucalyptus_nc.wsdl (+26/-11)
Text conflict in clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AbstractSystemAddressManager.java
Text conflict in clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/Address.java
Text conflict in clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AddressCategory.java
Text conflict in clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/DynamicSystemAddressManager.java
Conflict: can't delete clc/modules/cluster-manager/src/main/java/com/eucalyptus/net because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/com/eucalyptus/net is not versioned, but has versioned children.  Versioned directory.
Conflict: can't delete clc/modules/cluster-manager/src/main/java/com/eucalyptus/net/util because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/com/eucalyptus/net/util is not versioned, but has versioned children.  Versioned directory.
Contents conflict in clc/modules/cluster-manager/src/main/java/com/eucalyptus/net/util/ClusterAddressInfo.groovy
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu is not versioned, but has versioned children.  Versioned directory.
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu/ucsb because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu/ucsb is not versioned, but has versioned children.  Versioned directory.
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus is not versioned, but has versioned children.  Versioned directory.
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud is not versioned, but has versioned children.  Versioned directory.
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster is not versioned, but has versioned children.  Versioned directory.
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/AssignAddressCallback.java
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ConsoleOutputCallback.java
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/QueuedEventCallback.java
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/UnassignAddressCallback.groovy
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstance.java
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstances.java
Conflict: can't delete clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws because it is not empty.  Not deleting.
Conflict because clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws is not versioned, but has versioned children.  Versioned directory.
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/SystemState.java
Contents conflict in clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VmMetadata.java
Contents conflict in clc/modules/core/conf/scripts/Import_161.groovy
Contents conflict in clc/modules/core/src/main/java/edu/ucsb/eucalyptus/util/EucalyptusProperties.java
Contents conflict in clc/modules/database/conf/scripts/entities.groovy
Conflict: can't delete clc/modules/image-manager/src/main/java/com/eucalyptus/images/util because it is not empty.  Not deleting.
Conflict because clc/modules/image-manager/src/main/java/com/eucalyptus/images/util is not versioned, but has versioned children.  Versioned directory.
Contents conflict in clc/modules/image-manager/src/main/java/com/eucalyptus/images/util/StorageUtil.java
Contents conflict in clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/ImageManager.java
Contents conflict in clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VolumeManager.java
Text conflict in clc/modules/msgs/src/main/java/edu/ucsb/eucalyptus/msgs/VmBlockDevice.groovy
Text conflict in clc/modules/storage-common/src/main/java/edu/ucsb/eucalyptus/storage/StorageManager.java
Text conflict in clc/modules/storage-common/src/main/java/edu/ucsb/eucalyptus/storage/fs/FileSystemStorageManager.java
Text conflict in clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/cloud/ws/BlockStorage.java
Conflict: can't delete clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage because it is not empty.  Not deleting.
Conflict because clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage is not versioned, but has versioned children.  Versioned directory.
Contents conflict in clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/LVM2Manager.java
Text conflict in clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusImageManager.java
Text conflict in clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusManager.java
Text conflict in clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/ChannelStateMonitor.java
Text conflict in clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/QueryTimestampHandler.java
Text conflict in clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/ServiceSinkHandler.java
Text conflict in clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTBinding.java
Text conflict in clc/modules/wsstack/src/main/java/com/eucalyptus/ws/server/NioServerHandler.java
Text conflict in cluster/handlers.c
Contents conflict in debian/build-jars
Text conflict in debian/control
Contents conflict in debian/eucalyptus-java-common.links
Text conflict in eucalyptus.spec
Text conflict in net/vnetwork.c
Text conflict in node/handlers.c
Text conflict in node/handlers_default.c
Text conflict in node/handlers_kvm.c
Text conflict in tools/euca_conf.in
Text conflict in tools/euca_upgrade
To merge this branch: bzr merge lp:~kirkland/eucalyptus/label-metadata
Reviewer Review Type Date Requested Status
Eucalyptus Maintainers Pending
Review via email: mp+32924@code.launchpad.net

Description of the change

See commit message

To post a comment you must log in.

Unmerged revisions

1232. By Dustin Kirkland 

cluster/handlers.c, net/vnetwork.c: label the 169.254.169.254 link
local address with :metadata, the public vm ip addresses with :pub,
and the private vm ip addresses with :priv, to separate it appropriately
(LP: #451607, #452754)

1231. By decker <decker@hawaii>

merge bugs fixes related to LP: #566792 #606243 #563175 #613832

1230. By decker <decker@personal-army>

fix url construction for components with absent configuration files (LP: #613033) and restore ssl support (LP: #584497)

1229. By decker <decker@personal-army>

merge missing fix to addressing

1228. By decker <decker@personal-army>

merge fixes to addressing, volume attach, remote components, and upgrade. see merge log for details

1227. By Neil <neil@pall>

fixes LP: #611769

1226. By Neil <neil@pall>

fixes LP: #617032

1225. By decker <decker@personal-army>

fix to remote sc/walrus bootstrap

1224. By decker <decker@hawaii>

fix to remote sc/walrus bootstrap

1223. By Dmitrii Zagorodnov <email address hidden>

changed sudo to euca_rootwrap in ISCSIManager; small change in spec file

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2010-01-28 04:04:22 +0000
3+++ Makefile 2010-08-17 20:32:41 +0000
4@@ -57,7 +57,7 @@
5 (cd $$subdir && $(MAKE) $@) || exit $$? ; done
6
7 uninstall:
8- @$(RM) -f $(etcdir)/eucalyptus/eucalyptus-version
9+ @$(RM) -f $(DESTDIR)$(etcdir)/eucalyptus/eucalyptus-version
10 @for subdir in $(SUBDIRS); do \
11 (cd $$subdir && $(MAKE) $@) || exit $$? ; done
12
13
14=== modified file 'VERSION'
15--- VERSION 2010-01-07 03:08:33 +0000
16+++ VERSION 2010-08-17 20:32:41 +0000
17@@ -1,1 +1,1 @@
18-1.6.2
19+2.0.0
20
21=== modified file 'clc/.classpath'
22--- clc/.classpath 2010-06-29 10:50:36 +0000
23+++ clc/.classpath 2010-08-17 20:32:41 +0000
24@@ -15,15 +15,15 @@
25 <classpathentry kind="src" output="modules/authentication/build" path="modules/authentication/src/main/java"/>
26 <classpathentry kind="src" output="modules/www/build" path="modules/www/src/main/java"/>
27 <classpathentry kind="src" output="modules/cloud/build" path="modules/cloud/src/main/java"/>
28+ <classpathentry kind="src" output="modules/component/build" path="modules/component/src/main/java"/>
29 <classpathentry kind="src" output="modules/configuration/build" path="modules/configuration/src/main/java"/>
30 <classpathentry kind="src" output="modules/walrus/build" path="modules/walrus/src/main/java"/>
31 <classpathentry kind="src" output="modules/storage-common/build" path="modules/storage-common/src/main/java"/>
32 <classpathentry kind="src" path="modules/configuration/conf/scripts"/>
33 <classpathentry kind="con" path="GROOVY_SUPPORT"/>
34 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
35- <classpathentry kind="lib" path="lib/activation-1.1.1.jar"/>
36 <classpathentry kind="lib" path="lib/ant-1.7.jar"/>
37- <classpathentry kind="lib" path="lib/antlr3-3.0.1+dfsg.jar"/>
38+ <classpathentry kind="lib" path="lib/antlr-3.0.1.jar"/>
39 <classpathentry kind="lib" path="lib/antlrall.jar"/>
40 <classpathentry kind="lib" path="lib/asm2-2.2.3.jar"/>
41 <classpathentry kind="lib" path="lib/avalon-framework-4.2.0.jar"/>
42@@ -34,6 +34,7 @@
43 <classpathentry kind="lib" path="lib/bcel-5.2.jar"/>
44 <classpathentry kind="lib" path="lib/bcprov.jar"/>
45 <classpathentry kind="lib" path="lib/bsf-2.4.0.jar"/>
46+ <classpathentry kind="lib" path="lib/cglib-2.1.3.jar"/>
47 <classpathentry kind="lib" path="lib/commons-beanutils-1.8.0-BETA.jar"/>
48 <classpathentry kind="lib" path="lib/commons-cli-1.1.jar"/>
49 <classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
50@@ -51,28 +52,30 @@
51 <classpathentry kind="lib" path="lib/dnsjava-2.0.6.jar"/>
52 <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
53 <classpathentry kind="lib" path="lib/ecj.jar"/>
54+ <classpathentry kind="lib" path="lib/ehcache-core-1.7.2.jar"/>
55 <classpathentry kind="lib" path="lib/el-api-2.1.jar"/>
56- <classpathentry kind="lib" path="lib/eucalyptus-commons-ext-0.4.jar"/>
57 <classpathentry kind="lib" path="lib/excalibur-logkit.jar"/>
58 <classpathentry kind="lib" path="lib/ezmorph-1.0.5.jar"/>
59 <classpathentry kind="lib" path="lib/geronimo-activation-1.1-spec-1.0.1.jar"/>
60 <classpathentry kind="lib" path="lib/geronimo-ejb-3.0-spec-1.0.1.jar"/>
61 <classpathentry kind="lib" path="lib/geronimo-j2ee-connector-1.5-spec-1.1.jar"/>
62+ <classpathentry kind="lib" path="lib/geronimo-javamail_1.4_provider-1.6.jar"/>
63+ <classpathentry kind="lib" path="lib/geronimo-javamail_1.4_spec-1.6.jar"/>
64 <classpathentry kind="lib" path="lib/geronimo-jms-1.1-spec-1.1.jar"/>
65 <classpathentry kind="lib" path="lib/geronimo-jpa-3.0-spec-1.1.1.jar"/>
66 <classpathentry kind="lib" path="lib/geronimo-jta-1.0.1b-spec-1.1.jar"/>
67 <classpathentry kind="lib" path="lib/geronimo-stax-1.0-spec-1.0.1.jar"/>
68- <classpathentry kind="lib" path="lib/gnumail-providers.jar"/>
69- <classpathentry kind="lib" path="lib/gnumail.jar"/>
70 <classpathentry kind="lib" path="lib/google-collect-20080808.jar"/>
71 <classpathentry kind="lib" path="lib/groovy-1.6.3.jar"/>
72 <classpathentry kind="lib" path="lib/gwt-dev-linux-1.6.4.jar"/>
73 <classpathentry kind="lib" path="lib/gwt-servlet-1.6.4.jar"/>
74 <classpathentry kind="lib" path="lib/gwt-user-1.6.4.jar"/>
75- <classpathentry kind="lib" path="lib/hibernate-proxool-3.3.2.GA.jar"/>
76+ <classpathentry kind="lib" path="lib/hibernate-3.3.2.GA.jar"/>
77+ <classpathentry kind="lib" path="lib/hibernate-annotations-3.4.0.GA.jar"/>
78+ <classpathentry kind="lib" path="lib/hibernate-commons-annotations-3.4.0.GA.jar"/>
79+ <classpathentry kind="lib" path="lib/hibernate-entitymanager-3.4.0.GA.jar"/>
80 <classpathentry kind="lib" path="lib/hsqldb-1.8.0.10.jar"/>
81 <classpathentry kind="lib" path="lib/hsqldbutil-1.8.0.10.jar"/>
82- <classpathentry kind="lib" path="lib/inetlib-1.1.1.jar"/>
83 <classpathentry kind="lib" path="lib/janino-2.5.15-1.jar"/>
84 <classpathentry kind="lib" path="lib/javassist-3.8.1.jar"/>
85 <classpathentry kind="lib" path="lib/jaxen-1.1.1.jar"/>
86@@ -97,13 +100,17 @@
87 <classpathentry kind="lib" path="lib/jul-to-slf4j-1.5.2.jar"/>
88 <classpathentry kind="lib" path="lib/junit-3.8.2.jar"/>
89 <classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
90- <classpathentry kind="lib" path="lib/netty-3.1.0.CR1.jar"/>
91- <classpathentry kind="lib" path="lib/openjdk-crypto.jar"/>
92+ <classpathentry kind="lib" path="lib/netty-3.1.0.CR1.jar" sourcepath="/bzr/third-party/netty-3.1.5.GA/src/main/java"/>
93 <classpathentry kind="lib" path="lib/regexp-1.4.jar"/>
94 <classpathentry kind="lib" path="lib/serializer.jar"/>
95 <classpathentry kind="lib" path="lib/servlet-api-2.5.jar"/>
96 <classpathentry kind="lib" path="lib/slf4j-api-1.5.2.jar"/>
97 <classpathentry kind="lib" path="lib/slf4j-log4j12-1.5.2.jar"/>
98+ <classpathentry kind="lib" path="lib/spring-beans-2.5.1.jar"/>
99+ <classpathentry kind="lib" path="lib/spring-context-2.5.1.jar"/>
100+ <classpathentry kind="lib" path="lib/spring-context-support-2.5.1.jar"/>
101+ <classpathentry kind="lib" path="lib/spring-core-2.5.1.jar"/>
102+ <classpathentry kind="lib" path="lib/spring-web-2.5.1.jar"/>
103 <classpathentry kind="lib" path="lib/stax2-api-3.0.1.jar"/>
104 <classpathentry kind="lib" path="lib/woodstox-core-asl-4.0.6.jar"/>
105 <classpathentry kind="lib" path="lib/wsdl4j-1.6.2.jar"/>
106@@ -113,7 +120,14 @@
107 <classpathentry kind="lib" path="lib/xml-security-1.4.2.jar"/>
108 <classpathentry kind="lib" path="lib/xom-1.1.jar"/>
109 <classpathentry kind="lib" path="lib/xpp3-1.1.3.4.O.jar"/>
110- <classpathentry kind="lib" path="lib/cglib-2.1.3.jar"/>
111+ <classpathentry kind="lib" path="lib/openjdk-crypto.jar"/>
112 <classpathentry kind="lib" path="lib/proxool-0.9.1.jar"/>
113+ <classpathentry kind="lib" path="lib/proxool-cglib.jar"/>
114+ <classpathentry kind="lib" path="lib/mule-core-2.0.1.jar" sourcepath="/bzr/third-party/mule-2.0.1.orig/core/src/main/java"/>
115+ <classpathentry kind="lib" path="lib/mule-module-builders-2.0.1.jar"/>
116+ <classpathentry kind="lib" path="lib/mule-module-client-2.0.1.jar"/>
117+ <classpathentry kind="lib" path="lib/mule-module-spring-config-2.0.1.jar"/>
118+ <classpathentry kind="lib" path="lib/mule-module-xml-2.0.1.jar"/>
119+ <classpathentry kind="lib" path="lib/mule-transport-vm-2.0.1.jar"/>
120 <classpathentry kind="output" path="bin"/>
121 </classpath>
122
123=== modified file 'clc/.project'
124--- clc/.project 2010-01-29 08:04:23 +0000
125+++ clc/.project 2010-08-17 20:32:41 +0000
126@@ -1,6 +1,6 @@
127 <?xml version="1.0" encoding="UTF-8"?>
128 <projectDescription>
129- <name>1.6.2</name>
130+ <name>main</name>
131 <comment></comment>
132 <projects>
133 </projects>
134
135=== modified file 'clc/Makefile'
136--- clc/Makefile 2010-01-24 23:57:58 +0000
137+++ clc/Makefile 2010-08-17 20:32:41 +0000
138@@ -8,10 +8,10 @@
139
140 .PHONY: all build update_properties update_theme deps extras install
141
142-all: build
143+all: deps build
144
145 deps:
146- $(ANT) deps
147+ @$(ANT) deps
148
149 update_properties: ${web_prop_dir}/eucalyptus-web.properties
150
151@@ -41,19 +41,16 @@
152 fi \
153 fi
154
155-build: extras
156+build: deps extras
157 @# we need JAVA_HOME
158 @if test -z "${JAVA_HOME}" ; then \
159 echo "You need to define JAVA_HOME!"; exit 1; fi
160 # this causes problems for pbuilder, should be handled by configure and build.xml already
161 # @if test ! -e deps/cloud-lib.tar.gz; then \
162 # echo "Cannot find java deps, please run 'make deps' in the 'clc/' subdirectory."; exit 1; fi
163- ANT_OPTS="-Xmx512m" $(ANT) build
164- make -C modules/storage-controller/native
165- make -C modules/bootstrap
166-
167-run: install
168- $(ANT) run
169+ @ANT_OPTS="-Xmx512m" $(ANT) build
170+ @make -C modules/storage-controller/native
171+ @make -C modules/bootstrap
172
173 clean:
174 $(ANT) clean
175@@ -66,16 +63,15 @@
176 make -C modules/storage-controller/native distclean
177
178 install: build
179- $(ANT) install
180-# @$(INSTALL) -m 644 cloud.xml $(etcdir)/eucalyptus
181- make -C modules/storage-controller/native install
182- make -C modules/bootstrap install
183+ @$(ANT) install
184+ @make -C modules/storage-controller/native install
185+ @make -C modules/bootstrap install
186
187 deploy: install
188
189 uninstall:
190 make -C modules/storage-controller/native uninstall
191 make -C modules/bootstrap uninstall
192- $(RM) -rf $(etcdir)/eucalyptus/cloud.d
193- $(RM) -rf $(datarootdir)/eucalyptus/*jar
194- $(RM) -rf $(vardir)/eucalyptus/webapps
195+ $(RM) -rf $(DESTDIR)$(etcdir)/eucalyptus/cloud.d
196+ $(RM) -rf $(DESTDIR)$(datarootdir)/eucalyptus/*jar
197+ $(RM) -rf $(DESTDIR)$(vardir)/eucalyptus/webapps
198
199=== modified file 'clc/build.xml'
200--- clc/build.xml 2010-01-22 20:57:37 +0000
201+++ clc/build.xml 2010-08-17 20:32:41 +0000
202@@ -62,193 +62,227 @@
203 -->
204
205 <project name="eucalyptus" basedir=".">
206- <property environment="localenv"/>
207- <property name="euca.home.0" value="${localenv.EUCALYPTUS}"/>
208- <condition property="euca.home" value="/opt/eucalyptus" else="${localenv.EUCALYPTUS}">
209- <contains string="${euca.home.0}" substring="localenv"/>
210- </condition>
211- <property name="DESTDIR.0" value="${localenv.DESTDIR}"/>
212- <condition property="DESTDIR" value="/" else="${localenv.DESTDIR}">
213- <contains string="${DESTDIR.0}" substring="localenv"/>
214- </condition>
215- <property name="project.basedir" value="${user.dir}"/>
216- <loadfile srcfile="${project.basedir}/../VERSION" property="euca.version">
217- <filterchain>
218- <filterreader classname="org.apache.tools.ant.filters.StripLineBreaks"/>
219- </filterchain>
220- </loadfile>
221- <!--================================== other vars ==================================-->
222- <property name="jvm.heap" value="256m"/>
223- <property name="deps.url" value="http://eucalyptussoftware.com/downloads/dependencies/${euca.version}"/>
224- <property name="deps.dir" value="deps"/>
225- <property name="deps.lib.dir" value="lib"/>
226- <property name="deps.lib" value="cloud-lib"/>
227- <!--================================== build targets ==================================-->
228- <target name="build-msgs">
229- <ant dir="modules/msgs" inheritall="false" target="builder"/>
230- <ant dir="modules/database" inheritall="false" target="builder"/>
231- <ant dir="modules/authentication" inheritall="false" target="builder"/>
232- <ant dir="modules/cloud" inheritall="false" target="builder"/>
233- <ant dir="modules/configuration" inheritall="false" target="builder"/>
234- </target>
235- <target name="build-core" depends="build-msgs">
236- <ant dir="modules/core" inheritall="false" target="builder"/>
237- <ant dir="modules/wsstack" inheritall="false" target="builder"/>
238- </target>
239- <target name="build-storage-common" depends="build-core">
240- <ant dir="modules/storage-common" inheritall="false" target="builder"/>
241- </target>
242- <target name="build-eucalyptus" depends="build-core">
243- <ant dir="modules/interface" inheritall="false" target="builder"/>
244- <ant dir="modules/group-manager" inheritall="false" target="builder"/>
245- <ant dir="modules/cluster-manager" inheritall="false" target="builder"/>
246- <ant dir="modules/image-manager" inheritall="false" target="builder"/>
247- <ant dir="modules/key-manager" inheritall="false" target="builder"/>
248- </target>
249- <target name="build-walrus" depends="build-storage-common">
250- <ant dir="modules/walrus" inheritall="false" target="builder"/>
251- </target>
252- <target name="build-ebs" depends="build-storage-common">
253- <ant dir="modules/storage-controller" inheritall="false" target="builder"/>
254- </target>
255- <target name="build-dns" depends="build-core">
256- <ant dir="modules/dns" inheritall="false" target="builder"/>
257- </target>
258- <target name="build-www">
259- <ant dir="modules/www" inheritall="false" target="builder"/>
260- </target>
261- <target name="build-nogwt" depends="build-eucalyptus,build-walrus,build-ebs,build-dns"/>
262- <target name="build" depends="deps,build-nogwt,build-www"/>
263- <!--================================== clean targets ==================================-->
264- <target name="clean-msgs">
265- <ant dir="modules/msgs" inheritall="false" target="clean"/>
266- <ant dir="modules/database" inheritall="false" target="clean"/>
267- <ant dir="modules/cloud" inheritall="false" target="clean"/>
268- <ant dir="modules/authentication" inheritall="false" target="clean"/>
269- <ant dir="modules/configuration" inheritall="false" target="clean"/>
270- </target>
271- <target name="clean-core" depends="clean-msgs">
272- <ant dir="modules/core" inheritall="false" target="clean"/>
273- <ant dir="modules/wsstack" inheritall="false" target="clean"/>
274- </target>
275- <target name="clean-storage-common" depends="clean-core">
276- <ant dir="modules/storage-common" inheritall="false" target="clean"/>
277- </target>
278- <target name="clean-eucalyptus" depends="clean-core">
279- <ant dir="modules/interface" inheritall="false" target="clean"/>
280- <ant dir="modules/cluster-manager" inheritall="false" target="clean"/>
281- <ant dir="modules/image-manager" inheritall="false" target="clean"/>
282- <ant dir="modules/group-manager" inheritall="false" target="clean"/>
283- <ant dir="modules/key-manager" inheritall="false" target="clean"/>
284- </target>
285- <target name="clean-walrus" depends="clean-storage-common">
286- <ant dir="modules/walrus" inheritall="false" target="clean"/>
287- </target>
288- <target name="clean-ebs" depends="clean-storage-common">
289- <ant dir="modules/storage-controller" inheritall="false" target="clean"/>
290- </target>
291- <target name="clean-dns" depends="clean-core">
292- <ant dir="modules/dns" inheritall="false" target="clean"/>
293- </target>
294- <target name="clean-www">
295- <ant dir="modules/www" inheritall="false" target="clean" />
296- </target>
297- <target name="clean-nogwt" depends="clean-eucalyptus,clean-walrus,clean-ebs,clean-dns"/>
298- <target name="clean" depends="clean-nogwt,clean-www">
299- <delete dir="${target.dir}"/>
300- </target>
301- <target name="distclean" depends="clean">
302- <delete dir="${deps.dir}"/>
303- <delete dir="${deps.lib.dir}"/>
304- <delete dir="target"/>
305- </target>
306- <!--================================== install target ==================================-->
307- <property name="euca.conf.dir" value="${euca.home}/etc/eucalyptus/cloud.d"/>
308- <property name="euca.lib.dir" value="${euca.home}/usr/share/eucalyptus"/>
309- <property name="euca.var.dir" value="${euca.home}/var/lib/eucalyptus"/>
310- <property name="euca.log.dir" value="${euca.home}/var/log/eucalyptus"/>
311- <target name="install">
312- <!-- copy libraries over -->
313- <mkdir dir="${DESTDIR}${euca.lib.dir}"/>
314- <copy todir="${DESTDIR}${euca.lib.dir}">
315- <fileset dir="${basedir}/target">
316- <include name="**/*.jar"/>
317- </fileset>
318- </copy>
319- <copy todir="${DESTDIR}${euca.lib.dir}">
320- <fileset dir="${deps.lib.dir}">
321- <include name="**/*"/>
322- </fileset>
323- </copy>
324- <mkdir dir="${DESTDIR}${euca.conf.dir}"/>
325- <chmod dir="${DESTDIR}${euca.conf.dir}" perm="0755"/>
326- <mkdir dir="${DESTDIR}${euca.var.dir}/"/>
327- <mkdir dir="${DESTDIR}${euca.var.dir}/db"/>
328- <mkdir dir="${DESTDIR}${euca.var.dir}/keys"/>
329- <!-- <chmod dir="${euca.var.dir}/db" perm="0700"/>
330- <chmod dir="${euca.var.dir}/keys" perm="0700"/> -->
331- <mkdir dir="${DESTDIR}${euca.log.dir}"/>
332- <mkdir dir="${DESTDIR}${euca.var.dir}/webapps"/>
333- <mkdir dir="${DESTDIR}${euca.var.dir}/modules"/>
334- <ant dir="modules/msgs" inheritall="false" target="install"/>
335- <ant dir="modules/database" inheritall="false" target="install"/>
336- <ant dir="modules/cloud" inheritall="false" target="install"/>
337- <ant dir="modules/authentication" inheritall="false" target="install"/>
338- <ant dir="modules/configuration" inheritall="false" target="install"/>
339- <ant dir="modules/core" inheritall="false" target="install"/>
340- <ant dir="modules/wsstack" inheritall="false" target="install"/>
341- <ant dir="modules/storage-common" inheritall="false" target="install"/>
342- <ant dir="modules/interface" inheritall="false" target="install"/>
343- <ant dir="modules/cluster-manager" inheritall="false" target="install"/>
344- <ant dir="modules/image-manager" inheritall="false" target="install"/>
345- <ant dir="modules/group-manager" inheritall="false" target="install"/>
346- <ant dir="modules/key-manager" inheritall="false" target="install"/>
347- <ant dir="modules/walrus" inheritall="false" target="install"/>
348- <ant dir="modules/storage-controller" inheritall="false" target="install"/>
349- <ant dir="modules/dns" inheritall="false" target="install"/>
350- <ant dir="modules/www" inheritall="false" target="install"/>
351- </target>
352- <!--================================== unzipping target ==================================-->
353- <target name="deps">
354- <condition property="needDownload">
355- <and>
356- <not>
357- <available file="${deps.lib.dir}/bcprov.jar"/>
358- </not>
359- <and>
360- <not>
361- <available file="${deps.dir}/${deps.lib}.tar.gz"/>
362- </not>
363- </and>
364- </and>
365- </condition>
366- <ant target="download-deps"/>
367- <condition property="needUnzipping">
368- <and>
369- <not>
370- <available file="${deps.lib.dir}/bcprov.jar"/>
371- </not>
372- <and>
373- <available file="${deps.dir}/${deps.lib}.tar.gz"/>
374- </and>
375- </and>
376- </condition>
377- <ant target="untar"/>
378- </target>
379- <target name="dist-deps" depends="deps">
380- <delete dir="${deps.dir}"/>
381- </target>
382- <target name="untar" if="needUnzipping">
383- <untar compression="gzip" src="${deps.dir}/${deps.lib}.tar.gz" dest="${deps.lib.dir}"/>
384- <delete file="${deps.lib.dir}/openjdk-crypto.jar"/>
385- <jar destfile="${deps.lib.dir}/openjdk-crypto.jar">
386- <zipfileset src="${deps.lib.dir}/eucalyptus-commons-ext-0.4.jar" includes="javax/crypto/**"/>
387- </jar>
388- </target>
389- <target name="download-deps" if="needDownload">
390- <mkdir dir="${deps.dir}"/>
391- <mkdir dir="${deps.lib.dir}"/>
392- <!--=========== download the dependency libraries ===========-->
393- <get src="${deps.url}/${deps.lib}.tar.gz" dest="${deps.dir}/${deps.lib}.tar.gz"/>
394- </target>
395+ <property environment="localenv" />
396+ <property name="euca.home.0" value="${localenv.EUCALYPTUS}" />
397+ <condition property="euca.home" value="/opt/eucalyptus" else="${localenv.EUCALYPTUS}">
398+ <contains string="${euca.home.0}" substring="localenv" />
399+ </condition>
400+ <property name="DESTDIR.0" value="${localenv.DESTDIR}" />
401+ <condition property="DESTDIR" value="/" else="${localenv.DESTDIR}">
402+ <contains string="${DESTDIR.0}" substring="localenv" />
403+ </condition>
404+ <property name="project.basedir" value="${user.dir}" />
405+ <loadfile srcfile="${project.basedir}/../VERSION" property="euca.version">
406+ <filterchain>
407+ <filterreader classname="org.apache.tools.ant.filters.StripLineBreaks" />
408+ </filterchain>
409+ </loadfile>
410+ <!--================================== other vars ==================================-->
411+ <property name="jvm.heap" value="256m" />
412+ <property name="deps.url" value="http://eucalyptussoftware.com/downloads/dependencies/${euca.version}" />
413+ <property name="deps.dir" value="deps" />
414+ <property name="deps.lib.dir" value="lib" />
415+ <property name="tools.dir" value="tools/src" />
416+ <property name="deps.lib" value="cloud-lib" />
417+ <property name="bind.timestamp" value="target/.bind-timestamp" />
418+ <!--================================== build targets ==================================-->
419+ <target name="build">
420+ <ant dir="modules/msgs" inheritall="false" target="builder" />
421+ <ant dir="modules/database" inheritall="false" target="builder" />
422+ <ant dir="modules/hsqldb" inheritall="false" target="builder" />
423+ <ant dir="modules/authentication" inheritall="false" target="builder" />
424+ <ant dir="modules/cloud" inheritall="false" target="builder" />
425+ <ant dir="modules/configuration" inheritall="false" target="builder" />
426+ <ant dir="modules/core" inheritall="false" target="builder" />
427+ <ant dir="modules/wsstack" inheritall="false" target="builder" />
428+ <ant dir="modules/component" inheritall="false" target="builder" />
429+ <ant dir="modules/interface" inheritall="false" target="builder" />
430+ <ant dir="modules/group-manager" inheritall="false" target="builder" />
431+ <ant dir="modules/cluster-manager" inheritall="false" target="builder" />
432+ <ant dir="modules/image-manager" inheritall="false" target="builder" />
433+ <ant dir="modules/key-manager" inheritall="false" target="builder" />
434+ <ant dir="modules/storage-common" inheritall="false" target="builder" />
435+ <ant dir="modules/walrus" inheritall="false" target="builder" />
436+ <ant dir="modules/storage-controller" inheritall="false" target="builder" />
437+ <ant dir="modules/dns" inheritall="false" target="builder" />
438+ <ant dir="modules/www" inheritall="false" target="builder" />
439+ <ant dir="." inheritall="false" target="jar" />
440+ </target>
441+ <target name="jar" depends="bind">
442+ <ant dir="modules/msgs" inheritall="false" target="jar" />
443+ <ant dir="modules/database" inheritall="false" target="jar" />
444+ <ant dir="modules/hsqldb" inheritall="false" target="jar" />
445+ <ant dir="modules/authentication" inheritall="false" target="jar" />
446+ <ant dir="modules/cloud" inheritall="false" target="jar" />
447+ <ant dir="modules/configuration" inheritall="false" target="jar" />
448+ <ant dir="modules/component" inheritall="false" target="jar" />
449+ <ant dir="modules/core" inheritall="false" target="jar" />
450+ <ant dir="modules/wsstack" inheritall="false" target="jar" />
451+ <ant dir="modules/interface" inheritall="false" target="jar" />
452+ <ant dir="modules/group-manager" inheritall="false" target="jar" />
453+ <ant dir="modules/cluster-manager" inheritall="false" target="jar" />
454+ <ant dir="modules/image-manager" inheritall="false" target="jar" />
455+ <ant dir="modules/key-manager" inheritall="false" target="jar" />
456+ <ant dir="modules/storage-common" inheritall="false" target="jar" />
457+ <ant dir="modules/walrus" inheritall="false" target="jar" />
458+ <ant dir="modules/storage-controller" inheritall="false" target="jar" />
459+ <ant dir="modules/dns" inheritall="false" target="jar" />
460+ <ant dir="modules/www" inheritall="false" target="jar" />
461+ </target>
462+ <target name="shouldBind">
463+ <uptodate property="bind.notRequired" targetfile="${bind.timestamp}">
464+ <srcfiles dir="modules">
465+ <include name="**/*.java"/>
466+ </srcfiles>
467+ </uptodate>
468+ <echo message="[BINDING] Up-to-date check shows bind.notRequred=${bind.notRequired}." />
469+ </target>
470+ <target name="bind" depends="shouldBind" unless="bind.notRequired">
471+ <echo message="[BINDING] Running binding compiler." />
472+ <path id="bindingclasspath">
473+ <dirset dir="modules">
474+ <include name="**/build" />
475+ </dirset>
476+ <fileset dir="lib">
477+ <include name="**/*.jar" />
478+ </fileset>
479+ </path>
480+ <delete>
481+ <fileset dir="modules" includes="**/*JiBX*" />
482+ </delete>
483+ <delete file="modules/msgs/src/main/resources/msgs-binding.xml" />
484+ <taskdef name="bindings" classname="com.eucalyptus.binding.BuildBindings" classpathref="bindingclasspath" />
485+ <bindings>
486+ <classfileset dir="${project.basedir}/modules" includes="*/build/**" />
487+ <bindingfileset dir="${project.basedir}/modules" includes="**/*-binding.xml" />
488+ </bindings>
489+ <touch file="${bind.timestamp}"/>
490+ </target>
491+
492+ <!--================================== clean targets ==================================-->
493+ <target name="clean">
494+ <delete file="${bind.timestamp}"/>
495+ <ant dir="modules/msgs" inheritall="false" target="clean" />
496+ <ant dir="modules/database" inheritall="false" target="clean" />
497+ <ant dir="modules/hsqldb" inheritall="false" target="clean" />
498+ <ant dir="modules/cloud" inheritall="false" target="clean" />
499+ <ant dir="modules/authentication" inheritall="false" target="clean" />
500+ <ant dir="modules/configuration" inheritall="false" target="clean" />
501+ <ant dir="modules/component" inheritall="false" target="clean" />
502+ <ant dir="modules/core" inheritall="false" target="clean" />
503+ <ant dir="modules/wsstack" inheritall="false" target="clean" />
504+ <ant dir="modules/interface" inheritall="false" target="clean" />
505+ <ant dir="modules/cluster-manager" inheritall="false" target="clean" />
506+ <ant dir="modules/image-manager" inheritall="false" target="clean" />
507+ <ant dir="modules/group-manager" inheritall="false" target="clean" />
508+ <ant dir="modules/key-manager" inheritall="false" target="clean" />
509+ <ant dir="modules/storage-common" inheritall="false" target="clean" />
510+ <ant dir="modules/walrus" inheritall="false" target="clean" />
511+ <ant dir="modules/storage-controller" inheritall="false" target="clean" />
512+ <ant dir="modules/dns" inheritall="false" target="clean" />
513+ <ant dir="modules/www" inheritall="false" target="clean" />
514+ <delete dir="${target.dir}" />
515+ </target>
516+ <target name="distclean" depends="clean">
517+ <delete dir="${deps.dir}" />
518+ <delete dir="${deps.lib.dir}" />
519+ <delete dir="target" />
520+ </target>
521+ <!--================================== install target ==================================-->
522+ <property name="euca.conf.dir" value="${euca.home}/etc/eucalyptus/cloud.d" />
523+ <property name="euca.lib.dir" value="${euca.home}/usr/share/eucalyptus" />
524+ <property name="euca.var.dir" value="${euca.home}/var/lib/eucalyptus" />
525+ <property name="euca.run.dir" value="${euca.home}/var/run/eucalyptus" />
526+ <property name="euca.log.dir" value="${euca.home}/var/log/eucalyptus" />
527+ <property name="euca.bin.dir" value="${euca.home}/usr/sbin" />
528+ <target name="install">
529+ <!-- copy libraries over -->
530+ <mkdir dir="${DESTDIR}${euca.lib.dir}" />
531+ <copy todir="${DESTDIR}${euca.lib.dir}" overwrite="true">
532+ <fileset dir="${deps.lib.dir}">
533+ <include name="**/*" />
534+ <exclude name="**/gwt-api-checker-*.jar" />
535+ <exclude name="**/gwt-dev-*.jar" />
536+ <exclude name="**/gwt-soyc-vis-*.jar" />
537+ <exclude name="**/gwt-user-*.jar" />
538+ </fileset>
539+ </copy>
540+ <!--copy admin tools -->
541+ <mkdir dir="${DESTDIR}${euca.bin.dir}" />
542+ <copy todir="${DESTDIR}${euca.bin.dir}" overwrite="true">
543+ <fileset dir="${tools.dir}">
544+ <include name="**/*" />
545+ </fileset>
546+ </copy>
547+ <chmod dir="${DESTDIR}${euca.bin.dir}" perm="0755">
548+ <include name="**/euca-*" />
549+ </chmod>
550+ <mkdir dir="${DESTDIR}${euca.conf.dir}" />
551+ <chmod dir="${DESTDIR}${euca.conf.dir}" perm="0755" />
552+ <mkdir dir="${DESTDIR}${euca.var.dir}/" />
553+ <mkdir dir="${DESTDIR}${euca.var.dir}/db" />
554+ <mkdir dir="${DESTDIR}${euca.var.dir}/keys" />
555+ <mkdir dir="${DESTDIR}${euca.log.dir}" />
556+ <mkdir dir="${DESTDIR}${euca.var.dir}/webapps" />
557+ <mkdir dir="${DESTDIR}${euca.var.dir}/modules" />
558+ <mkdir dir="${DESTDIR}${euca.run.dir}" />
559+ <ant dir="modules/msgs" inheritall="false" target="install" />
560+ <ant dir="modules/database" inheritall="false" target="install" />
561+ <ant dir="modules/hsqldb" inheritall="false" target="install" />
562+ <ant dir="modules/cloud" inheritall="false" target="install" />
563+ <ant dir="modules/authentication" inheritall="false" target="install" />
564+ <ant dir="modules/configuration" inheritall="false" target="install" />
565+ <ant dir="modules/component" inheritall="false" target="install" />
566+ <ant dir="modules/core" inheritall="false" target="install" />
567+ <ant dir="modules/wsstack" inheritall="false" target="install" />
568+ <ant dir="modules/storage-common" inheritall="false" target="install" />
569+ <ant dir="modules/interface" inheritall="false" target="install" />
570+ <ant dir="modules/cluster-manager" inheritall="false" target="install" />
571+ <ant dir="modules/image-manager" inheritall="false" target="install" />
572+ <ant dir="modules/group-manager" inheritall="false" target="install" />
573+ <ant dir="modules/key-manager" inheritall="false" target="install" />
574+ <ant dir="modules/walrus" inheritall="false" target="install" />
575+ <ant dir="modules/storage-controller" inheritall="false" target="install" />
576+ <ant dir="modules/dns" inheritall="false" target="install" />
577+ <ant dir="modules/www" inheritall="false" target="install" />
578+ </target>
579+ <!--================================== unzipping target ==================================-->
580+ <target name="deps">
581+ <condition property="needDownload">
582+ <and>
583+ <not>
584+ <available file="${deps.lib.dir}/bcprov.jar" />
585+ </not>
586+ <and>
587+ <not>
588+ <available file="${deps.dir}/${deps.lib}.tar.gz" />
589+ </not>
590+ </and>
591+ </and>
592+ </condition>
593+ <ant target="download-deps" />
594+ <condition property="needUnzipping">
595+ <and>
596+ <not>
597+ <available file="${deps.lib.dir}/bcprov.jar" />
598+ </not>
599+ <and>
600+ <available file="${deps.dir}/${deps.lib}.tar.gz" />
601+ </and>
602+ </and>
603+ </condition>
604+ <ant target="untar" />
605+ </target>
606+ <target name="dist-deps" depends="deps">
607+ <delete dir="${deps.dir}" />
608+ </target>
609+ <target name="untar" if="needUnzipping">
610+ <untar compression="gzip" src="${deps.dir}/${deps.lib}.tar.gz" dest="${deps.lib.dir}" />
611+ </target>
612+ <target name="download-deps" if="needDownload">
613+ <mkdir dir="${deps.dir}" />
614+ <mkdir dir="${deps.lib.dir}" />
615+ <!--=========== download the dependency libraries ===========-->
616+ <get src="${deps.url}/${deps.lib}.tar.gz" dest="${deps.dir}/${deps.lib}.tar.gz" />
617+ </target>
618 </project>
619
620=== added directory 'clc/modules/authentication/conf/upgrade'
621=== added file 'clc/modules/authentication/conf/upgrade/upgrade_auth.groovy'
622--- clc/modules/authentication/conf/upgrade/upgrade_auth.groovy 1970-01-01 00:00:00 +0000
623+++ clc/modules/authentication/conf/upgrade/upgrade_auth.groovy 2010-08-17 20:32:41 +0000
624@@ -0,0 +1,173 @@
625+import com.eucalyptus.auth.Authentication;
626+import com.eucalyptus.auth.ClusterCredentials;
627+import com.eucalyptus.auth.Groups;
628+import com.eucalyptus.auth.NoSuchUserException;
629+import com.eucalyptus.auth.principal.AvailabilityZonePermission;
630+import com.eucalyptus.auth.principal.User;
631+import com.eucalyptus.auth.UserEntity;
632+import com.eucalyptus.auth.UserExistsException;
633+import com.eucalyptus.auth.UserInfo;
634+import com.eucalyptus.auth.UserInfoStore;
635+import com.eucalyptus.auth.Users;
636+import com.eucalyptus.auth.util.AuthBootstrapHelper;
637+import com.eucalyptus.auth.X509Cert;
638+import com.eucalyptus.config.ClusterConfiguration;
639+import com.eucalyptus.config.Configuration;
640+import com.eucalyptus.entities.EntityWrapper;
641+import com.eucalyptus.upgrade.AbstractUpgradeScript;
642+import com.eucalyptus.upgrade.StandalonePersistence;
643+import com.eucalyptus.entities.PersistenceContexts;
644+import com.eucalyptus.util.EucalyptusCloudException;
645+import com.eucalyptus.util.Tx;
646+
647+import groovy.sql.Sql;
648+
649+class UpgradeAuth extends AbstractUpgradeScript {
650+
651+ public UpgradeAuth() {
652+ super(3);
653+ }
654+
655+ public Boolean accepts( String from, String to ) {
656+ return true;
657+ }
658+
659+ public void upgrade( File oldEucaHome, File newEucaHome ) {
660+ def userName;
661+ def userIdToUserName = [:];
662+ def certIdToUserName = [:];
663+ def ccCertIdToCluster = [:];
664+ def ncCertIdToCluster = [:];
665+
666+ AuthBootstrapHelper.ensureStandardGroupsExists( );
667+
668+ //println "----- eucalyptus_auth.AUTH_CLUSTERS -----";
669+ StandalonePersistence.getConnection("eucalyptus_auth").rows('SELECT * FROM AUTH_CLUSTERS').each{
670+ //println "ROW: ${it}";
671+ EntityWrapper<ClusterCredentials> db = Authentication.getEntityWrapper( );
672+ try {
673+ db.add( new ClusterCredentials( it.AUTH_CLUSTER_NAME ) );
674+ db.commit( );
675+ ccCertIdToCluster[it.AUTH_CLUSTER_X509_CERTIFICATE] = it.AUTH_CLUSTER_NAME;
676+ ncCertIdToCluster[it.AUTH_CLUSTER_NODE_X509_CERTIFICATE] = it.AUTH_CLUSTER_NAME;
677+ } catch ( EucalyptusCloudException e ) {
678+ db.rollback( );
679+ println "Failed to add credentials for cluster ${it.AUTH_CLUSTER_NAME}";
680+ e.printStackTrace( );
681+ }
682+ }
683+ //println "----- eucalyptus_auth.AUTH_USERS -----";
684+ StandalonePersistence.getConnection("eucalyptus_auth").rows('SELECT * FROM AUTH_USERS').each{
685+ //println "ROW: ${it}";
686+ try {
687+ Users.addUser( it.AUTH_USER_NAME, it.AUTH_USER_IS_ADMIN, it.AUTH_USER_IS_ENABLED );
688+ } catch ( UserExistsException e ) {
689+ println "Failed to add user. User ${it.AUTH_USER_NAME} exists";
690+ e.printStackTrace( );
691+ return;
692+ }
693+ try {
694+ Users.updateUser( it.AUTH_USER_NAME, new Tx<User>( ) {
695+ public void fire( User user ) throws Throwable {
696+ user.setQueryId( it.AUTH_USER_QUERY_ID );
697+ user.setSecretKey( it.AUTH_USER_SECRETKEY );
698+ }
699+ });
700+ } catch ( NoSuchUserException e ) {
701+ println "Can not find user ${it.AUTH_USER_NAME}";
702+ e.printStackTrace( );
703+ return;
704+ }
705+ userIdToUserName[it.ID] = it.AUTH_USER_NAME;
706+ }
707+ //println "----- eucalyptus_auth.AUTH_USER_HAS_X509 -----"
708+ StandalonePersistence.getConnection("eucalyptus_auth").rows('SELECT * FROM AUTH_USER_HAS_X509').each{
709+ //println "ROW: ${it}";
710+ userName = userIdToUserName[it.AUTH_USER_ID];
711+ if ( userName != null ) {
712+ certIdToUserName[it.AUTH_X509_ID] = userName;
713+ }
714+ }
715+ //println "----- eucalyptus_auth.AUTH_X509 -----"
716+ StandalonePersistence.getConnection("eucalyptus_auth").rows('SELECT * FROM AUTH_X509').each{
717+ //println "ROW: ${it}";
718+ def cert = new X509Cert( );
719+ cert.setAlias( it.AUTH_X509_ALIAS );
720+ cert.setPemCertificate( it.AUTH_X509_PEM_CERTIFICATE );
721+ if ( certIdToUserName[it.ID] != null ) {
722+ println "Update certificate for ${userName}";
723+ Users.updateUser( certIdToUserName[it.ID], new Tx<User>( ) {
724+ public void fire( User user ) throws Throwable {
725+ ( ( UserEntity ) user ).getCertificates( ).add( cert );
726+ }
727+ });
728+ } else if ( ncCertIdToCluster[it.ID] != null ) {
729+ println "Update node certificate for ${ncCertIdToCluster[it.ID]}";
730+ EntityWrapper<ClusterCredentials> db = Authentication.getEntityWrapper( );
731+ try {
732+ ClusterCredentials creds = db.getUnique( new ClusterCredentials( ncCertIdToCluster[it.ID] ) );
733+ creds.setNodeCertificate( cert );
734+ db.commit( );
735+ } catch ( EucalyptusCloudException e ) {
736+ db.rollback( );
737+ println "Failed to load node credential for cluster ${ncCertIdToCluster[it.ID]}";
738+ e.printStackTrace( );
739+ }
740+ } else if ( ccCertIdToCluster[it.ID] != null ) {
741+ println "Update cluster certificate for ${ccCertIdToCluster[it.ID]}";
742+ EntityWrapper<ClusterCredentials> db = Authentication.getEntityWrapper( );
743+ try {
744+ ClusterCredentials creds = db.getUnique( new ClusterCredentials( ccCertIdToCluster[it.ID] ) );
745+ creds.setClusterCertificate( cert );
746+ db.commit( );
747+ } catch ( EucalyptusCloudException e ) {
748+ db.rollback( );
749+ println "Failed to load cluster credential for cluster ${ccCertIdToCluster[it.ID]}";
750+ e.printStackTrace( );
751+ }
752+ }
753+ }
754+ //println "----- eucalyptus_general.USERS -----"
755+ StandalonePersistence.getConnection("eucalyptus_general").rows('SELECT * FROM USERS').each{
756+ //println "ROW: ${it}";
757+ try {
758+ Users.updateUser( it.USER_NAME , new Tx<User>( ) {
759+ public void fire( User user ) throws Throwable {
760+ user.setPassword( it.USER_B_CRYPTED_PASSWORD );
761+ user.setEnabled( it.USER_IS_ENABLED );
762+ ( ( UserEntity ) user ).setToken( it.USER_CERTIFICATE_CODE );
763+ }
764+ });
765+ UserInfoStore.updateUserInfo( it.USER_NAME, new Tx<UserInfo>( ) {
766+ public void fire( UserInfo userInfo ) throws Throwable {
767+ userInfo.setConfirmationCode( it. USER_CONFIRMATION_CODE );
768+ userInfo.setAffiliation( ifEmptyReplaceByBogus(it.USER_AFFILIATION ) );
769+ userInfo.setEmail( ifEmptyReplaceByBogus(it.USER_EMAIL ) );
770+ userInfo.setApproved( it.USER_IS_APPROVED );
771+ userInfo.setConfirmed( it.USER_IS_CONFIRMED );
772+ userInfo.setPasswordExpires( it.PASSWORD_EXPIRES );
773+ userInfo.setProjectDescription( ifEmptyReplaceByBogus(it.USER_PROJECT_DESCRIPTION ) );
774+ userInfo.setProjectPIName( ifEmptyReplaceByBogus(it.USER_PROJECT_PI_NAME ) );
775+ userInfo.setRealName( ifEmptyReplaceByBogus(it.USER_REAL_NAME ) );
776+ userInfo.setTelephoneNumber( ifEmptyReplaceByBogus(it.USER_TELEPHONE_NUMBER ) );
777+ }
778+ });
779+ } catch ( NoSuchUserException e ) {
780+ println "Failed to find user ${it.USER_NAME}";
781+ e.printStackTrace( );
782+ }
783+ }
784+ println "Making sure default group has all the availability zones"
785+ for ( ClusterConfiguration cluster : Configuration.getClusterConfigurations( ) ) {
786+ Groups.DEFAULT.addAuthorization( new AvailabilityZonePermission( cluster.getName( ) ) );
787+ }
788+ }
789+
790+ private String ifEmptyReplaceByBogus( String value ) {
791+ if ( value == null || "".equals( value ) ) {
792+ return UserInfo.BOGUS_ENTRY;
793+ } else {
794+ return value;
795+ }
796+ }
797+}
798\ No newline at end of file
799
800=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/AllGroup.java'
801--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/AllGroup.java 1970-01-01 00:00:00 +0000
802+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/AllGroup.java 2010-08-17 20:32:41 +0000
803@@ -0,0 +1,44 @@
804+package com.eucalyptus.auth;
805+
806+import java.security.Principal;
807+import java.util.Enumeration;
808+import com.eucalyptus.auth.principal.Group;
809+import com.eucalyptus.auth.principal.User;
810+import com.google.common.collect.ImmutableList;
811+import com.google.common.collect.Iterators;
812+
813+public class AllGroup extends DatabaseWrappedGroup {
814+
815+ public AllGroup( Group g ) {
816+ super( g );
817+ if( !"all".equals( g.getName( ) ) ) {
818+ throw new RuntimeException( "EID: This is exclusively for the 'all' group and can't be used for: " + g.getName( ) );
819+ }
820+ }
821+
822+ @Override
823+ public ImmutableList<User> getMembers( ) {
824+ return ImmutableList.copyOf( Users.listAllUsers( ) );
825+ }
826+
827+ @Override
828+ public boolean addMember( Principal principal ) {
829+ return true;
830+ }
831+
832+ @Override
833+ public boolean isMember( Principal member ) {
834+ return true;
835+ }
836+
837+ @Override
838+ public Enumeration<? extends Principal> members( ) {
839+ return Iterators.asEnumeration( Users.listAllUsers( ).iterator( ) );
840+ }
841+
842+ @Override
843+ public boolean removeMember( Principal user ) {
844+ return true;
845+ }
846+
847+}
848
849=== modified file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialEntities.groovy'
850--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialEntities.groovy 2010-02-05 11:49:57 +0000
851+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialEntities.groovy 2010-08-17 20:32:41 +0000
852@@ -57,8 +57,7 @@
853 * OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
854 * WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
855 * ANY SUCH LICENSES OR RIGHTS.
856- *******************************************************************************/
857-/*
858+ *******************************************************************************
859 * Author: chris grzegorczyk <grze@eucalyptus.com>
860 */
861 package com.eucalyptus.auth
862@@ -66,10 +65,13 @@
863 import java.io.Serializable;
864 import java.security.cert.X509Certificate;
865 import java.util.Date;
866+import java.util.List;
867+import java.util.ArrayList;
868
869 import org.bouncycastle.util.encoders.UrlBase64;
870 import javax.persistence.Entity;
871 import javax.persistence.Id;
872+import javax.persistence.Transient;
873 import org.hibernate.annotations.Cache
874 import org.hibernate.annotations.CacheConcurrencyStrategy
875 import org.hibernate.annotations.GenericGenerator
876@@ -92,56 +94,149 @@
877 import javax.persistence.PersistenceContext;
878
879 import org.hibernate.sql.Alias
880+import org.apache.log4j.Logger
881
882-import com.eucalyptus.auth.util.Hashes;
883+import com.google.common.collect.Lists;
884+import com.eucalyptus.auth.principal.User;
885+import com.eucalyptus.auth.util.B64;
886+import com.eucalyptus.auth.util.PEMFiles;
887 import com.eucalyptus.entities.AbstractPersistent;
888
889 @Entity
890 @PersistenceContext(name="eucalyptus_auth")
891 @Table( name = "auth_users" )
892 @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
893-public class User extends AbstractPersistent implements Serializable {
894+public class UserEntity extends AbstractPersistent implements Serializable, User {
895+ @Transient
896+ private static Logger LOG = Logger.getLogger( UserEntity.class );
897+
898 @Column( name = "auth_user_name", unique=true )
899- String userName
900+ String name;
901+
902 @Column( name = "auth_user_query_id" )
903- String queryId
904+ String queryId;
905+
906 @Column( name = "auth_user_secretkey" )
907- String secretKey
908+ String secretKey;
909+
910+ @Column( name = "auth_user_password" )
911+ String password;
912+
913 @Column( name = "auth_user_is_admin" )
914- Boolean isAdministrator
915+ Boolean administrator;
916+
917 @Column( name = "auth_user_is_enabled" )
918- Boolean isEnabled;
919+ Boolean enabled;
920+
921+ @Column( name = "auth_user_token" )
922+ String token;
923+
924 @OneToMany( cascade=[CascadeType.ALL], fetch=FetchType.EAGER )
925 @JoinTable(name = "auth_user_has_x509", joinColumns = [ @JoinColumn( name = "auth_user_id" ) ],inverseJoinColumns = [ @JoinColumn( name = "auth_x509_id" ) ])
926 @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
927- List<X509Cert> certificates = []
928- public User(){
929- }
930- public User( String userName ){
931- this.userName = userName
932- }
933- public User( String userName, Boolean isEnabled ){
934+ List<X509Cert> certificates = [];
935+
936+ @Transient
937+ List<String> eucaGroupIds = [];
938+
939+ public UserEntity(){
940+ }
941+
942+ public User getDelegate( ) {
943+ return this;
944+ }
945+
946+ public UserEntity( String userName ){
947+ this.name = userName
948+ }
949+
950+ public UserEntity( String userName, Boolean enabled ){
951 this(userName);
952- this.isEnabled = isEnabled
953+ this.setEnabled( enabled );
954+ }
955+
956+ public void revokeX509Certificate() {
957+ for( X509Cert cert : this.getCertificates() ) {
958+ cert.setRevoked(true);
959+ }
960+ LOG.debug("Current certificate for ${this.getName()}: ${this.getX509Certificate()?.getSerialNumber()}");
961+ }
962+
963+ public void revokeSecretKey() {
964+ this.setSecretKey( null );
965+ }
966+
967+ public List<X509Certificate> getAllX509Certificates() {
968+ List<X509Certificate> certs = Lists.newArrayList( );
969+ for( X509Cert c : this.getCertificates() ) {
970+ certs.add( X509Cert.toCertificate( c ) );
971+ }
972+ return certs;
973+ }
974+
975+ public X509Certificate getX509Certificate() {
976+ for( X509Cert cert : this.getCertificates() ) {
977+ if( !cert.getRevoked( ) ) {
978+ return X509Cert.toCertificate( cert );
979+ }
980+ }
981+ return null;
982+ }
983+
984+ public boolean checkToken( String token ) {
985+ return this.getToken( ).equals( token )
986+ }
987+
988+ public void setX509Certificate( X509Certificate x509 ) {
989+ LOG.debug( "Setting new user certificate: " + x509.getSubjectX500Principal( ) + " " + x509.getSerialNumber( ) );
990+ this.getCertificates( ).add( X509Cert.fromCertificate( x509 ) );
991+ }
992+ public Boolean isEnabled() {
993+ return enabled;
994+ }
995+ public Boolean isAdministrator() {
996+ return administrator;
997+ }
998+ public BigInteger getNumber() {
999+ return new BigInteger( this.getId(), 16 );
1000 }
1001 @Override
1002 public int hashCode( ) {
1003 final int prime = 31;
1004- int result = super.hashCode( );
1005- result = prime * result + ( ( userName == null ) ? 0 : userName.hashCode( ) );
1006+ int result = 1;
1007+ result = prime * result + ( ( name == null ) ? 0 : name.hashCode( ) );
1008 return result;
1009 }
1010 @Override
1011 public boolean equals( Object obj ) {
1012 if ( this.is( obj ) ) return true;
1013- if ( !super.equals( obj ) ) return false;
1014 if ( getClass( ).is( obj.getClass( ) ) ) return false;
1015 User other = ( User ) obj;
1016- if ( userName == null ) {
1017- if ( other.userName != null ) return false;
1018- } else if ( !userName.equals( other.userName ) ) return false;
1019+ if ( name == null ) {
1020+ if ( other.name != null ) return false;
1021+ } else if ( !name.equals( other.name ) ) return false;
1022 return true;
1023- }
1024+ }
1025+ public String toString( ) {
1026+ StringBuilder sb = new StringBuilder( );
1027+ sb.append( "UserEntity [ ");
1028+ sb.append( "administrator = ").append( administrator == null ? "null" : administrator ).append( ", " );
1029+ sb.append( "enabled = ").append( enabled == null ? "null" : enabled ).append( ", " );
1030+ sb.append( "name = ").append( name == null ? "null" : name ).append( ", " );
1031+ sb.append( "password = ").append( password == null ? "null" : password ).append( ", " );
1032+ sb.append( "queryId = ").append( queryId == null ? "null" : queryId ).append( ", " );
1033+ sb.append( "secretKey = ").append( secretKey == null ? "null" : secretKey ).append( ", " );
1034+ sb.append( "token = ").append( token == null ? "null" : token ).append( ", " );
1035+ sb.append( "certificates = ");
1036+ for ( X509Cert certificate : getCertificates( ) ) {
1037+ sb.append( certificate.toString( ) ).append( ", " );
1038+ }
1039+ sb.append( "eucaGroupIds = " );
1040+ for ( String id : eucaGroupIds ) {
1041+ sb.append( id ).append( ", ");
1042+ }
1043+ sb.append( "]");
1044+ }
1045 }
1046
1047 @Entity
1048@@ -151,6 +246,8 @@
1049 public class X509Cert extends AbstractPersistent implements Serializable {
1050 @Column( name = "auth_x509_alias", unique=true )
1051 String alias
1052+ @Column( name = "auth_x509_revoked" )
1053+ Boolean revoked
1054 @Lob
1055 @Column( name = "auth_x509_pem_certificate" )
1056 String pemCertificate
1057@@ -159,27 +256,29 @@
1058 public X509Cert( String alias ) {
1059 this.alias = alias
1060 }
1061- public static X509Cert fromCertificate(String alias, X509Certificate x509) {
1062+ public Boolean isRevoked( ) {
1063+ return this.revoked;
1064+ }
1065+ public static X509Cert fromCertificate(X509Certificate x509) {
1066 X509Cert x = new X509Cert( );
1067- x.setAlias(alias);
1068- x.setPemCertificate( new String( UrlBase64.encode( Hashes.getPemBytes( x509 ) ) ) );
1069+ x.setAlias(x509.getSerialNumber( ).toString());
1070+ x.setPemCertificate( B64.url.encString( PEMFiles.getBytes( x509 ) ) );
1071 return x;
1072 }
1073 public static X509Certificate toCertificate(X509Cert x509) {
1074- return Hashes.getPemCert( UrlBase64.decode( x509.getPemCertificate( ).getBytes( ) ) );
1075+ return PEMFiles.getCert( B64.url.dec( x509.getPemCertificate( ) ) );
1076 }
1077
1078 @Override
1079 public int hashCode( ) {
1080 final int prime = 31;
1081- int result = super.hashCode( );
1082+ int result = 1;
1083 result = prime * result + ( ( alias == null ) ? 0 : alias.hashCode( ) );
1084 return result;
1085 }
1086 @Override
1087 public boolean equals( Object obj ) {
1088 if ( this.is( obj ) ) return true;
1089- if ( !super.equals( obj ) ) return false;
1090 if ( !getClass( ).equals( obj.getClass( ) ) ) return false;
1091 X509Cert other = ( X509Cert ) obj;
1092 if ( alias == null ) {
1093@@ -187,6 +286,12 @@
1094 } else if ( !alias.equals( other.alias ) ) return false;
1095 return true;
1096 }
1097+ public String toString( ) {
1098+ return ( new StringBuilder( ) ).append( alias == null ? "null" : alias ).append( " " )
1099+ .append( revoked == null ? "null" : revoked ).append( " " )
1100+ .append( pemCertificate == null ? "null" : pemCertificate )
1101+ .toString( );
1102+ }
1103 }
1104
1105 @Entity
1106@@ -196,11 +301,11 @@
1107 public class ClusterCredentials extends AbstractPersistent implements Serializable {
1108 @Column( name = "auth_cluster_name", unique=true )
1109 String clusterName
1110- @OneToOne(cascade = CascadeType.ALL)
1111+ @OneToOne( cascade=[CascadeType.ALL], fetch=FetchType.EAGER )
1112 @JoinColumn(name="auth_cluster_x509_certificate")
1113 @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
1114 X509Cert clusterCertificate
1115- @OneToOne(cascade = CascadeType.ALL)
1116+ @OneToOne( cascade=[CascadeType.ALL], fetch=FetchType.EAGER )
1117 @JoinColumn(name="auth_cluster_node_x509_certificate")
1118 @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
1119 X509Cert nodeCertificate
1120@@ -213,14 +318,14 @@
1121 @Override
1122 public int hashCode( ) {
1123 final int prime = 31;
1124- int result = super.hashCode( );
1125+ int result = 1;
1126 result = prime * result + ( ( clusterName == null ) ? 0 : clusterName.hashCode( ) );
1127 return result;
1128 }
1129+
1130 @Override
1131 public boolean equals( Object obj ) {
1132 if ( this.is( obj ) ) return true;
1133- if ( !super.equals( obj ) ) return false;
1134 if ( !getClass( ).equals( obj.getClass( ) ) ) return false;
1135 ClusterCredentials other = ( ClusterCredentials ) obj;
1136 if ( clusterName == null ) {
1137@@ -229,3 +334,4 @@
1138 return true;
1139 }
1140 }
1141+
1142
1143=== removed file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialProvider.java'
1144--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialProvider.java 2010-02-05 11:57:00 +0000
1145+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/CredentialProvider.java 1970-01-01 00:00:00 +0000
1146@@ -1,347 +0,0 @@
1147-/*******************************************************************************
1148- *Copyright (c) 2009 Eucalyptus Systems, Inc.
1149- *
1150- * This program is free software: you can redistribute it and/or modify
1151- * it under the terms of the GNU General Public License as published by
1152- * the Free Software Foundation, only version 3 of the License.
1153- *
1154- *
1155- * This file is distributed in the hope that it will be useful, but WITHOUT
1156- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1157- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1158- * for more details.
1159- *
1160- * You should have received a copy of the GNU General Public License along
1161- * with this program. If not, see <http://www.gnu.org/licenses/>.
1162- *
1163- * Please contact Eucalyptus Systems, Inc., 130 Castilian
1164- * Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
1165- * if you need additional information or have any questions.
1166- *
1167- * This file may incorporate work covered under the following copyright and
1168- * permission notice:
1169- *
1170- * Software License Agreement (BSD License)
1171- *
1172- * Copyright (c) 2008, Regents of the University of California
1173- * All rights reserved.
1174- *
1175- * Redistribution and use of this software in source and binary forms, with
1176- * or without modification, are permitted provided that the following
1177- * conditions are met:
1178- *
1179- * Redistributions of source code must retain the above copyright notice,
1180- * this list of conditions and the following disclaimer.
1181- *
1182- * Redistributions in binary form must reproduce the above copyright
1183- * notice, this list of conditions and the following disclaimer in the
1184- * documentation and/or other materials provided with the distribution.
1185- *
1186- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
1187- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1188- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
1189- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
1190- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1191- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
1192- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1193- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1194- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1195- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1196- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
1197- * THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
1198- * LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
1199- * SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
1200- * IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
1201- * BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
1202- * THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
1203- * OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
1204- * WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
1205- * ANY SUCH LICENSES OR RIGHTS.
1206- *******************************************************************************/
1207-/**
1208- *
1209- */
1210-/*
1211- * Author: chris grzegorczyk <grze@eucalyptus.com>
1212- */
1213-package com.eucalyptus.auth;
1214-
1215-import java.security.GeneralSecurityException;
1216-import java.security.cert.X509Certificate;
1217-import java.util.List;
1218-import java.util.zip.Adler32;
1219-import org.bouncycastle.util.encoders.UrlBase64;
1220-import org.hibernate.Session;
1221-import org.hibernate.criterion.Example;
1222-import org.hibernate.criterion.MatchMode;
1223-import com.eucalyptus.auth.util.Hashes;
1224-import com.eucalyptus.bootstrap.Bootstrapper;
1225-import com.eucalyptus.bootstrap.Depends;
1226-import com.eucalyptus.bootstrap.Provides;
1227-import com.eucalyptus.bootstrap.Resource;
1228-import com.eucalyptus.util.DatabaseUtil;
1229-import com.eucalyptus.util.EntityWrapper;
1230-import com.eucalyptus.util.EucalyptusCloudException;
1231-import com.google.common.collect.Lists;
1232-
1233-@Provides( resource = Resource.UserCredentials )
1234-@Depends( resources = { Resource.Database } )
1235-public class CredentialProvider extends Bootstrapper {
1236- public static boolean hasCertificate( final String alias ) {
1237- X509Cert certInfo = null;
1238- EntityWrapper<X509Cert> db = Credentials.getEntityWrapper( );
1239- try {
1240- certInfo = db.getUnique( new X509Cert( alias ) );
1241- db.commit( );
1242- } catch ( EucalyptusCloudException e ) {
1243- db.rollback( );
1244- }
1245- return certInfo != null;
1246- }
1247-
1248- public static X509Certificate getCertificate( final String alias ) throws GeneralSecurityException {
1249- EntityWrapper<X509Cert> db = Credentials.getEntityWrapper( );
1250- try {
1251- X509Cert certInfo = db.getUnique( new X509Cert( alias ) );
1252- String certString = certInfo.getPemCertificate();
1253- if(certString != null) {
1254- byte[] certBytes = UrlBase64.decode(certString.getBytes( ) );
1255- X509Certificate x509 = Hashes.getPemCert( certBytes );
1256- db.commit( );
1257- return x509;
1258- }
1259- return null;
1260- } catch ( EucalyptusCloudException e ) {
1261- db.rollback( );
1262- throw new GeneralSecurityException( e );
1263- }
1264- }
1265-
1266- public static String getCertificateAlias( final String certPem ) throws GeneralSecurityException {
1267- String certAlias = null;
1268- EntityWrapper<X509Cert> db = Credentials.getEntityWrapper( );
1269- X509Cert certInfo = new X509Cert( );
1270- certInfo.setPemCertificate( new String( UrlBase64.encode( certPem.getBytes( ) ) ) );
1271- try {
1272- certAlias = db.getUnique( certInfo ).getAlias( );
1273- db.commit( );
1274- } catch ( Throwable e ) {
1275- db.rollback( );
1276- throw new GeneralSecurityException( e );
1277- }
1278- return certAlias;
1279- }
1280-
1281- public static String getQueryId( String userName ) throws GeneralSecurityException {
1282- String queryId = null;
1283- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1284- User searchUser = new User( userName, true );
1285- try {
1286- User user = db.getUnique( searchUser );
1287- queryId = user.getQueryId( );
1288- db.commit( );
1289- } catch ( Throwable e ) {
1290- db.rollback( );
1291- throw new GeneralSecurityException( e );
1292- }
1293- return queryId;
1294- }
1295-
1296- public static String getSecretKey( String queryId ) throws GeneralSecurityException {
1297- String secretKey = null;
1298- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1299- User searchUser = new User( );
1300- searchUser.setQueryId( queryId );
1301- searchUser.setIsEnabled( true );
1302- try {
1303- User user = db.getUnique( searchUser );
1304- secretKey = user.getSecretKey( );
1305- db.commit( );
1306- } catch ( Throwable e ) {
1307- db.rollback( );
1308- throw new GeneralSecurityException( e );
1309- }
1310- return secretKey;
1311- }
1312-
1313- public static String getUserName( String queryId ) throws GeneralSecurityException {
1314- String userName = null;
1315- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1316- User searchUser = new User( );
1317- searchUser.setQueryId( queryId );
1318- try {
1319- User user = db.getUnique( searchUser );
1320- userName = user.getUserName( );
1321- db.commit( );
1322- } catch ( Throwable e ) {
1323- db.rollback( );
1324- throw new GeneralSecurityException( e );
1325- }
1326- return userName;
1327- }
1328-
1329- public static String getUserName( X509Certificate cert ) throws GeneralSecurityException {
1330- return getUser( cert ).getUserName( );
1331- }
1332-
1333- @SuppressWarnings( "unchecked" )
1334- public static User getUser( X509Certificate cert ) throws GeneralSecurityException {
1335- String certPem = new String( UrlBase64.encode( Hashes.getPemBytes( cert ) ) );
1336- User searchUser = new User( );
1337- X509Cert searchCert = new X509Cert( );
1338- searchCert.setPemCertificate( certPem );
1339- searchUser.setIsEnabled( true );
1340- Session session = DatabaseUtil.getEntityManagerFactory( Credentials.DB_NAME ).getSessionFactory( ).openSession( );
1341- try {
1342- Example qbeUser = Example.create( searchUser ).enableLike( MatchMode.EXACT );
1343- Example qbeCert = Example.create( searchCert ).enableLike( MatchMode.EXACT );
1344- List<User> users = ( List<User> ) session.createCriteria( User.class ).setCacheable( true ).add( qbeUser )
1345- .createCriteria( "certificates" ).setCacheable( true ).add( qbeCert )
1346- .list( );
1347- User ret = users.size()==1?users.get(0):null;
1348- int size = users.size();
1349- if( ret != null ) {
1350- return ret;
1351- } else {
1352- throw new GeneralSecurityException( (size == 0)?"No user with the specified certificate.":"Multiple users with the same certificate." );
1353- }
1354- } catch ( Throwable t ) {
1355- throw new GeneralSecurityException( t );
1356- } finally {
1357- try {
1358- session.close( );
1359- } catch ( Throwable t ) {
1360- }
1361- }
1362- }
1363-
1364- public static String getCertificateAlias( final X509Certificate cert ) throws GeneralSecurityException {
1365- return getCertificateAlias( new String( Hashes.getPemBytes( cert ) ) );
1366- }
1367-
1368- public static void addCertificate( final String userName, final String alias, final X509Certificate cert ) throws GeneralSecurityException {
1369- String certPem = new String( UrlBase64.encode( Hashes.getPemBytes( cert ) ) );
1370- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1371- User u = null;
1372- try {
1373- u = db.getUnique( new User( userName ) );
1374- X509Cert x509cert = new X509Cert( alias );
1375- x509cert.setPemCertificate( certPem );
1376- u.getCertificates( ).add( x509cert );
1377- db.commit( );
1378- } catch ( EucalyptusCloudException e ) {
1379- Credentials.LOG.error( e, e );
1380- Credentials.LOG.error( "username=" + userName + " \nalias=" + alias + " \ncert=" + cert );
1381- db.rollback( );
1382- throw new GeneralSecurityException( e );
1383- }
1384- }
1385-
1386- public static List<String> getAliases( ) {
1387- EntityWrapper<X509Cert> db = Credentials.getEntityWrapper( );
1388- List<String> certAliases = Lists.newArrayList( );
1389- try {
1390- List<X509Cert> certList = db.query( new X509Cert( ) );
1391- for ( X509Cert cert : certList ) {
1392- certAliases.add( cert.getAlias( ) );
1393- }
1394- db.commit( );
1395- } catch ( Throwable e ) {
1396- db.rollback( );
1397- }
1398- return certAliases;
1399- }
1400-
1401- @Override
1402- public boolean load( Resource current ) throws Exception {
1403- return true;
1404- }
1405-
1406- @Override
1407- public boolean start( ) throws Exception {
1408- return Credentials.checkAdmin( );
1409- }
1410-
1411- public static String getUserNumber( final String userName ) {
1412- Adler32 hash = new Adler32( );
1413- hash.reset( );
1414- hash.update( userName.getBytes( ) );
1415- String userNumber = String.format( "%012d", hash.getValue( ) );
1416- return userNumber;
1417- }
1418-
1419- public static User getUser( String userName ) throws NoSuchUserException {
1420- User user = null;
1421- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1422- User searchUser = new User( userName, true );
1423- try {
1424- user = db.getUnique( searchUser );
1425- db.commit( );
1426- } catch ( EucalyptusCloudException e ) {
1427- db.rollback( );
1428- throw new NoSuchUserException( e );
1429- }
1430- return user;
1431- }
1432-
1433- public static List<User> getAllUsers( ) {
1434- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1435- try {
1436- return db.query( new User( null, true ) );
1437- } finally {
1438- db.commit( );
1439- }
1440- }
1441-
1442- public static User addUser( String userName, Boolean isAdmin, String queryId, String secretKey ) throws UserExistsException {
1443- User newUser = new User( userName, true );
1444- newUser.setQueryId( queryId );
1445- newUser.setSecretKey( secretKey );
1446- newUser.setIsAdministrator( isAdmin );
1447- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1448- try {
1449- db.add( newUser );
1450- db.commit( );
1451- } catch ( Exception e ) {
1452- db.rollback( );
1453- throw new UserExistsException( e );
1454- }
1455- return newUser;
1456- }
1457-
1458- public static User addUser( String userName, Boolean isAdmin ) throws UserExistsException {
1459- String queryId = Hashes.getDigestBase64( userName, Hashes.Digest.SHA224, false ).replaceAll( "\\p{Punct}", "" );
1460- String secretKey = Hashes.getDigestBase64( userName, Hashes.Digest.SHA224, true ).replaceAll( "\\p{Punct}", "" );
1461- return CredentialProvider.addUser( userName, isAdmin, queryId, secretKey );
1462- }
1463-
1464- public static User addUser( String userName ) throws UserExistsException {
1465- return CredentialProvider.addUser( userName, false );
1466- }
1467-
1468- public static void deleteUser( String userName ) throws NoSuchUserException {
1469- User user = new User( userName );
1470- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1471- try {
1472- User foundUser = db.getUnique( user );
1473- db.delete( foundUser );
1474- db.commit( );
1475- } catch ( Exception e ) {
1476- db.rollback( );
1477- throw new NoSuchUserException( e );
1478- }
1479- }
1480-
1481- public static void updateUser( String userName, Boolean isEnabled ) throws NoSuchUserException {
1482- User user = new User( userName );
1483- EntityWrapper<User> db = Credentials.getEntityWrapper( );
1484- try {
1485- User foundUser = db.getUnique( user );
1486- foundUser.setIsEnabled( isEnabled );
1487- db.commit( );
1488- } catch ( Exception e ) {
1489- db.rollback( );
1490- throw new NoSuchUserException( e );
1491- }
1492- }
1493-}
1494
1495=== removed file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/Credentials.java'
1496--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/Credentials.java 2010-02-05 11:57:00 +0000
1497+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/Credentials.java 1970-01-01 00:00:00 +0000
1498@@ -1,107 +0,0 @@
1499-/*******************************************************************************
1500-*Copyright (c) 2009 Eucalyptus Systems, Inc.
1501-*
1502-* This program is free software: you can redistribute it and/or modify
1503-* it under the terms of the GNU General Public License as published by
1504-* the Free Software Foundation, only version 3 of the License.
1505-*
1506-*
1507-* This file is distributed in the hope that it will be useful, but WITHOUT
1508-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1509-* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1510-* for more details.
1511-*
1512-* You should have received a copy of the GNU General Public License along
1513-* with this program. If not, see <http://www.gnu.org/licenses/>.
1514-*
1515-* Please contact Eucalyptus Systems, Inc., 130 Castilian
1516-* Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
1517-* if you need additional information or have any questions.
1518-*
1519-* This file may incorporate work covered under the following copyright and
1520-* permission notice:
1521-*
1522-* Software License Agreement (BSD License)
1523-*
1524-* Copyright (c) 2008, Regents of the University of California
1525-* All rights reserved.
1526-*
1527-* Redistribution and use of this software in source and binary forms, with
1528-* or without modification, are permitted provided that the following
1529-* conditions are met:
1530-*
1531-* Redistributions of source code must retain the above copyright notice,
1532-* this list of conditions and the following disclaimer.
1533-*
1534-* Redistributions in binary form must reproduce the above copyright
1535-* notice, this list of conditions and the following disclaimer in the
1536-* documentation and/or other materials provided with the distribution.
1537-*
1538-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
1539-* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1540-* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
1541-* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
1542-* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1543-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
1544-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1545-* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1546-* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1547-* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1548-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
1549-* THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
1550-* LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
1551-* SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
1552-* IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
1553-* BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
1554-* THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
1555-* OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
1556-* WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
1557-* ANY SUCH LICENSES OR RIGHTS.
1558-*******************************************************************************/
1559-/*
1560- * Author: chris grzegorczyk <grze@eucalyptus.com>
1561- */
1562-package com.eucalyptus.auth;
1563-
1564-import java.security.Security;
1565-
1566-import org.apache.log4j.Logger;
1567-import org.apache.ws.security.WSSConfig;
1568-import org.bouncycastle.jce.provider.BouncyCastleProvider;
1569-
1570-import com.eucalyptus.util.EntityWrapper;
1571-
1572-public class Credentials {
1573- static Logger LOG = Logger.getLogger( Credentials.class );
1574- private static String FORMAT = "pkcs12";
1575- private static String KEY_STORE_PASS = "eucalyptus";
1576- private static String FILENAME = "euca.p12";
1577- static String DB_NAME = "eucalyptus_auth";
1578-
1579- public static void init( ) {
1580- Security.addProvider( new BouncyCastleProvider( ) );
1581- org.apache.xml.security.Init.init( );
1582- WSSConfig.getDefaultWSConfig( ).addJceProvider( "BC", BouncyCastleProvider.class.getCanonicalName( ) );
1583- WSSConfig.getDefaultWSConfig( ).setTimeStampStrict( true );
1584- WSSConfig.getDefaultWSConfig( ).setEnableSignatureConfirmation( true );
1585- }
1586-
1587- public static boolean checkAdmin( ) {
1588- try {
1589- CredentialProvider.getUser( "admin" );
1590- } catch ( NoSuchUserException e ) {
1591- try {
1592- CredentialProvider.addUser( "admin", Boolean.TRUE );
1593- } catch ( UserExistsException e1 ) {
1594- LOG.fatal( e1, e1 );
1595- return false;
1596- }
1597- }
1598- return true;
1599- }
1600-
1601- public static <T> EntityWrapper<T> getEntityWrapper( ) {
1602- return new EntityWrapper<T>( Credentials.DB_NAME );
1603- }
1604-
1605-}
1606
1607=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthBootstrapper.java'
1608--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthBootstrapper.java 1970-01-01 00:00:00 +0000
1609+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthBootstrapper.java 2010-08-17 20:32:41 +0000
1610@@ -0,0 +1,72 @@
1611+package com.eucalyptus.auth;
1612+
1613+import org.apache.log4j.Logger;
1614+import com.eucalyptus.auth.util.AuthBootstrapHelper;
1615+import com.eucalyptus.bootstrap.Bootstrap;
1616+import com.eucalyptus.bootstrap.Bootstrapper;
1617+import com.eucalyptus.bootstrap.Component;
1618+import com.eucalyptus.bootstrap.DependsLocal;
1619+import com.eucalyptus.bootstrap.Provides;
1620+import com.eucalyptus.bootstrap.RunDuring;
1621+import com.eucalyptus.bootstrap.Bootstrap.Stage;
1622+import com.eucalyptus.entities.Counters;
1623+import com.eucalyptus.entities.EntityWrapper;
1624+import com.eucalyptus.entities.VmType;
1625+
1626+@Provides( Component.bootstrap )
1627+@RunDuring( Bootstrap.Stage.UserCredentialsInit )
1628+public class DatabaseAuthBootstrapper extends Bootstrapper {
1629+ private static Logger LOG = Logger.getLogger( DatabaseAuthBootstrapper.class );
1630+
1631+ public static boolean ENABLE = true;
1632+
1633+ public boolean load( Stage current ) throws Exception {
1634+ if (ENABLE) {
1635+ DatabaseAuthProvider dbAuth = new DatabaseAuthProvider( );
1636+ Users.setUserProvider( dbAuth );
1637+ Groups.setGroupProvider( dbAuth );
1638+ UserInfoStore.setUserInfoProvider( dbAuth );
1639+ }
1640+ return true;
1641+ }
1642+
1643+ public boolean start( ) throws Exception {
1644+ if (ENABLE) {
1645+ this.checkUserEnabled( );
1646+ AuthBootstrapHelper.ensureStandardGroupsExists( );
1647+ AuthBootstrapHelper.ensureAdminExists( );
1648+ }
1649+ this.ensureCountersExist( );
1650+ this.ensureVmTypesExist( );
1651+ return true;
1652+ }
1653+
1654+ private void checkUserEnabled( ) {
1655+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1656+ for ( UserEntity u : db.query( new UserEntity( ) ) ) {
1657+ if ( u.isEnabled( ) != Boolean.FALSE ) {
1658+ u.setEnabled( Boolean.TRUE );
1659+ }
1660+ }
1661+ }
1662+
1663+ private void ensureVmTypesExist( ) {
1664+ EntityWrapper<VmType> db = new EntityWrapper<VmType>( "eucalyptus_general" );
1665+ try {
1666+ if ( db.query( new VmType( ) ).size( ) == 0 ) { //TODO: make defaults configurable?
1667+ db.add( new VmType( "m1.small", 1, 2, 128 ) );
1668+ db.add( new VmType( "c1.medium", 1, 5, 256 ) );
1669+ db.add( new VmType( "m1.large", 2, 10, 512 ) );
1670+ db.add( new VmType( "m1.xlarge", 2, 20, 1024 ) );
1671+ db.add( new VmType( "c1.xlarge", 4, 20, 2048 ) );
1672+ }
1673+ db.commit( );
1674+ } catch ( Exception e ) {
1675+ db.rollback( );
1676+ }
1677+ }
1678+
1679+ private void ensureCountersExist( ) {
1680+ Counters.getNextId( );
1681+ }
1682+}
1683
1684=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthProvider.java'
1685--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthProvider.java 1970-01-01 00:00:00 +0000
1686+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseAuthProvider.java 2010-08-17 20:32:41 +0000
1687@@ -0,0 +1,423 @@
1688+/*******************************************************************************
1689+ *Copyright (c) 2009 Eucalyptus Systems, Inc.
1690+ *
1691+ * This program is free software: you can redistribute it and/or modify
1692+ * it under the terms of the GNU General Public License as published by
1693+ * the Free Software Foundation, only version 3 of the License.
1694+ *
1695+ *
1696+ * This file is distributed in the hope that it will be useful, but WITHOUT
1697+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1698+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1699+ * for more details.
1700+ *
1701+ * You should have received a copy of the GNU General Public License along
1702+ * with this program. If not, see <http://www.gnu.org/licenses/>.
1703+ *
1704+ * Please contact Eucalyptus Systems, Inc., 130 Castilian
1705+ * Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
1706+ * if you need additional information or have any questions.
1707+ *
1708+ * This file may incorporate work covered under the following copyright and
1709+ * permission notice:
1710+ *
1711+ * Software License Agreement (BSD License)
1712+ *
1713+ * Copyright (c) 2008, Regents of the University of California
1714+ * All rights reserved.
1715+ *
1716+ * Redistribution and use of this software in source and binary forms, with
1717+ * or without modification, are permitted provided that the following
1718+ * conditions are met:
1719+ *
1720+ * Redistributions of source code must retain the above copyright notice,
1721+ * this list of conditions and the following disclaimer.
1722+ *
1723+ * Redistributions in binary form must reproduce the above copyright
1724+ * notice, this list of conditions and the following disclaimer in the
1725+ * documentation and/or other materials provided with the distribution.
1726+ *
1727+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
1728+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1729+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
1730+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
1731+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1732+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
1733+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1734+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1735+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1736+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1737+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
1738+ * THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
1739+ * LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
1740+ * SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
1741+ * IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
1742+ * BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
1743+ * THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
1744+ * OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
1745+ * WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
1746+ * ANY SUCH LICENSES OR RIGHTS.
1747+ *******************************************************************************
1748+ * Author: chris grzegorczyk <grze@eucalyptus.com>
1749+ */
1750+package com.eucalyptus.auth;
1751+
1752+import java.security.GeneralSecurityException;
1753+import java.security.cert.X509Certificate;
1754+import java.util.List;
1755+import org.apache.log4j.Logger;
1756+import org.hibernate.Session;
1757+import org.hibernate.criterion.Example;
1758+import org.hibernate.criterion.MatchMode;
1759+import com.eucalyptus.auth.api.GroupProvider;
1760+import com.eucalyptus.auth.api.NoSuchCertificateException;
1761+import com.eucalyptus.auth.api.UserInfoProvider;
1762+import com.eucalyptus.auth.api.UserProvider;
1763+import com.eucalyptus.auth.crypto.Crypto;
1764+import com.eucalyptus.auth.crypto.Hmacs;
1765+import com.eucalyptus.auth.principal.Group;
1766+import com.eucalyptus.auth.principal.User;
1767+import com.eucalyptus.auth.util.B64;
1768+import com.eucalyptus.auth.util.PEMFiles;
1769+import com.eucalyptus.entities.EntityWrapper;
1770+import com.eucalyptus.util.EucalyptusCloudException;
1771+import com.eucalyptus.util.Tx;
1772+import com.google.common.collect.Lists;
1773+
1774+public class DatabaseAuthProvider implements UserProvider, GroupProvider, UserInfoProvider {
1775+ private static Logger LOG = Logger.getLogger( DatabaseAuthProvider.class );
1776+
1777+ public DatabaseAuthProvider( ) {}
1778+
1779+ @Override
1780+ public User addUser( String userName, Boolean isAdmin, Boolean isEnabled ) throws UserExistsException {
1781+ UserEntity newUser = new UserEntity( userName );
1782+ newUser.setQueryId( Hmacs.generateQueryId( userName ) );
1783+ newUser.setSecretKey( Hmacs.generateSecretKey( userName ) );
1784+ newUser.setAdministrator( isAdmin );
1785+ newUser.setEnabled( isEnabled );
1786+ newUser.setPassword( Crypto.generateHashedPassword( userName ) );
1787+ newUser.setToken( Crypto.generateSessionToken( userName ) );
1788+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1789+ try {
1790+ db.add( newUser );
1791+ db.commit( );
1792+ } catch ( Throwable t ) {
1793+ db.rollback( );
1794+ throw new UserExistsException( t );
1795+ }
1796+ EntityWrapper<UserInfo> dbU = EntityWrapper.get( UserInfo.class );
1797+ try {
1798+ String confirmCode = Crypto.generateSessionToken( userName );
1799+ UserInfo newUserInfo = new UserInfo( userName, confirmCode );
1800+ dbU.add( newUserInfo );
1801+ dbU.commit( );
1802+ } catch ( Exception e ) {
1803+ LOG.debug( e, e );
1804+ dbU.rollback( );
1805+ }
1806+ User proxy = new DatabaseWrappedUser( newUser );
1807+ Groups.DEFAULT.addMember( proxy );
1808+ return proxy;
1809+ }
1810+
1811+ @Override
1812+ public void deleteUser( String userName ) throws NoSuchUserException {
1813+ UserEntity user = new UserEntity( userName );
1814+ EntityWrapper<UserInfo> dbU = EntityWrapper.get( UserInfo.class );
1815+ try {
1816+ UserInfo newUserInfo = dbU.getUnique( new UserInfo( userName ) );
1817+ dbU.delete( newUserInfo );
1818+ dbU.commit( );
1819+ } catch ( Exception e ) {
1820+ LOG.debug( e, e );
1821+ dbU.rollback( );
1822+ }
1823+ EntityWrapper<User> db = Authentication.getEntityWrapper( );
1824+ try {
1825+ User foundUser = db.getUnique( user );
1826+ for( Group g : Groups.lookupUserGroups( foundUser ) ) {
1827+ g.removeMember( foundUser );
1828+ }
1829+ db.delete( foundUser );
1830+ db.commit( );
1831+ } catch ( Exception e ) {
1832+ db.rollback( );
1833+ throw new NoSuchUserException( e );
1834+ }
1835+ }
1836+
1837+ @Override
1838+ public List<Group> lookupUserGroups( User user ) {
1839+ List<Group> userGroups = Lists.newArrayList( );
1840+ EntityWrapper<GroupEntity> db = Authentication.getEntityWrapper( );
1841+ try {
1842+ UserEntity userInfo = db.recast( UserEntity.class ).getUnique( new UserEntity( user.getName( ) ) );
1843+ for ( GroupEntity g : db.query( new GroupEntity( ) ) ) {
1844+ if ( g.isMember( userInfo ) ) {
1845+ userGroups.add( DatabaseWrappedGroup.newInstance( g ) );
1846+ }
1847+ }
1848+ db.commit( );
1849+ } catch ( EucalyptusCloudException e ) {
1850+ LOG.debug( e, e );
1851+ db.rollback( );
1852+ }
1853+ return userGroups;
1854+ }
1855+
1856+ @Override
1857+ public Group lookupGroup( String groupName ) throws NoSuchGroupException {
1858+ EntityWrapper<GroupEntity> db = Authentication.getEntityWrapper( );
1859+ try {
1860+ GroupEntity group = db.getUnique( new GroupEntity( groupName ) );
1861+ db.commit( );
1862+ return DatabaseWrappedGroup.newInstance( group );
1863+ } catch ( EucalyptusCloudException e ) {
1864+ db.rollback( );
1865+ throw new NoSuchGroupException( e );
1866+ }
1867+ }
1868+
1869+ @Override
1870+ public List<User> listAllUsers( ) {
1871+ List<User> users = Lists.newArrayList( );
1872+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1873+ UserEntity searchUser = new UserEntity( );
1874+ UserEntity user = null;
1875+ try {
1876+ for( UserEntity u : db.query( searchUser ) ) {
1877+ users.add( new DatabaseWrappedUser( u ) );
1878+ }
1879+ db.commit( );
1880+ } catch ( Throwable e ) {
1881+ db.rollback( );
1882+ }
1883+ return users;
1884+ }
1885+
1886+ @Override
1887+ public List<User> listEnabledUsers( ) {
1888+ List<User> users = Lists.newArrayList( );
1889+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1890+ UserEntity searchUser = new UserEntity( );
1891+ searchUser.setEnabled( true );
1892+ UserEntity user = null;
1893+ try {
1894+ for( UserEntity u : db.query( searchUser ) ) {
1895+ users.add( new DatabaseWrappedUser( u ) );
1896+ }
1897+ db.commit( );
1898+ } catch ( Throwable e ) {
1899+ db.rollback( );
1900+ }
1901+ return users;
1902+ }
1903+
1904+ @Override
1905+ public User lookupCertificate( X509Certificate cert ) throws NoSuchUserException {
1906+ String certPem = B64.url.encString( PEMFiles.getBytes( cert ) );
1907+ UserEntity searchUser = new UserEntity( );
1908+ searchUser.setEnabled( true );
1909+ X509Cert searchCert = new X509Cert( );
1910+ searchCert.setPemCertificate( certPem );
1911+ searchCert.setRevoked( null );
1912+ EntityWrapper<UserEntity> db = EntityWrapper.get( searchUser );
1913+ Session session = db.getSession( );
1914+ try {
1915+ Example qbeUser = Example.create( searchUser ).enableLike( MatchMode.EXACT );
1916+ Example qbeCert = Example.create( searchCert ).enableLike( MatchMode.EXACT );
1917+ List<UserEntity> users = ( List<UserEntity> ) session.createCriteria( UserEntity.class ).setCacheable( true ).add( qbeUser ).createCriteria( "certificates" )
1918+ .setCacheable( true ).add( qbeCert ).list( );
1919+ UserEntity ret = users.size( ) == 1 ? users.get( 0 ) : null;
1920+ int size = users.size( );
1921+ if ( ret != null ) {
1922+ return new DatabaseWrappedUser( ret );
1923+ } else {
1924+ throw new GeneralSecurityException( ( size == 0 ) ? "No user with the specified certificate." : "Multiple users with the same certificate." );
1925+ }
1926+ } catch ( Throwable t ) {
1927+ throw new NoSuchUserException( t );
1928+ } finally {
1929+ db.rollback( );
1930+ }
1931+ }
1932+
1933+ @Override
1934+ public boolean checkRevokedCertificate( X509Certificate cert ) throws NoSuchCertificateException {
1935+ String certPem = B64.url.encString( PEMFiles.getBytes( cert ) );
1936+ UserEntity searchUser = new UserEntity( );
1937+ searchUser.setEnabled( true );
1938+ X509Cert searchCert = new X509Cert( );
1939+ searchCert.setPemCertificate( certPem );
1940+ searchCert.setRevoked( true );
1941+ EntityWrapper<UserEntity> db = EntityWrapper.get( searchUser );
1942+ Session session = db.getSession( );
1943+ try {
1944+ Example qbeUser = Example.create( searchUser ).enableLike( MatchMode.EXACT );
1945+ Example qbeCert = Example.create( searchCert ).enableLike( MatchMode.EXACT );
1946+ List<User> users = ( List<User> ) session.createCriteria( User.class ).setCacheable( true ).add( qbeUser ).createCriteria( "certificates" )
1947+ .setCacheable( true ).add( qbeCert ).list( );
1948+ if( users.isEmpty( ) || users.size( ) > 1 ) {
1949+ throw new NoSuchCertificateException( "Failed to identify user (found " + users.size() + ") from certificate information: " + cert.getSubjectX500Principal( ).toString( ) );
1950+ } else {
1951+ return true;
1952+ }
1953+ } finally {
1954+ db.rollback( );
1955+ }
1956+ }
1957+
1958+
1959+ @Override
1960+ public User lookupQueryId( String queryId ) throws NoSuchUserException {
1961+ String userName = null;
1962+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1963+ UserEntity searchUser = new UserEntity( );
1964+ searchUser.setQueryId( queryId );
1965+ UserEntity user = null;
1966+ try {
1967+ user = db.getUnique( searchUser );
1968+ db.commit( );
1969+ } catch ( Throwable e ) {
1970+ db.rollback( );
1971+ throw new NoSuchUserException( e );
1972+ }
1973+ return new DatabaseWrappedUser( user );
1974+ }
1975+
1976+ @Override
1977+ public User lookupUser( String userName ) throws NoSuchUserException {
1978+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
1979+ UserEntity searchUser = new UserEntity( userName );
1980+ UserEntity user = null;
1981+ try {
1982+ user = db.getUnique( searchUser );
1983+ db.commit( );
1984+ } catch ( Throwable e ) {
1985+ db.rollback( );
1986+ throw new NoSuchUserException( e );
1987+ }
1988+ return new DatabaseWrappedUser( user );
1989+ }
1990+
1991+ @Override
1992+ public Group addGroup( String groupName ) throws GroupExistsException {
1993+ EntityWrapper<GroupEntity> db = Authentication.getEntityWrapper( );
1994+ GroupEntity newGroup = new GroupEntity( groupName );
1995+ try {
1996+ db.add( newGroup );
1997+ db.commit( );
1998+ } catch ( Throwable t ) {
1999+ db.rollback( );
2000+ throw new GroupExistsException( t );
2001+ }
2002+ return DatabaseWrappedGroup.newInstance( newGroup );
2003+ }
2004+
2005+ @Override
2006+ public List<Group> listAllGroups( ) {
2007+ List<Group> ret = Lists.newArrayList( );
2008+ GroupEntity search = new GroupEntity( );
2009+ EntityWrapper<GroupEntity> db = EntityWrapper.get( search );
2010+ try {
2011+ List<GroupEntity> groupList = db.query( search );
2012+ for ( GroupEntity g : groupList ) {
2013+ ret.add( DatabaseWrappedGroup.newInstance( g ) );
2014+ }
2015+ } finally {
2016+ db.commit( );
2017+ }
2018+ return ret;
2019+ }
2020+ @Override
2021+ public void deleteGroup( String groupName ) throws NoSuchGroupException {
2022+ Groups.checkNotRestricted( groupName );
2023+ EntityWrapper<GroupEntity> db = Authentication.getEntityWrapper( );
2024+ GroupEntity delGroup = new GroupEntity( groupName );
2025+ try {
2026+ GroupEntity g = db.getUnique( delGroup );
2027+ db.delete( g );
2028+ db.commit( );
2029+ } catch ( Throwable t ) {
2030+ db.rollback( );
2031+ throw new NoSuchGroupException( t );
2032+ }
2033+ }
2034+
2035+ @Override
2036+ public void updateUser( String name, Tx<User> userTx ) throws NoSuchUserException {
2037+ UserEntity search = new UserEntity(name);
2038+ EntityWrapper<UserEntity> db = EntityWrapper.get( search );
2039+ try {
2040+ UserEntity entity = db.getUnique( search );
2041+ userTx.fire( entity );
2042+ db.commit( );
2043+ } catch ( EucalyptusCloudException e ) {
2044+ db.rollback( );
2045+ throw new NoSuchUserException( e.getMessage( ), e );
2046+ } catch ( Throwable e ) {
2047+ db.rollback( );
2048+ LOG.error( e, e );
2049+ throw new NoSuchUserException( e.getMessage( ), e );
2050+ }
2051+ }
2052+
2053+ @Override
2054+ public void addUserInfo( UserInfo user ) throws UserExistsException {
2055+ EntityWrapper<UserInfo> dbWrapper = EntityWrapper.get( UserInfo.class );
2056+ try {
2057+ dbWrapper.add( user );
2058+ dbWrapper.commit();
2059+ } catch ( Exception e1 ) {
2060+ dbWrapper.rollback();
2061+ LOG.error( e1, e1 );
2062+ throw new UserExistsException( "User info exists", e1 );
2063+ }
2064+ }
2065+
2066+ @Override
2067+ public void deleteUserInfo( String userName ) throws NoSuchUserException {
2068+ EntityWrapper<UserInfo> dbWrapper = new EntityWrapper<UserInfo>( );
2069+ try {
2070+ UserInfo userInfo = dbWrapper.getUnique( new UserInfo(userName) );
2071+ dbWrapper.delete( userInfo );
2072+ dbWrapper.commit( );
2073+ } catch ( EucalyptusCloudException e1 ) {
2074+ dbWrapper.rollback( );
2075+ LOG.error( e1, e1 );
2076+ throw new NoSuchUserException( "User info does not exist", e1 );
2077+ }
2078+ }
2079+
2080+ @Override
2081+ public UserInfo getUserInfo( UserInfo search ) throws NoSuchUserException {
2082+ EntityWrapper<UserInfo> dbWrapper = new EntityWrapper<UserInfo>( );
2083+ try {
2084+ UserInfo userInfo = dbWrapper.getUnique( search );
2085+ dbWrapper.commit( );
2086+ return userInfo;
2087+ } catch ( EucalyptusCloudException e ) {
2088+ dbWrapper.rollback( );
2089+ throw new NoSuchUserException( "User info does not exist", e );
2090+ }
2091+ }
2092+
2093+ @Override
2094+ public void updateUserInfo( String name, Tx<UserInfo> infoTx ) throws NoSuchUserException {
2095+ EntityWrapper<UserInfo> dbWrapper = new EntityWrapper<UserInfo>( );
2096+ try {
2097+ UserInfo userInfo = dbWrapper.getUnique( new UserInfo(name) );
2098+ infoTx.fire( userInfo );
2099+ dbWrapper.commit( );
2100+ } catch ( EucalyptusCloudException e ) {
2101+ dbWrapper.rollback( );
2102+ LOG.error( e, e );
2103+ throw new NoSuchUserException( "User info does not exist", e );
2104+ } catch ( Throwable t ) {
2105+ dbWrapper.rollback( );
2106+ LOG.error( t, t );
2107+ throw new NoSuchUserException( "Error in updating user info", t );
2108+ }
2109+ }
2110+}
2111
2112=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedGroup.java'
2113--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedGroup.java 1970-01-01 00:00:00 +0000
2114+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedGroup.java 2010-08-17 20:32:41 +0000
2115@@ -0,0 +1,218 @@
2116+package com.eucalyptus.auth;
2117+
2118+import java.security.Principal;
2119+import java.util.Enumeration;
2120+import java.util.List;
2121+import org.apache.log4j.Logger;
2122+import com.eucalyptus.auth.principal.Authorization;
2123+import com.eucalyptus.auth.principal.BaseAuthorization;
2124+import com.eucalyptus.auth.principal.Group;
2125+import com.eucalyptus.auth.principal.User;
2126+import com.eucalyptus.entities.EntityWrapper;
2127+import com.eucalyptus.records.EventClass;
2128+import com.eucalyptus.records.EventRecord;
2129+import com.eucalyptus.records.EventType;
2130+import com.eucalyptus.util.EucalyptusCloudException;
2131+import com.eucalyptus.util.FinalReturn;
2132+import com.eucalyptus.util.TransactionException;
2133+import com.eucalyptus.util.Transactions;
2134+import com.eucalyptus.util.Tx;
2135+import com.google.common.collect.ImmutableList;
2136+import com.google.common.collect.Iterators;
2137+import com.google.common.collect.Lists;
2138+
2139+public class DatabaseWrappedGroup implements Group {
2140+ private static Logger LOG = Logger.getLogger( DatabaseWrappedGroup.class );
2141+
2142+ public static Group newInstance( Group g ) {
2143+ if( Groups.NAME_ALL.equals( g.getName( ) ) ) {
2144+ return new AllGroup( g );
2145+ } else {
2146+ return new DatabaseWrappedGroup( g );
2147+ }
2148+ }
2149+
2150+ private GroupEntity searchGroup;
2151+ private Group group;
2152+
2153+ protected DatabaseWrappedGroup( Group group ) {
2154+ this.searchGroup = new GroupEntity( group.getName( ) );
2155+ this.group = group;
2156+ }
2157+
2158+ @Override
2159+ public boolean addMember( Principal principal ) {
2160+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
2161+ try {
2162+ UserEntity user = db.getUnique( new UserEntity( principal.getName( ) ) );
2163+ GroupEntity g = db.recast( GroupEntity.class ).getUnique( this.searchGroup );
2164+ if ( !g.isMember( user ) ) {
2165+ g.addMember( user );
2166+ db.commit( );
2167+ EventRecord.here( Groups.class, EventClass.GROUP, EventType.GROUP_MEMBER_ADDED, this.getName( ), user.getName( ) ).info();
2168+ return true;
2169+ } else {
2170+ db.rollback( );
2171+ return false;
2172+ }
2173+ } catch ( EucalyptusCloudException e ) {
2174+ LOG.debug( e, e );
2175+ db.rollback( );
2176+ return false;
2177+ }
2178+ }
2179+
2180+ @Override
2181+ public boolean isMember( Principal member ) {
2182+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
2183+ try {
2184+ boolean ret = this.group.isMember( db.getUnique( new UserEntity( member.getName( ) ) ) );
2185+ db.commit( );
2186+ return ret;
2187+ } catch ( EucalyptusCloudException e ) {
2188+ LOG.debug( e, e );
2189+ db.rollback( );
2190+ return false;
2191+ }
2192+ }
2193+
2194+ @Override
2195+ public Enumeration<? extends Principal> members( ) {
2196+ final List<User> userList = Lists.newArrayList( );
2197+ try {
2198+ Transactions.one( this.searchGroup, new Tx<GroupEntity>( ) {
2199+ @Override
2200+ public void fire( GroupEntity t ) throws Throwable {
2201+ for( User user : t.getMembers( ) ) {
2202+ try {
2203+ userList.add( Users.lookupUser( user.getName( ) ) );
2204+ } catch ( NoSuchUserException e ) {
2205+ LOG.debug( e, e );
2206+ }
2207+ }
2208+ }
2209+ } );
2210+ } catch ( TransactionException e1 ) {
2211+ LOG.debug( e1, e1 );
2212+ }
2213+ return Iterators.asEnumeration( userList.iterator( ) );
2214+ }
2215+
2216+ @Override
2217+ public boolean removeMember( Principal user ) {
2218+ EntityWrapper<UserEntity> db = Authentication.getEntityWrapper( );
2219+ try {
2220+ UserEntity userInfo = db.getUnique( new UserEntity( user.getName( ) ) );
2221+ GroupEntity g = db.recast( GroupEntity.class ).getUnique( this.searchGroup );
2222+ if ( g.isMember( userInfo ) ) {
2223+ g.removeMember( userInfo );
2224+ db.commit( );
2225+ EventRecord.here( Groups.class, EventClass.GROUP, EventType.GROUP_MEMBER_REMOVED, this.getName( ), userInfo.getName( ) ).info();
2226+ return true;
2227+ } else {
2228+ db.rollback( );
2229+ return false;
2230+ }
2231+ } catch ( EucalyptusCloudException e ) {
2232+ LOG.debug( e, e );
2233+ db.rollback( );
2234+ return false;
2235+ }
2236+ }
2237+
2238+ @Override
2239+ public String getName( ) {
2240+ return this.group.getName( );
2241+ }
2242+
2243+ @Override
2244+ public boolean equals( Object o ) {
2245+ if ( this == o ) return true;
2246+ if ( o instanceof GroupEntity ) {
2247+ GroupEntity that = ( GroupEntity ) o;
2248+ return this.group.equals( that );
2249+ } else if ( o instanceof DatabaseWrappedGroup ) {
2250+ DatabaseWrappedGroup that = ( DatabaseWrappedGroup ) o;
2251+ return this.group.equals( that.group );
2252+ } else {
2253+ return false;
2254+ }
2255+ }
2256+
2257+ @Override
2258+ public boolean addAuthorization( final Authorization authorization ) {
2259+ if ( authorization instanceof BaseAuthorization ) {
2260+ BaseAuthorization auth = ( BaseAuthorization ) authorization;
2261+ EntityWrapper<BaseAuthorization> db = EntityWrapper.get( BaseAuthorization.class );
2262+ boolean ret = false;
2263+ try {
2264+ db.add( auth );
2265+ GroupEntity g = db.recast( GroupEntity.class ).getUnique( searchGroup );
2266+ ret = g.addAuthorization( auth );
2267+ db.recast( GroupEntity.class ).merge( g );
2268+ this.group = g;
2269+ db.commit( );
2270+ EventRecord.here( Groups.class, EventClass.GROUP, EventType.GROUP_AUTH_GRANTED, this.getName( ), auth.getDisplayName( ), auth.getValue( ) ).info();
2271+ } catch ( Throwable e ) {
2272+ ret = false;
2273+ LOG.debug( e, e );
2274+ db.rollback( );
2275+ }
2276+ return ret;
2277+ } else {
2278+ throw new RuntimeException( "Authorizations must extend from BaseAuthorization, passed: " + authorization.getClass( ).getCanonicalName( ) );
2279+ }
2280+ }
2281+
2282+ @Override
2283+ public ImmutableList<Authorization> getAuthorizations( ) {
2284+ final List<Authorization> auths = Lists.newArrayList( );
2285+ try {
2286+ Transactions.one( this.searchGroup, new Tx<GroupEntity>( ) {
2287+ @Override
2288+ public void fire( GroupEntity t ) throws Throwable {
2289+ for( Authorization a : t.getAuthorizations( ) ) {
2290+ auths.add( a );
2291+ }
2292+ }
2293+ } );
2294+ } catch ( TransactionException e ) {
2295+ LOG.debug( e, e );
2296+ }
2297+ return ImmutableList.copyOf( auths );
2298+ }
2299+
2300+ @Override
2301+ public ImmutableList<User> getMembers( ) {
2302+ final List<User> users = Lists.newArrayList( );
2303+ try {
2304+ Transactions.one( this.searchGroup, new Tx<GroupEntity>( ) {
2305+ @Override
2306+ public void fire( GroupEntity t ) throws Throwable {
2307+ users.addAll( t.getMembers( ) );
2308+ }
2309+ } );
2310+ } catch ( TransactionException e ) {
2311+ LOG.debug( e, e );
2312+ }
2313+ return ImmutableList.copyOf( users );
2314+ }
2315+
2316+ @Override
2317+ public boolean removeAuthorization( final Authorization auth ) {
2318+ final FinalReturn<Boolean> ret = FinalReturn.newInstance( );
2319+ try {
2320+ Transactions.one( this.searchGroup, new Tx<GroupEntity>( ) {
2321+ @Override
2322+ public void fire( GroupEntity t ) throws Throwable {
2323+ ret.set( t.removeAuthorization( auth ) );
2324+ EventRecord.here( Groups.class, EventClass.GROUP, EventType.GROUP_AUTH_REVOKED, t.getName( ), auth.getDisplayName( ), auth.getValue( ) ).info();
2325+ }
2326+ } );
2327+ } catch ( TransactionException e ) {
2328+ LOG.debug( e, e );
2329+ }
2330+ return ret.get( );
2331+ }
2332+
2333+}
2334
2335=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedUser.java'
2336--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedUser.java 1970-01-01 00:00:00 +0000
2337+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/DatabaseWrappedUser.java 2010-08-17 20:32:41 +0000
2338@@ -0,0 +1,299 @@
2339+package com.eucalyptus.auth;
2340+
2341+import java.math.BigInteger;
2342+import java.security.cert.X509Certificate;
2343+import java.util.List;
2344+import org.apache.log4j.Logger;
2345+import com.eucalyptus.auth.crypto.Crypto;
2346+import com.eucalyptus.auth.principal.Group;
2347+import com.eucalyptus.auth.principal.User;
2348+import com.eucalyptus.util.TransactionException;
2349+import com.eucalyptus.util.Transactions;
2350+import com.eucalyptus.util.Tx;
2351+import com.google.common.base.Function;
2352+
2353+public class DatabaseWrappedUser implements User, WrappedUser {
2354+
2355+ public static Function<UserEntity, DatabaseWrappedUser> proxyFunction = new Function<UserEntity, DatabaseWrappedUser>( ) {
2356+ public DatabaseWrappedUser apply( UserEntity arg0 ) {
2357+ return new DatabaseWrappedUser( arg0 );
2358+ }
2359+ };
2360+
2361+ private static Logger LOG = Logger.getLogger( DatabaseWrappedUser.class );
2362+ private final UserEntity searchUser;
2363+ private UserEntity user;
2364+
2365+ public DatabaseWrappedUser( UserEntity user ) {
2366+ this.searchUser = new UserEntity( user.getName( ) );
2367+ this.user = user;
2368+ }
2369+
2370+ @Override
2371+ public void setQueryId( final String queryId ) {
2372+ try {
2373+ Transactions.one( this.searchUser, new Tx<User>( ) {
2374+ public void fire( User t ) throws Throwable {
2375+ t.setQueryId( queryId );
2376+ }
2377+ } );
2378+ } catch ( TransactionException e1 ) {
2379+ LOG.debug( e1, e1 );
2380+ }
2381+ }
2382+
2383+ @Override
2384+ public void setSecretKey( final String secretKey ) {
2385+ try {
2386+ Transactions.one( this.searchUser, new Tx<User>( ) {
2387+ public void fire( User t ) throws Throwable {
2388+ t.setSecretKey( secretKey );
2389+ }
2390+ } );
2391+ } catch ( TransactionException e1 ) {
2392+ LOG.debug( e1, e1 );
2393+ }
2394+ }
2395+
2396+ @Override
2397+ public void revokeSecretKey( ) {
2398+ try {
2399+ Transactions.one( this.searchUser, new Tx<User>( ) {
2400+ public void fire( User t ) throws Throwable {
2401+ t.revokeSecretKey( );
2402+ }
2403+ } );
2404+ } catch ( TransactionException e1 ) {
2405+ LOG.debug( e1, e1 );
2406+ }
2407+ }
2408+
2409+ @Override
2410+ public void revokeX509Certificate( ) {
2411+ try {
2412+ Transactions.one( this.searchUser, new Tx<User>( ) {
2413+ public void fire( User t ) throws Throwable {
2414+ t.revokeX509Certificate( );
2415+ }
2416+ } );
2417+ } catch ( TransactionException e1 ) {
2418+ LOG.debug( e1, e1 );
2419+ }
2420+ }
2421+
2422+ /**
2423+ * @see com.eucalyptus.auth.principal.User#setAdministrator(java.lang.Boolean)
2424+ * @param admin
2425+ */
2426+ @Override
2427+ public void setAdministrator( final Boolean admin ) {
2428+ try {
2429+ Transactions.one( this.searchUser, new Tx<User>( ) {
2430+ public void fire( User t ) throws Throwable {
2431+ t.setAdministrator( admin );
2432+ }
2433+ } );
2434+ } catch ( TransactionException e1 ) {
2435+ LOG.debug( e1, e1 );
2436+ }
2437+ }
2438+
2439+ /**
2440+ * @see com.eucalyptus.auth.principal.User#setEnabled(java.lang.Boolean)
2441+ * @param enabled
2442+ */
2443+ @Override
2444+ public void setEnabled( final Boolean enabled ) {
2445+ try {
2446+ Transactions.one( this.searchUser, new Tx<User>( ) {
2447+ public void fire( User t ) throws Throwable {
2448+ t.setEnabled( enabled );
2449+ }
2450+ } );
2451+ } catch ( TransactionException e1 ) {
2452+ LOG.debug( e1, e1 );
2453+ }
2454+ }
2455+
2456+ /**
2457+ * @see com.eucalyptus.auth.principal.User#setX509Certificate(java.security.cert.X509Certificate)
2458+ * @param cert
2459+ */
2460+ @Override
2461+ public void setX509Certificate( final X509Certificate cert ) {
2462+ try {
2463+ Transactions.one( this.searchUser, new Tx<User>( ) {
2464+ public void fire( User t ) throws Throwable {
2465+ t.setX509Certificate( cert );
2466+ }
2467+ } );
2468+ } catch ( TransactionException e1 ) {
2469+ LOG.debug( e1, e1 );
2470+ }
2471+ }
2472+
2473+ /**
2474+ * @see com.eucalyptus.auth.principal.User#getIsAdministrator()
2475+ * @return
2476+ */
2477+ @Override
2478+ public Boolean isAdministrator( ) {
2479+ return this.user.isAdministrator( );
2480+ }
2481+
2482+ /**
2483+ * Just to make CompositeHelper.goovy happy.
2484+ *
2485+ * @return
2486+ */
2487+ public Boolean getAdministrator( ) {
2488+ return this.user.isAdministrator( );
2489+ }
2490+
2491+ /**
2492+ * @see com.eucalyptus.auth.principal.User#getIsEnabled()
2493+ * @return
2494+ */
2495+ @Override
2496+ public Boolean isEnabled( ) {
2497+ return this.user.isEnabled( );
2498+ }
2499+
2500+ /**
2501+ * Just to make CompositeHelper.goovy happy.
2502+ *
2503+ * @return
2504+ */
2505+ public Boolean getEnabled( ) {
2506+ return this.user.isEnabled( );
2507+ }
2508+
2509+ /**
2510+ * @see com.eucalyptus.auth.principal.User#getName()
2511+ * @return
2512+ */
2513+ @Override
2514+ public String getName( ) {
2515+ return this.user.getName( );
2516+ }
2517+
2518+ /**
2519+ * @see com.eucalyptus.auth.principal.User#getQueryId()
2520+ * @return
2521+ */
2522+ @Override
2523+ public String getQueryId( ) {
2524+ return this.user.getQueryId( );
2525+ }
2526+
2527+ /**
2528+ * @see com.eucalyptus.auth.principal.User#getSecretKey()
2529+ * @return
2530+ */
2531+ @Override
2532+ public String getSecretKey( ) {
2533+ return this.user.getSecretKey( );
2534+ }
2535+
2536+ /**
2537+ * @see com.eucalyptus.auth.principal.User#getX509Certificate()
2538+ * @return
2539+ */
2540+ @Override
2541+ public X509Certificate getX509Certificate( ) {
2542+ return this.user.getX509Certificate( );
2543+ }
2544+
2545+ /**
2546+ * @see com.eucalyptus.auth.principal.credential.CredentialPrincipal#getNumber()
2547+ * @return
2548+ */
2549+ @Override
2550+ public BigInteger getNumber( ) {
2551+ return this.user.getNumber( );
2552+ }
2553+
2554+ /**
2555+ * @see com.eucalyptus.auth.principal.User#getToken()
2556+ * @return
2557+ */
2558+ @Override
2559+ public String getToken( ) {
2560+ return this.user.getToken( );
2561+ }
2562+
2563+ /**
2564+ * @see com.eucalyptus.auth.principal.credential.X509Principal#getAllX509Certificates()
2565+ * @return
2566+ */
2567+ @Override
2568+ public List<X509Certificate> getAllX509Certificates( ) {
2569+ return this.user.getAllX509Certificates( );
2570+ }
2571+
2572+ @Override
2573+ public User getDelegate( ) {
2574+ return this.user;
2575+ }
2576+
2577+ @Override
2578+ public boolean checkToken( String testToken ) {
2579+ String token = this.user.getToken( );
2580+ boolean ret = false;
2581+ if ( token != null ) {
2582+ ret = token.equals( testToken );
2583+ }
2584+ try {
2585+ Transactions.one( this.searchUser, new Tx<UserEntity>( ) {
2586+ public void fire( UserEntity t ) throws Throwable {
2587+ t.setToken( Crypto.generateSessionToken( t.getName( ) ) );
2588+ }
2589+ } );
2590+ } catch ( TransactionException e1 ) {
2591+ LOG.debug( e1, e1 );
2592+ }
2593+ return ret;
2594+ }
2595+
2596+ @Override
2597+ public String getPassword( ) {
2598+ return this.user.getPassword( );
2599+ }
2600+
2601+ @Override
2602+ public void setPassword( final String password ) {
2603+ try {
2604+ Transactions.one( this.searchUser, new Tx<User>( ) {
2605+ public void fire( User t ) throws Throwable {
2606+ t.setPassword( password );
2607+ }
2608+ } );
2609+ } catch ( TransactionException e1 ) {
2610+ LOG.debug( e1, e1 );
2611+ }
2612+ }
2613+
2614+ public void setToken( final String token ) {
2615+ try {
2616+ Transactions.one( this.searchUser, new Tx<UserEntity>( ) {
2617+ public void fire( UserEntity t ) throws Throwable {
2618+ t.setToken( token );
2619+ }
2620+ } );
2621+ } catch ( TransactionException e1 ) {
2622+ LOG.debug( e1, e1 );
2623+ }
2624+ }
2625+
2626+ public UserInfo getUserInfo( ) throws NoSuchUserException {
2627+ return UserInfoStore.getUserInfo( new UserInfo( this.user.getName( ) ) );
2628+ }
2629+
2630+ public String toString( ) {
2631+ StringBuilder sb = new StringBuilder( );
2632+ sb.append( "DatabaseWrappedUser [ " );
2633+ sb.append( "user = " ).append( user ).append( ", " );
2634+ sb.append( "]" );
2635+ return sb.toString( );
2636+ }
2637+}
2638
2639=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/Debugging.java'
2640--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/Debugging.java 1970-01-01 00:00:00 +0000
2641+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/Debugging.java 2010-08-17 20:32:41 +0000
2642@@ -0,0 +1,45 @@
2643+package com.eucalyptus.auth;
2644+
2645+import java.util.List;
2646+import org.apache.log4j.Logger;
2647+
2648+public class Debugging {
2649+
2650+ public static final boolean DEBUG = true;
2651+
2652+ public static String getListString( List list ) {
2653+ StringBuilder sb = new StringBuilder( );
2654+ for ( Object o : list ) {
2655+ sb.append( o ).append( " " );
2656+ }
2657+ return sb.toString( );
2658+ }
2659+
2660+ public static String getEucaStackTraceString( int start ) {
2661+ StringBuilder sb = ( new StringBuilder( ) ).append( " STACK || ");
2662+ StackTraceElement[] stes = ( new Throwable( ) ).getStackTrace( );
2663+ for ( int i = start; i < stes.length; i++ ) {
2664+ String steStr = stes[i].toString( );
2665+ if ( steStr.contains( "eucalyptus" ) ) {
2666+ sb.append( steStr ).append( " || " );
2667+ }
2668+ }
2669+ return sb.toString( );
2670+ }
2671+
2672+ /**
2673+ * Log with trace stack.
2674+ *
2675+ * @param logger
2676+ */
2677+ public static void logWT( Logger logger, Object... objs ) {
2678+ if ( !DEBUG ) return;
2679+ StringBuilder sb = new StringBuilder( );
2680+ for ( Object obj : objs ) {
2681+ if ( obj != null ) {
2682+ sb.append( obj.toString( ) ).append( " " );
2683+ }
2684+ }
2685+ logger.debug( sb.toString( ) + " @ " + getEucaStackTraceString( 2 ) );
2686+ }
2687+}
2688
2689=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/GroupEntity.java'
2690--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/GroupEntity.java 1970-01-01 00:00:00 +0000
2691+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/GroupEntity.java 2010-08-17 20:32:41 +0000
2692@@ -0,0 +1,254 @@
2693+/*******************************************************************************
2694+ *Copyright (c) 2009 Eucalyptus Systems, Inc.
2695+ *
2696+ * This program is free software: you can redistribute it and/or modify
2697+ * it under the terms of the GNU General Public License as published by
2698+ * the Free Software Foundation, only version 3 of the License.
2699+ *
2700+ *
2701+ * This file is distributed in the hope that it will be useful, but WITHOUT
2702+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2703+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2704+ * for more details.
2705+ *
2706+ * You should have received a copy of the GNU General Public License along
2707+ * with this program. If not, see <http://www.gnu.org/licenses/>.
2708+ *
2709+ * Please contact Eucalyptus Systems, Inc., 130 Castilian
2710+ * Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
2711+ * if you need additional information or have any questions.
2712+ *
2713+ * This file may incorporate work covered under the following copyright and
2714+ * permission notice:
2715+ *
2716+ * Software License Agreement (BSD License)
2717+ *
2718+ * Copyright (c) 2008, Regents of the University of California
2719+ * All rights reserved.
2720+ *
2721+ * Redistribution and use of this software in source and binary forms, with
2722+ * or without modification, are permitted provided that the following
2723+ * conditions are met:
2724+ *
2725+ * Redistributions of source code must retain the above copyright notice,
2726+ * this list of conditions and the following disclaimer.
2727+ *
2728+ * Redistributions in binary form must reproduce the above copyright
2729+ * notice, this list of conditions and the following disclaimer in the
2730+ * documentation and/or other materials provided with the distribution.
2731+ *
2732+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
2733+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2734+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
2735+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
2736+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2737+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2738+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
2739+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
2740+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
2741+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2742+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. userList OF
2743+ * THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
2744+ * LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
2745+ * SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
2746+ * IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
2747+ * BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
2748+ * THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
2749+ * OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
2750+ * WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
2751+ * ANY SUCH LICENSES OR RIGHTS.
2752+ *******************************************************************************/
2753+/*
2754+ * Author: chris grzegorczyk <grze@eucalyptus.com>
2755+ */
2756+package com.eucalyptus.auth;
2757+
2758+import java.security.Principal;
2759+import java.util.ArrayList;
2760+import java.util.Enumeration;
2761+import java.util.List;
2762+import javax.persistence.CascadeType;
2763+import javax.persistence.Column;
2764+import javax.persistence.Entity;
2765+import javax.persistence.FetchType;
2766+import javax.persistence.JoinColumn;
2767+import javax.persistence.JoinTable;
2768+import javax.persistence.ManyToMany;
2769+import javax.persistence.OneToMany;
2770+import javax.persistence.PersistenceContext;
2771+import javax.persistence.Table;
2772+import javax.persistence.Transient;
2773+import org.apache.log4j.Logger;
2774+import org.hibernate.annotations.Cache;
2775+import org.hibernate.annotations.CacheConcurrencyStrategy;
2776+import com.eucalyptus.auth.principal.Authorization;
2777+import com.eucalyptus.auth.principal.BaseAuthorization;
2778+import com.eucalyptus.auth.principal.Group;
2779+import com.eucalyptus.auth.principal.User;
2780+import com.eucalyptus.entities.AbstractPersistent;
2781+import com.google.common.collect.ImmutableList;
2782+import com.google.common.collect.Iterators;
2783+import edu.emory.mathcs.backport.java.util.Collections;
2784+
2785+@Entity
2786+@PersistenceContext( name = "eucalyptus_auth" )
2787+@Table( name = "auth_groups" )
2788+@Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
2789+public class GroupEntity extends AbstractPersistent implements Group {
2790+ @Transient
2791+ private static Logger LOG = Logger.getLogger( GroupEntity.class );
2792+ @Column( name = "auth_group_name", unique = true )
2793+ String name;
2794+
2795+ @ManyToMany( cascade = CascadeType.PERSIST )
2796+ @JoinTable( name = "auth_group_has_userList", joinColumns = { @JoinColumn( name = "auth_group_id" ) }, inverseJoinColumns = @JoinColumn( name = "auth_user_id" ) )
2797+ @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
2798+ List<UserEntity> userList = new ArrayList<UserEntity>( );
2799+
2800+ @OneToMany( cascade = CascadeType.ALL )
2801+ @JoinTable( name = "auth_group_has_authorization", joinColumns = { @JoinColumn( name = "auth_group_id" ) }, inverseJoinColumns = @JoinColumn( name = "auth_authorization_id" ) )
2802+ @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
2803+ List<BaseAuthorization> authList = new ArrayList<BaseAuthorization>( );
2804+
2805+ @Transient
2806+ String timestamp;
2807+
2808+ public GroupEntity( ) {}
2809+
2810+ public GroupEntity( final String name ) {
2811+ this.name = name;
2812+ }
2813+
2814+ public GroupEntity( final String name, final String timestamp ) {
2815+ this.name = name;
2816+ this.timestamp = timestamp;
2817+ }
2818+
2819+ public String getName( ) {
2820+ return name;
2821+ }
2822+
2823+ public void setName( final String name ) {
2824+ this.name = name;
2825+ }
2826+
2827+ public List<BaseAuthorization> getAuthList( ) {
2828+ return this.authList;
2829+ }
2830+
2831+ public void setAuthList( List<BaseAuthorization> authorizations ) {
2832+ this.authList = authorizations;
2833+ }
2834+
2835+ public List<UserEntity> getUserList( ) {
2836+ return userList;
2837+ }
2838+
2839+ public void setUserList( final List<UserEntity> userList ) {
2840+ this.userList = userList;
2841+ }
2842+
2843+ public String getTimestamp( ) {
2844+ return timestamp;
2845+ }
2846+
2847+ public void setTimestamp( String timestamp ) {
2848+ this.timestamp = timestamp;
2849+ }
2850+
2851+ @Override
2852+ public boolean equals( final Object o ) {
2853+ if ( this == o ) return true;
2854+ if ( o == null || getClass( ) != o.getClass( ) ) return false;
2855+
2856+ GroupEntity that = ( GroupEntity ) o;
2857+
2858+ if ( !name.equals( that.name ) ) return false;
2859+
2860+ return true;
2861+ }
2862+
2863+ @Override
2864+ public int hashCode( ) {
2865+ return name.hashCode( );
2866+ }
2867+
2868+ @Override
2869+ public boolean addAuthorization( Authorization auth ) {
2870+ if ( auth instanceof BaseAuthorization ) {
2871+ return this.authList.add( ( BaseAuthorization ) auth );
2872+ } else {
2873+ throw new RuntimeException( "EID: Authorizations must extend BaseAuthorization." );
2874+ }
2875+ }
2876+
2877+ @Override
2878+ public boolean removeAuthorization( Authorization auth ) {
2879+ if ( auth instanceof BaseAuthorization ) {
2880+ return this.authList.remove( ( BaseAuthorization ) auth );
2881+ } else {
2882+ throw new RuntimeException( "EID: Authorizations must extend BaseAuthorization." );
2883+ }
2884+ }
2885+
2886+ @Override
2887+ public boolean addMember( Principal user ) {
2888+ if ( user instanceof UserEntity ) {
2889+ return this.userList.add( ( UserEntity ) user );
2890+ } else {
2891+ LOG.debug( "EID: GroupEntity only supports users of type UserEntity" );
2892+ return false;
2893+ }
2894+ }
2895+
2896+ @Override
2897+ public boolean isMember( Principal member ) {
2898+ if ( member instanceof UserEntity ) {
2899+ return this.userList.contains( ( UserEntity ) member );
2900+ } else {
2901+ LOG.debug( "EID: GroupEntity only supports users of type UserEntity" );
2902+ return false;
2903+ }
2904+ }
2905+
2906+ @Override
2907+ public Enumeration<? extends Principal> members( ) {
2908+ return Iterators.asEnumeration( this.userList.iterator( ) );
2909+ }
2910+
2911+ @Override
2912+ public boolean removeMember( Principal user ) {
2913+ if ( user instanceof UserEntity ) {
2914+ return this.userList.remove( ( UserEntity ) user );
2915+ } else {
2916+ LOG.debug( "EID: GroupEntity only supports users of type UserEntity" );
2917+ return false;
2918+ }
2919+ }
2920+
2921+ @Override
2922+ public ImmutableList<Authorization> getAuthorizations( ) {
2923+ return ImmutableList.copyOf( ( List ) this.authList );
2924+ }
2925+
2926+ @Override
2927+ public ImmutableList<User> getMembers( ) {
2928+ return ImmutableList.copyOf( ( List ) this.userList );
2929+ }
2930+
2931+ public String toString( ) {
2932+ StringBuilder sb = new StringBuilder( );
2933+ sb.append( "GroupEntity [ " );
2934+ sb.append( "name = " ).append( name == null ? "null" : name ).append( ", " );
2935+ sb.append( "userList = " );
2936+ for ( UserEntity u : userList ) {
2937+ sb.append( u.getName( ) ).append( ", " );
2938+ }
2939+ sb.append( "authList = " );
2940+ for ( BaseAuthorization auth : authList ) {
2941+ sb.append( auth.getValue( ) ).append( ", " );
2942+ }
2943+ sb.append( "]" );
2944+ return sb.toString( );
2945+ }
2946+}
2947
2948=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java'
2949--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java 1970-01-01 00:00:00 +0000
2950+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java 2010-08-17 20:32:41 +0000
2951@@ -0,0 +1,119 @@
2952+/*******************************************************************************
2953+*Copyright (c) 2009 Eucalyptus Systems, Inc.
2954+*
2955+* This program is free software: you can redistribute it and/or modify
2956+* it under the terms of the GNU General Public License as published by
2957+* the Free Software Foundation, only version 3 of the License.
2958+*
2959+*
2960+* This file is distributed in the hope that it will be useful, but WITHOUT
2961+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2962+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2963+* for more details.
2964+*
2965+* You should have received a copy of the GNU General Public License along
2966+* with this program. If not, see <http://www.gnu.org/licenses/>.
2967+*
2968+* Please contact Eucalyptus Systems, Inc., 130 Castilian
2969+* Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
2970+* if you need additional information or have any questions.
2971+*
2972+* This file may incorporate work covered under the following copyright and
2973+* permission notice:
2974+*
2975+* Software License Agreement (BSD License)
2976+*
2977+* Copyright (c) 2008, Regents of the University of California
2978+* All rights reserved.
2979+*
2980+* Redistribution and use of this software in source and binary forms, with
2981+* or without modification, are permitted provided that the following
2982+* conditions are met:
2983+*
2984+* Redistributions of source code must retain the above copyright notice,
2985+* this list of conditions and the following disclaimer.
2986+*
2987+* Redistributions in binary form must reproduce the above copyright
2988+* notice, this list of conditions and the following disclaimer in the
2989+* documentation and/or other materials provided with the distribution.
2990+*
2991+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
2992+* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2993+* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
2994+* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
2995+* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2996+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2997+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
2998+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
2999+* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
3000+* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3001+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
3002+* THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
3003+* LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
3004+* SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
3005+* IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
3006+* BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
3007+* THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
3008+* OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
3009+* WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
3010+* ANY SUCH LICENSES OR RIGHTS.
3011+*******************************************************************************/
3012+/*
3013+ * Author: chris grzegorczyk <grze@eucalyptus.com>
3014+ */
3015+package com.eucalyptus.auth;
3016+
3017+import org.apache.log4j.Logger;
3018+import com.eucalyptus.auth.crypto.Hmacs;
3019+import com.eucalyptus.auth.util.EucaKeyStore;
3020+import com.eucalyptus.bootstrap.Bootstrap;
3021+import com.eucalyptus.bootstrap.Bootstrapper;
3022+import com.eucalyptus.bootstrap.Component;
3023+import com.eucalyptus.bootstrap.DependsRemote;
3024+import com.eucalyptus.bootstrap.Provides;
3025+import com.eucalyptus.bootstrap.RunDuring;
3026+import com.eucalyptus.bootstrap.Bootstrap.Stage;
3027+
3028+@Provides(Component.bootstrap)
3029+@RunDuring(Bootstrap.Stage.SystemCredentialsInit)
3030+@DependsRemote(Component.eucalyptus)
3031+public class RemoteComponentCredentialBootstrapper extends Bootstrapper {
3032+ private static Logger LOG = Logger.getLogger( RemoteComponentCredentialBootstrapper.class );
3033+
3034+ @Override
3035+ public boolean load( Stage current ) throws Exception {
3036+ while ( !this.checkAllKeys( ) ) {
3037+ LOG.fatal( "Waiting for system credentials before proceeding with startup..." );
3038+ try {
3039+ Thread.sleep( 2000 );
3040+ } catch ( Exception e ) {
3041+ }
3042+ }
3043+ for ( Component c : Component.values( ) ) {
3044+ LOG.info( "Initializing system credentials for " + c.name( ) );
3045+ SystemCredentialProvider.init( c );
3046+ }
3047+ return true;
3048+ }
3049+
3050+ private boolean checkAllKeys( ) {
3051+ for ( Component c : Component.values( ) ) {
3052+ if ( !Component.any.equals( c ) && c.isEnabled( ) ) {
3053+ try {
3054+ if( !EucaKeyStore.getCleanInstance( ).containsEntry( c.name( ) ) ) {
3055+ return false;
3056+ }
3057+ } catch ( Exception e ) {
3058+ return false;
3059+ }
3060+ }
3061+ }
3062+ return true;
3063+ }
3064+
3065+ @Override
3066+ public boolean start( ) throws Exception {
3067+ return true;
3068+ }
3069+
3070+}
3071
3072=== removed file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java'
3073--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java 2009-08-31 21:53:11 +0000
3074+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/RemoteComponentCredentialBootstrapper.java 1970-01-01 00:00:00 +0000
3075@@ -1,120 +0,0 @@
3076-/*******************************************************************************
3077-*Copyright (c) 2009 Eucalyptus Systems, Inc.
3078-*
3079-* This program is free software: you can redistribute it and/or modify
3080-* it under the terms of the GNU General Public License as published by
3081-* the Free Software Foundation, only version 3 of the License.
3082-*
3083-*
3084-* This file is distributed in the hope that it will be useful, but WITHOUT
3085-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3086-* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3087-* for more details.
3088-*
3089-* You should have received a copy of the GNU General Public License along
3090-* with this program. If not, see <http://www.gnu.org/licenses/>.
3091-*
3092-* Please contact Eucalyptus Systems, Inc., 130 Castilian
3093-* Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
3094-* if you need additional information or have any questions.
3095-*
3096-* This file may incorporate work covered under the following copyright and
3097-* permission notice:
3098-*
3099-* Software License Agreement (BSD License)
3100-*
3101-* Copyright (c) 2008, Regents of the University of California
3102-* All rights reserved.
3103-*
3104-* Redistribution and use of this software in source and binary forms, with
3105-* or without modification, are permitted provided that the following
3106-* conditions are met:
3107-*
3108-* Redistributions of source code must retain the above copyright notice,
3109-* this list of conditions and the following disclaimer.
3110-*
3111-* Redistributions in binary form must reproduce the above copyright
3112-* notice, this list of conditions and the following disclaimer in the
3113-* documentation and/or other materials provided with the distribution.
3114-*
3115-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
3116-* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
3117-* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
3118-* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
3119-* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
3120-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
3121-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
3122-* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
3123-* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
3124-* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3125-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
3126-* THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
3127-* LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
3128-* SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
3129-* IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
3130-* BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
3131-* THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
3132-* OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
3133-* WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
3134-* ANY SUCH LICENSES OR RIGHTS.
3135-*******************************************************************************/
3136-/*
3137- * Author: chris grzegorczyk <grze@eucalyptus.com>
3138- */
3139-package com.eucalyptus.auth;
3140-
3141-import org.apache.log4j.Logger;
3142-
3143-import com.eucalyptus.auth.util.EucaKeyStore;
3144-import com.eucalyptus.auth.util.Hashes;
3145-import com.eucalyptus.bootstrap.Bootstrapper;
3146-import com.eucalyptus.bootstrap.Component;
3147-import com.eucalyptus.bootstrap.Depends;
3148-import com.eucalyptus.bootstrap.Provides;
3149-import com.eucalyptus.bootstrap.Resource;
3150-
3151-@Provides( resource = Resource.SystemCredentials )
3152-@Depends( remote = Component.eucalyptus )
3153-public class RemoteComponentCredentialBootstrapper extends Bootstrapper {
3154- private static Logger LOG = Logger.getLogger( RemoteComponentCredentialBootstrapper.class );
3155-
3156- @Override
3157- public boolean load( Resource current ) throws Exception {
3158- Credentials.init( );
3159- while ( !this.checkAllKeys( ) ) {
3160- LOG.fatal( "Waiting for system credentials before proceeding with startup..." );
3161- try {
3162- Thread.sleep( 2000 );
3163- } catch ( Exception e ) {
3164- }
3165- }
3166- for ( Component c : Component.values( ) ) {
3167- LOG.info( "Initializing system credentials for " + c.name( ) );
3168- SystemCredentialProvider.init( c );
3169- c.markHasKeys( );
3170- }
3171- System.setProperty( "euca.db.password", Hashes.getHexSignature( ) );
3172- return true;
3173- }
3174-
3175- private boolean checkAllKeys( ) {
3176- for ( Component c : Component.values( ) ) {
3177- if ( c.isEnabled( ) ) {
3178- try {
3179- if( !EucaKeyStore.getCleanInstance( ).containsEntry( c.name( ) ) ) {
3180- return false;
3181- }
3182- } catch ( Exception e ) {
3183- return false;
3184- }
3185- }
3186- }
3187- return true;
3188- }
3189-
3190- @Override
3191- public boolean start( ) throws Exception {
3192- return true;
3193- }
3194-
3195-}
3196
3197=== modified file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/SystemCredentialProvider.java'
3198--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/SystemCredentialProvider.java 2009-10-13 09:22:27 +0000
3199+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/SystemCredentialProvider.java 2010-08-17 20:32:41 +0000
3200@@ -68,20 +68,22 @@
3201 import java.security.cert.X509Certificate;
3202 import java.util.concurrent.ConcurrentHashMap;
3203 import java.util.concurrent.ConcurrentMap;
3204-
3205 import org.apache.log4j.Logger;
3206-
3207+import com.eucalyptus.auth.crypto.Certs;
3208 import com.eucalyptus.auth.util.EucaKeyStore;
3209-import com.eucalyptus.auth.util.KeyTool;
3210+import com.eucalyptus.auth.util.PEMFiles;
3211+import com.eucalyptus.bootstrap.Bootstrap;
3212 import com.eucalyptus.bootstrap.Bootstrapper;
3213 import com.eucalyptus.bootstrap.Component;
3214-import com.eucalyptus.bootstrap.Depends;
3215+import com.eucalyptus.bootstrap.DependsLocal;
3216 import com.eucalyptus.bootstrap.Provides;
3217-import com.eucalyptus.bootstrap.Resource;
3218-import com.eucalyptus.util.EucalyptusProperties;
3219+import com.eucalyptus.bootstrap.RunDuring;
3220+import com.eucalyptus.bootstrap.Bootstrap.Stage;
3221+import com.eucalyptus.system.SubDirectory;
3222
3223-@Provides( resource = Resource.SystemCredentials )
3224-@Depends( local = Component.eucalyptus )
3225+@Provides( Component.any )
3226+@RunDuring( Bootstrap.Stage.SystemCredentialsInit )
3227+@DependsLocal( Component.eucalyptus )
3228 public class SystemCredentialProvider extends Bootstrapper {
3229 private static Logger LOG = Logger.getLogger( SystemCredentialProvider.class );
3230 private static ConcurrentMap<Component, X509Certificate> certs = new ConcurrentHashMap<Component, X509Certificate>( );
3231@@ -153,10 +155,13 @@
3232 }
3233
3234 private void createSystemCredentialProviderKey( Component name ) throws Exception {
3235- KeyTool keyTool = new KeyTool( );
3236 try {
3237- KeyPair sysKp = keyTool.getKeyPair( );
3238- X509Certificate sysX509 = keyTool.getCertificate( sysKp, EucalyptusProperties.getDName( name.name( ) ) );
3239+ KeyPair sysKp = Certs.generateKeyPair( );
3240+ X509Certificate sysX509 = Certs.generateServiceCertificate( sysKp, name.name( ) );
3241+ if( Component.eucalyptus.equals( name ) ) {
3242+ PEMFiles.write( SubDirectory.KEYS.toString( ) + "/cloud-cert.pem", sysX509 );
3243+ PEMFiles.write( SubDirectory.KEYS.toString( ) + "/cloud-pk.pem", sysKp.getPrivate( ) );
3244+ }
3245 SystemCredentialProvider.certs.put( name, sysX509 );
3246 SystemCredentialProvider.keypairs.put( name, sysKp );
3247 // TODO: might need separate keystore for euca/hsqldb/ssl/jetty/etc.
3248@@ -171,19 +176,24 @@
3249 }
3250
3251 @Override
3252- public boolean load( Resource current ) throws Exception {
3253+ public boolean load( Stage current ) throws Exception {
3254 try {
3255- Credentials.init( );
3256+ if ( !SystemCredentialProvider.check( Component.eucalyptus ) ) {
3257+ SystemCredentialProvider.init( Component.eucalyptus );
3258+ }
3259 for ( Component c : Component.values( ) ) {
3260 try {
3261- if ( !SystemCredentialProvider.check( c ) ) SystemCredentialProvider.init( c );
3262+ if ( !SystemCredentialProvider.check( c ) ) {
3263+ SystemCredentialProvider.init( c );
3264+ }
3265 } catch ( Exception e ) {
3266- LOG.error( e );
3267+ LOG.error( e, e );
3268 return false;
3269 }
3270 }
3271 } catch ( Exception e ) {
3272 LOG.error( e, e );
3273+ return false;
3274 }
3275 return true;
3276 }
3277
3278=== removed file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/UserExistsException.java'
3279--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/UserExistsException.java 2009-08-27 18:38:18 +0000
3280+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/UserExistsException.java 1970-01-01 00:00:00 +0000
3281@@ -1,84 +0,0 @@
3282-/*******************************************************************************
3283-*Copyright (c) 2009 Eucalyptus Systems, Inc.
3284-*
3285-* This program is free software: you can redistribute it and/or modify
3286-* it under the terms of the GNU General Public License as published by
3287-* the Free Software Foundation, only version 3 of the License.
3288-*
3289-*
3290-* This file is distributed in the hope that it will be useful, but WITHOUT
3291-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3292-* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3293-* for more details.
3294-*
3295-* You should have received a copy of the GNU General Public License along
3296-* with this program. If not, see <http://www.gnu.org/licenses/>.
3297-*
3298-* Please contact Eucalyptus Systems, Inc., 130 Castilian
3299-* Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
3300-* if you need additional information or have any questions.
3301-*
3302-* This file may incorporate work covered under the following copyright and
3303-* permission notice:
3304-*
3305-* Software License Agreement (BSD License)
3306-*
3307-* Copyright (c) 2008, Regents of the University of California
3308-* All rights reserved.
3309-*
3310-* Redistribution and use of this software in source and binary forms, with
3311-* or without modification, are permitted provided that the following
3312-* conditions are met:
3313-*
3314-* Redistributions of source code must retain the above copyright notice,
3315-* this list of conditions and the following disclaimer.
3316-*
3317-* Redistributions in binary form must reproduce the above copyright
3318-* notice, this list of conditions and the following disclaimer in the
3319-* documentation and/or other materials provided with the distribution.
3320-*
3321-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
3322-* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
3323-* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
3324-* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
3325-* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
3326-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
3327-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
3328-* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
3329-* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
3330-* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3331-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
3332-* THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
3333-* LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
3334-* SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
3335-* IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
3336-* BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
3337-* THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
3338-* OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
3339-* WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
3340-* ANY SUCH LICENSES OR RIGHTS.
3341-*******************************************************************************/
3342-/*
3343- * Author: chris grzegorczyk <grze@eucalyptus.com>
3344- */
3345-package com.eucalyptus.auth;
3346-
3347-public class UserExistsException extends Exception {
3348-
3349- public UserExistsException( ) {
3350- super( );
3351- }
3352-
3353- public UserExistsException( String arg0, Throwable arg1 ) {
3354- super( arg0, arg1 );
3355- }
3356-
3357- public UserExistsException( String arg0 ) {
3358- super( arg0 );
3359- }
3360-
3361- public UserExistsException( Throwable arg0 ) {
3362- super( arg0 );
3363- }
3364-
3365-}
3366
3367=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/WrappedUser.java'
3368--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/WrappedUser.java 1970-01-01 00:00:00 +0000
3369+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/WrappedUser.java 2010-08-17 20:32:41 +0000
3370@@ -0,0 +1,8 @@
3371+package com.eucalyptus.auth;
3372+
3373+import java.util.List;
3374+import com.eucalyptus.auth.principal.Group;
3375+
3376+public interface WrappedUser {
3377+ public UserInfo getUserInfo( ) throws NoSuchUserException;
3378+}
3379\ No newline at end of file
3380
3381=== added directory 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/crypto'
3382=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/crypto/DefaultCryptoProvider.java'
3383--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/crypto/DefaultCryptoProvider.java 1970-01-01 00:00:00 +0000
3384+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/crypto/DefaultCryptoProvider.java 2010-08-17 20:32:41 +0000
3385@@ -0,0 +1,215 @@
3386+package com.eucalyptus.auth.crypto;
3387+
3388+import java.math.BigInteger;
3389+import java.security.Key;
3390+import java.security.KeyPair;
3391+import java.security.KeyPairGenerator;
3392+import java.security.MessageDigest;
3393+import java.security.PrivateKey;
3394+import java.security.SecureRandom;
3395+import java.security.cert.X509Certificate;
3396+import java.util.Calendar;
3397+import java.util.zip.Adler32;
3398+import javax.security.auth.x500.X500Principal;
3399+import org.apache.log4j.Logger;
3400+import org.bouncycastle.asn1.x509.BasicConstraints;
3401+import org.bouncycastle.asn1.x509.X509Extensions;
3402+import org.bouncycastle.util.encoders.UrlBase64;
3403+import org.bouncycastle.x509.X509V3CertificateGenerator;
3404+import com.eucalyptus.auth.SystemCredentialProvider;
3405+import com.eucalyptus.auth.api.CertificateProvider;
3406+import com.eucalyptus.auth.api.CryptoProvider;
3407+import com.eucalyptus.auth.api.HmacProvider;
3408+import com.eucalyptus.bootstrap.Component;
3409+import com.eucalyptus.records.EventType;
3410+import com.eucalyptus.records.EventRecord;
3411+
3412+public class DefaultCryptoProvider implements CryptoProvider, CertificateProvider, HmacProvider {
3413+ public static String KEY_ALGORITHM = "RSA";
3414+ public static String KEY_SIGNING_ALGORITHM = "SHA512WithRSA";
3415+ public static int KEY_SIZE = 2048;
3416+ public static String PROVIDER = "BC";
3417+ private static Logger LOG = Logger.getLogger( DefaultCryptoProvider.class );
3418+
3419+ public DefaultCryptoProvider( ) {}
3420+
3421+ /**
3422+ * @see com.eucalyptus.auth.api.CryptoProvider#generateHashedPassword(java.lang.String)
3423+ */
3424+ @Override
3425+ public String generateHashedPassword( String password ) {
3426+ byte[] data = Digest.MD5.get( ).digest( password.getBytes( ) );
3427+ StringBuffer buf = new StringBuffer( );
3428+ for ( int i = 0; i < data.length; i++ ) {
3429+ int halfbyte = ( data[i] >>> 4 ) & 0x0F;
3430+ int two_halfs = 0;
3431+ do {
3432+ if ( ( 0 <= halfbyte ) && ( halfbyte <= 9 ) )
3433+ buf.append( ( char ) ( '0' + halfbyte ) );
3434+ else buf.append( ( char ) ( 'a' + ( halfbyte - 10 ) ) );
3435+ halfbyte = data[i] & 0x0F;
3436+ } while ( two_halfs++ < 1 );
3437+ }
3438+ return buf.toString( ).toLowerCase( );
3439+ }
3440+
3441+ /**
3442+ * @see com.eucalyptus.auth.api.CryptoProvider#generateQueryId(java.lang.String)
3443+ */
3444+ @Override
3445+ public String generateQueryId( String userName ) {
3446+ return this.getDigestBase64( userName, Digest.SHA224, false ).replaceAll( "\\p{Punct}", "" );
3447+ }
3448+
3449+ /**
3450+ * @see com.eucalyptus.auth.api.CryptoProvider#generateSecretKey(java.lang.String)
3451+ */
3452+ @Override
3453+ public String generateSecretKey( String userName ) {
3454+ return this.getDigestBase64( userName, Digest.SHA224, true ).replaceAll( "\\p{Punct}", "" );
3455+ }
3456+
3457+ /**
3458+ * @see com.eucalyptus.auth.api.CryptoProvider#generateCertificateCode(java.lang.String)
3459+ */
3460+ @Override
3461+ public String generateCertificateCode( String userName ) {
3462+ return this.getDigestBase64( userName, Digest.SHA512, true ).replaceAll( "\\p{Punct}", "" );
3463+ }
3464+
3465+ /**
3466+ * @see com.eucalyptus.auth.api.CryptoProvider#generateConfirmationCode(java.lang.String)
3467+ */
3468+ @Override
3469+ public String generateConfirmationCode( String userName ) {
3470+ return this.getDigestBase64( userName, Digest.SHA512, true ).replaceAll( "\\p{Punct}", "" );
3471+ }
3472+
3473+ /**
3474+ * @see com.eucalyptus.auth.api.CryptoProvider#generateSessionToken(java.lang.String)
3475+ */
3476+ @Override
3477+ public String generateSessionToken( String userName ) {
3478+ return this.getDigestBase64( userName, Digest.SHA512, true ).replaceAll( "\\p{Punct}", "" );
3479+ }
3480+
3481+ /**
3482+ * @see com.eucalyptus.auth.api.CryptoProvider#getDigestBase64(java.lang.String, com.eucalyptus.auth.crypto.Digest, boolean)
3483+ */
3484+ @Override
3485+ public String getDigestBase64( String input, Digest hash, boolean randomize ) {
3486+ byte[] inputBytes = input.getBytes( );
3487+ byte[] digestBytes = null;
3488+ MessageDigest digest = hash.get( );
3489+ digest.update( inputBytes );
3490+ if ( randomize ) {
3491+ SecureRandom random = new SecureRandom( );
3492+//TODO: RELEASE: random.setSeed( System.currentTimeMillis( ) );
3493+ byte[] randomBytes = random.generateSeed( inputBytes.length );
3494+ digest.update( randomBytes );
3495+ }
3496+ digestBytes = digest.digest( );
3497+ return new String( UrlBase64.encode( digestBytes ) );
3498+ }
3499+
3500+ public X509Certificate generateServiceCertificate( KeyPair keys, String serviceName ) {
3501+ X500Principal x500 = new X500Principal( String.format( "CN=%s, OU=Eucalyptus, O=Cloud, C=US", serviceName ) );
3502+ SystemCredentialProvider sys = SystemCredentialProvider.getCredentialProvider( Component.eucalyptus );
3503+// if( sys.getCertificate( ) != null ) {
3504+// return generateCertificate( keys, x500, sys.getCertificate( ).getSubjectX500Principal( ), sys.getPrivateKey( ) );
3505+// } else {
3506+ return generateCertificate( keys, x500, x500, null );
3507+// }
3508+ }
3509+
3510+ public X509Certificate generateCertificate( KeyPair keys, String userName ) {
3511+ return generateCertificate( keys, new X500Principal( String.format( "CN=%s, OU=Eucalyptus, O=User, C=US", userName ) ) );
3512+ }
3513+
3514+ public X509Certificate generateCertificate( KeyPair keys, X500Principal dn ) {
3515+ return generateCertificate( keys, dn, dn, null );
3516+ }
3517+
3518+ @Override
3519+ public X509Certificate generateCertificate( KeyPair keys, X500Principal subjectDn, X500Principal signer, PrivateKey signingKey ) {
3520+ signer = ( signingKey == null ? signer : subjectDn );
3521+ signingKey = ( signingKey == null ? keys.getPrivate( ) : signingKey );
3522+ EventRecord.caller( DefaultCryptoProvider.class, EventType.GENERATE_CERTIFICATE, signer.toString( ), subjectDn.toString( ) ).info();
3523+ X509V3CertificateGenerator certGen = new X509V3CertificateGenerator( );
3524+ certGen.setSerialNumber( BigInteger.valueOf( System.nanoTime( ) ).shiftLeft( 4 ).add( BigInteger.valueOf( ( long ) Math.rint( Math.random( ) * 1000 ) ) ) );
3525+ certGen.setIssuerDN( signer );
3526+ certGen.addExtension( X509Extensions.BasicConstraints, true, new BasicConstraints( true ) );
3527+ Calendar cal = Calendar.getInstance( );
3528+ certGen.setNotBefore( cal.getTime( ) );
3529+ cal.add( Calendar.YEAR, 5 );
3530+ certGen.setNotAfter( cal.getTime( ) );
3531+ certGen.setSubjectDN( subjectDn );
3532+ certGen.setPublicKey( keys.getPublic( ) );
3533+ certGen.setSignatureAlgorithm( KEY_SIGNING_ALGORITHM );
3534+ try {
3535+ X509Certificate cert = certGen.generate( signingKey, PROVIDER );
3536+ cert.checkValidity( );
3537+ return cert;
3538+ } catch ( Exception e ) {
3539+ LOG.fatal( e, e );
3540+ System.exit( -3 );
3541+ return null;
3542+ }
3543+ }
3544+
3545+ /**
3546+ * @see com.eucalyptus.auth.api.CryptoProvider#generateKeyPair()
3547+ */
3548+ @Override
3549+ public KeyPair generateKeyPair( ) {
3550+ KeyPairGenerator keyGen = null;
3551+ try {
3552+ EventRecord.caller( DefaultCryptoProvider.class, EventType.GENERATE_KEYPAIR );
3553+ keyGen = KeyPairGenerator.getInstance( KEY_ALGORITHM, "BC" );
3554+ SecureRandom random = new SecureRandom( );
3555+ random.setSeed( System.currentTimeMillis( ) );
3556+ keyGen.initialize( KEY_SIZE, random );
3557+ KeyPair keyPair = keyGen.generateKeyPair( );
3558+ return keyPair;
3559+ } catch ( Exception e ) {
3560+ LOG.fatal( e, e );
3561+ System.exit( -3 );
3562+ return null;
3563+ }
3564+ }
3565+
3566+ @Override
3567+ public String generateSystemSignature( ) {
3568+ return this.generateSystemToken( Component.eucalyptus.name( ).getBytes( ) );
3569+ }
3570+
3571+ @Override
3572+ public String generateSystemToken( byte[] data ) {
3573+ PrivateKey pk = SystemCredentialProvider.getCredentialProvider( Component.eucalyptus ).getPrivateKey( );
3574+ return Signatures.SHA256withRSA.trySign( pk, data );
3575+ }
3576+
3577+ @Override
3578+ public String generateId( final String userId, final String prefix ) {
3579+ Adler32 hash = new Adler32( );
3580+ String key = userId + (System.currentTimeMillis( ) * Math.random( ));
3581+ hash.update( key.getBytes( ) );
3582+ String imageId = String.format( "%s-%08X", prefix, hash.getValue( ) );
3583+ return imageId;
3584+ }
3585+
3586+ @Override
3587+ public String getFingerPrint( Key privKey ) {
3588+ try {
3589+ byte[] fp = Digest.SHA1.get( ).digest( privKey.getEncoded( ) );
3590+ StringBuffer sb = new StringBuffer( );
3591+ for ( byte b : fp )
3592+ sb.append( String.format( "%02X:", b ) );
3593+ return sb.substring( 0, sb.length( ) - 1 ).toLowerCase( );
3594+ } catch ( Exception e ) {
3595+ LOG.error( e, e );
3596+ return null;
3597+ }
3598+ }
3599+
3600+}
3601
3602=== added file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/AuthBootstrapHelper.java'
3603--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/AuthBootstrapHelper.java 1970-01-01 00:00:00 +0000
3604+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/AuthBootstrapHelper.java 2010-08-17 20:32:41 +0000
3605@@ -0,0 +1,49 @@
3606+package com.eucalyptus.auth.util;
3607+
3608+import org.apache.log4j.Logger;
3609+import com.eucalyptus.auth.GroupExistsException;
3610+import com.eucalyptus.auth.Groups;
3611+import com.eucalyptus.auth.NoSuchGroupException;
3612+import com.eucalyptus.auth.NoSuchUserException;
3613+import com.eucalyptus.auth.UserExistsException;
3614+import com.eucalyptus.auth.Users;
3615+
3616+public class AuthBootstrapHelper {
3617+ private static Logger LOG = Logger.getLogger( AuthBootstrapHelper.class );
3618+
3619+ public static void ensureStandardGroupsExists( ) {
3620+ try {
3621+ Groups.ALL = Groups.lookupGroup( Groups.NAME_ALL );
3622+ } catch ( NoSuchGroupException e ) {
3623+ try {
3624+ Groups.ALL = Groups.addGroup( Groups.NAME_ALL );
3625+ } catch ( GroupExistsException e1 ) {
3626+ LOG.error( e1, e1 );
3627+ LOG.error( "Failed to add the 'all' group. The system may not be able to store group information." );
3628+ }
3629+ }
3630+ Groups.RESTRICTED_GROUPS.add( Groups.ALL );
3631+
3632+ try {
3633+ Groups.DEFAULT = Groups.lookupGroup( Groups.NAME_DEFAULT );
3634+ } catch ( NoSuchGroupException e ) {
3635+ try {
3636+ Groups.DEFAULT = Groups.addGroup( Groups.NAME_DEFAULT );
3637+ } catch ( GroupExistsException e1 ) {
3638+ LOG.error( e1, e1 );
3639+ LOG.error( "Failed to add the 'default' group. The system may not be able to store group information." );
3640+ }
3641+ }
3642+ Groups.RESTRICTED_GROUPS.add( Groups.DEFAULT );
3643+ }
3644+
3645+ public static void ensureAdminExists( ) {
3646+ try {
3647+ Users.lookupUser( "admin" );
3648+ } catch ( NoSuchUserException e ) {
3649+ try {
3650+ Users.addUser( "admin", true, true );
3651+ } catch ( UserExistsException e1 ) {} catch ( UnsupportedOperationException e1 ) {}
3652+ }
3653+ }
3654+}
3655
3656=== modified file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/EucaKeyStore.java'
3657--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/EucaKeyStore.java 2009-08-27 18:38:18 +0000
3658+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/EucaKeyStore.java 2010-08-17 20:32:41 +0000
3659@@ -66,14 +66,9 @@
3660 import java.io.File;
3661 import java.io.IOException;
3662 import java.security.GeneralSecurityException;
3663-import java.security.KeyPair;
3664-import java.security.cert.X509Certificate;
3665-
3666 import org.apache.log4j.Logger;
3667-
3668 import com.eucalyptus.bootstrap.Component;
3669-import com.eucalyptus.util.EucalyptusProperties;
3670-import com.eucalyptus.util.SubDirectory;
3671+import com.eucalyptus.system.SubDirectory;
3672
3673 public class EucaKeyStore extends AbstractKeyStore {
3674 public static String FORMAT = "pkcs12";
3675
3676=== modified file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/Hashes.java'
3677--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/Hashes.java 2009-12-29 22:31:46 +0000
3678+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/Hashes.java 2010-08-17 20:32:41 +0000
3679@@ -63,40 +63,30 @@
3680 */
3681 package com.eucalyptus.auth.util;
3682
3683+import java.io.ByteArrayInputStream;
3684+import java.io.IOException;
3685+import java.io.InputStreamReader;
3686+import java.security.SecureRandom;
3687+import java.security.cert.X509Certificate;
3688 import org.apache.log4j.Logger;
3689-import org.bouncycastle.jce.provider.BouncyCastleProvider;
3690-import org.bouncycastle.openssl.PEMWriter;
3691 import org.bouncycastle.openssl.PEMReader;
3692 import org.bouncycastle.util.encoders.UrlBase64;
3693
3694-import com.eucalyptus.auth.SystemCredentialProvider;
3695-import com.eucalyptus.bootstrap.Component;
3696-
3697-import java.io.ByteArrayOutputStream;
3698-import java.io.IOException;
3699-import java.io.OutputStreamWriter;
3700-import java.io.ByteArrayInputStream;
3701-import java.io.InputStreamReader;
3702-import java.security.*;
3703-import java.security.cert.X509Certificate;
3704-import java.util.zip.Adler32;
3705-
3706+/**
3707+ * This class is headed for the dead pool.
3708+ * @author decker
3709+ */
3710+@Deprecated
3711 public class Hashes {
3712- private static Logger LOG = Logger.getLogger( Hashes.class );
3713-
3714- public static byte[] getPemBytes( final Object o ) {
3715- PEMWriter pemOut;
3716- ByteArrayOutputStream pemByteOut = new ByteArrayOutputStream( );
3717- try {
3718- pemOut = new PEMWriter( new OutputStreamWriter( pemByteOut ) );
3719- pemOut.writeObject( o );
3720- pemOut.close( );
3721- } catch ( IOException e ) {
3722- LOG.error( e, e );//this can never happen
3723- }
3724- return pemByteOut.toByteArray( );
3725- }
3726-
3727+ public static Logger LOG = Logger.getLogger( Hashes.class );
3728+
3729+
3730+ /**
3731+ * TODO: Move this up in the dependency tree.
3732+ * @param o
3733+ * @return
3734+ */
3735+ @Deprecated
3736 public static X509Certificate getPemCert( final byte[] o ) {
3737 X509Certificate x509 = null;
3738 PEMReader in = null;
3739@@ -110,84 +100,32 @@
3740 return x509;
3741 }
3742
3743- static {
3744- Security.addProvider( new BouncyCastleProvider( ) );
3745- }
3746-
3747- public enum Digest {
3748- GOST3411,
3749- Tiger,
3750- Whirlpool,
3751- MD2,
3752- MD4,
3753- MD5,
3754- RipeMD128,
3755- RipeMD160,
3756- RipeMD256,
3757- RipeMD320,
3758- SHA1,
3759- SHA224,
3760- SHA256,
3761- SHA384,
3762- SHA512;
3763-
3764- public MessageDigest get( ) {
3765- try {
3766- return MessageDigest.getInstance( this.name( ) );
3767- } catch ( Exception e ) {
3768- LOG.error( e, e );
3769- System.exit( -4 );
3770- return null;
3771- }
3772- }
3773- }
3774-
3775- public enum Mac {
3776- HmacSHA1,
3777- HmacSHA256
3778- }
3779-
3780- public static String hashPassword( String password ) throws NoSuchAlgorithmException {
3781- byte[] fp = Digest.MD5.get( ).digest( password.getBytes( ) );
3782- return getHexString( fp );
3783- }
3784-
3785- public static String getDigestBase64( String input, Digest hash, boolean randomize ) {
3786- byte[] inputBytes = input.getBytes( );
3787- byte[] digestBytes = null;
3788- MessageDigest digest = hash.get( );
3789- digest.update( inputBytes );
3790- if ( randomize ) {
3791- SecureRandom random = new SecureRandom( );
3792- random.setSeed( System.currentTimeMillis( ) );
3793- byte[] randomBytes = random.generateSeed( inputBytes.length );
3794- digest.update( randomBytes );
3795- }
3796- digestBytes = digest.digest( );
3797- return new String( UrlBase64.encode( digestBytes ) );
3798- }
3799-
3800+ /**
3801+ * TODO: Move this up in the dependency tree.
3802+ * @param o
3803+ * @return
3804+ */
3805+ @Deprecated
3806 public static String base64encode( String input ) {
3807 return new String( UrlBase64.encode( input.getBytes( ) ) );
3808 }
3809
3810+ /**
3811+ * TODO: Move this up in the dependency tree.
3812+ * @param o
3813+ * @return
3814+ */
3815+ @Deprecated
3816 public static String base64decode( String input ) {
3817 return new String( UrlBase64.decode( input.getBytes( ) ) );
3818 }
3819
3820- public static String getFingerPrint( Key privKey ) {
3821- try {
3822- byte[] fp = Digest.SHA1.get( ).digest( privKey.getEncoded( ) );
3823- StringBuffer sb = new StringBuffer( );
3824- for ( byte b : fp )
3825- sb.append( String.format( "%02X:", b ) );
3826- return sb.substring( 0, sb.length( ) - 1 ).toLowerCase( );
3827- } catch ( Exception e ) {
3828- LOG.error( e, e );
3829- return null;
3830- }
3831- }
3832-
3833+ /**
3834+ * TODO: Move this up in the dependency tree.
3835+ * @param o
3836+ * @return
3837+ */
3838+ @Deprecated
3839 public static String getHexString( byte[] data ) {
3840 StringBuffer buf = new StringBuffer( );
3841 for ( int i = 0; i < data.length; i++ ) {
3842@@ -210,14 +148,6 @@
3843 return new String( UrlBase64.encode( randomBytes ) );
3844 }
3845
3846- public static String generateId( final String userId, final String prefix ) {
3847- Adler32 hash = new Adler32( );
3848- String key = userId + (System.currentTimeMillis( ) * Math.random( ));
3849- hash.update( key.getBytes( ) );
3850- String imageId = String.format( "%s-%08X", prefix, hash.getValue( ) );
3851- return imageId;
3852- }
3853-
3854 public static byte[] hexToBytes( String data ) {
3855 int k = 0;
3856 byte[] results = new byte[data.length( ) / 2];
3857@@ -250,18 +180,4 @@
3858 else return ( char ) ( 'a' + ( value - 10 ) );
3859 }
3860
3861- public static String getHexSignature( ) {
3862- try {
3863- Signature signer = Signature.getInstance( "SHA256withRSA" );
3864- signer.initSign( SystemCredentialProvider.getCredentialProvider( Component.eucalyptus ).getPrivateKey( ) );
3865- signer.update( "eucalyptus".getBytes( ) );
3866- byte[] sig = signer.sign( );
3867- String hexSig = bytesToHex( sig );
3868- return hexSig;
3869- } catch ( Exception e ) {
3870- LOG.fatal( e, e );
3871- System.exit( -5 );
3872- return null;
3873- }
3874- }
3875 }
3876
3877=== removed file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/KeyTool.java'
3878--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/KeyTool.java 2009-09-19 18:35:08 +0000
3879+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/KeyTool.java 1970-01-01 00:00:00 +0000
3880@@ -1,156 +0,0 @@
3881-/*******************************************************************************
3882-*Copyright (c) 2009 Eucalyptus Systems, Inc.
3883-*
3884-* This program is free software: you can redistribute it and/or modify
3885-* it under the terms of the GNU General Public License as published by
3886-* the Free Software Foundation, only version 3 of the License.
3887-*
3888-*
3889-* This file is distributed in the hope that it will be useful, but WITHOUT
3890-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3891-* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3892-* for more details.
3893-*
3894-* You should have received a copy of the GNU General Public License along
3895-* with this program. If not, see <http://www.gnu.org/licenses/>.
3896-*
3897-* Please contact Eucalyptus Systems, Inc., 130 Castilian
3898-* Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
3899-* if you need additional information or have any questions.
3900-*
3901-* This file may incorporate work covered under the following copyright and
3902-* permission notice:
3903-*
3904-* Software License Agreement (BSD License)
3905-*
3906-* Copyright (c) 2008, Regents of the University of California
3907-* All rights reserved.
3908-*
3909-* Redistribution and use of this software in source and binary forms, with
3910-* or without modification, are permitted provided that the following
3911-* conditions are met:
3912-*
3913-* Redistributions of source code must retain the above copyright notice,
3914-* this list of conditions and the following disclaimer.
3915-*
3916-* Redistributions in binary form must reproduce the above copyright
3917-* notice, this list of conditions and the following disclaimer in the
3918-* documentation and/or other materials provided with the distribution.
3919-*
3920-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
3921-* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
3922-* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
3923-* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
3924-* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
3925-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
3926-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
3927-* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
3928-* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
3929-* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3930-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
3931-* THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
3932-* LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
3933-* SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
3934-* IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
3935-* BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
3936-* THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
3937-* OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
3938-* WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
3939-* ANY SUCH LICENSES OR RIGHTS.
3940-*******************************************************************************/
3941-/*
3942- */
3943-
3944-/*
3945- * Author: chris grzegorczyk <grze@eucalyptus.com>
3946- */
3947-package com.eucalyptus.auth.util;
3948-
3949-import org.apache.log4j.Logger;
3950-import org.bouncycastle.asn1.x509.BasicConstraints;
3951-import org.bouncycastle.asn1.x509.X509Extensions;
3952-import org.bouncycastle.openssl.PEMWriter;
3953-import org.bouncycastle.x509.X509V3CertificateGenerator;
3954-
3955-import javax.security.auth.x500.X500Principal;
3956-import java.io.FileWriter;
3957-import java.io.IOException;
3958-import java.math.BigInteger;
3959-import java.security.KeyPair;
3960-import java.security.KeyPairGenerator;
3961-import java.security.SecureRandom;
3962-import java.security.cert.X509Certificate;
3963-import java.util.Calendar;
3964-
3965-public class KeyTool {
3966- private static Logger LOG = Logger.getLogger( KeyTool.class );
3967-
3968- private String keyAlgorithm;
3969- private String keySigningAlgorithm;
3970- private int keySize;
3971- public static String PROVIDER = "BC";
3972-
3973- public KeyTool( ) {
3974- this.keyAlgorithm = "RSA";
3975- this.keySigningAlgorithm = "SHA512WithRSA";
3976- this.keySize = 2048;
3977- }
3978-
3979- public KeyTool( final String keyAlgorithm, final String keySigningAlgorithm, final int keySize ) {
3980- this.keyAlgorithm = keyAlgorithm;
3981- this.keySigningAlgorithm = keySigningAlgorithm;
3982- this.keySize = keySize;
3983- }
3984-
3985- public KeyPair getKeyPair( ) throws Exception {
3986- KeyPairGenerator keyGen = null;
3987- try {
3988- LOG.debug( "Generating new keypair for thread=" + Thread.currentThread( ).getThreadGroup( ) + "." + Thread.currentThread( ).getName( ) );
3989- keyGen = KeyPairGenerator.getInstance( this.keyAlgorithm, "BC" );
3990- SecureRandom random = new SecureRandom( );
3991- random.setSeed( System.currentTimeMillis( ) );
3992- keyGen.initialize( this.keySize, random );
3993- KeyPair keyPair = keyGen.generateKeyPair( );
3994- return keyPair;
3995- } catch ( Exception e ) {
3996- LOG.debug( e, e );
3997- throw e;
3998- }
3999- }
4000-
4001- public X509Certificate getCertificate( KeyPair keyPair, String certDn ) {
4002- X509V3CertificateGenerator certGen = new X509V3CertificateGenerator( );
4003- X500Principal dnName = new X500Principal( certDn );
4004-
4005- certGen.setSerialNumber( BigInteger.valueOf( System.currentTimeMillis( ) ) );
4006- certGen.setIssuerDN( dnName );
4007- certGen.addExtension( X509Extensions.BasicConstraints, true, new BasicConstraints( true ) );
4008-
4009- Calendar cal = Calendar.getInstance( );
4010- certGen.setNotBefore( cal.getTime( ) );
4011- cal.add( Calendar.YEAR, 5 );
4012- certGen.setNotAfter( cal.getTime( ) );
4013- certGen.setSubjectDN( dnName );
4014- certGen.setPublicKey( keyPair.getPublic( ) );
4015- certGen.setSignatureAlgorithm( this.keySigningAlgorithm );
4016- try {
4017- X509Certificate cert = certGen.generate( keyPair.getPrivate( ), PROVIDER );
4018- return cert;
4019- } catch ( Exception e ) {
4020- LOG.fatal( e, e );
4021- System.exit( -3 );
4022- return null;
4023- }
4024- }
4025-
4026- public void writePem( String fileName, Object securityToken ) {
4027- PEMWriter privOut = null;
4028- try {
4029- privOut = new PEMWriter( new FileWriter( fileName ) );
4030- privOut.writeObject( securityToken );
4031- privOut.close( );
4032- } catch ( IOException e ) {
4033- LOG.error( e, e );
4034- }
4035- }
4036-}
4037
4038=== modified file 'clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/SslSetup.java'
4039--- clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/SslSetup.java 2009-11-18 02:56:08 +0000
4040+++ clc/modules/authentication/src/main/java/com/eucalyptus/auth/util/SslSetup.java 2010-08-17 20:32:41 +0000
4041@@ -24,7 +24,7 @@
4042 import org.apache.log4j.Logger;
4043
4044 import com.eucalyptus.bootstrap.Component;
4045-import com.eucalyptus.util.SubDirectory;
4046+import com.eucalyptus.system.SubDirectory;
4047 import com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager;
4048
4049 public class SslSetup {
4050@@ -42,7 +42,7 @@
4051 System.setProperty( "javax.net.ssl.keyStoreType", "PKCS12" );
4052 System.setProperty( "javax.net.ssl.trustStorePassword", Component.eucalyptus.name( ) );
4053 System.setProperty( "javax.net.ssl.keyStorePassword", Component.eucalyptus.name( ) );
4054- System.setProperty( "javax.net.debug", "none" );//set this to "ssl" for debugging.
4055+ System.setProperty( "javax.net.debug", "ssl" );//set this to "ssl" for debugging.
4056 try {
4057 serverContext = SSLContext.getInstance( "TLS" );
4058 serverContext.init( SslSetup.SimpleKeyManager.getKeyManagers( ), SslSetup.SimpleTrustManager.getTrustManagers( ), null );
4059
4060=== modified file 'clc/modules/bootstrap/Makefile'
4061--- clc/modules/bootstrap/Makefile 2010-01-24 23:57:58 +0000
4062+++ clc/modules/bootstrap/Makefile 2010-08-17 20:32:41 +0000
4063@@ -55,4 +55,4 @@
4064 distclean: clean
4065
4066 uninstall:
4067- @$(RM) -f $(sbindir)/eucalyptus-cloud
4068+ @$(RM) -f $(DESTDIR)$(sbindir)/eucalyptus-cloud
4069
4070=== modified file 'clc/modules/bootstrap/arguments.ggo'
4071--- clc/modules/bootstrap/arguments.ggo 2010-01-23 05:39:06 +0000
4072+++ clc/modules/bootstrap/arguments.ggo 2010-08-17 20:32:41 +0000
4073@@ -13,6 +13,7 @@
4074 option "exhaustive-db" - "Individually enable exhaustive connection information for database connections." flag off
4075 option "exhaustive-user" - "Individually enable exhaustive connection information for client connections." flag off
4076 option "exhaustive-cc" - "Individually enable exhaustive connection information for client connections." flag off
4077+option "exhaustive-external" - "Individually enable exhaustive logging for external libraries." flag off
4078 option "log-appender" L "Control the destination for console output." string typestr="log4j-appender-name" default="console-log" no
4079 option "out" o "Redirect standard out to file." string typestr="filename" default="&1" no
4080 option "err" e "Redirect standard error to file." string typestr="filename" default="&2" no
4081@@ -45,5 +46,6 @@
4082 option "debug-port" - "Set the port to use for the debugger." int dependon="debug" default="5005" no
4083 option "debug-suspend" - "Set the port to use for the debugger." flag dependon="debug" off
4084 option "profile" p "Launch with jprofiler enabled." flag off hidden
4085-option "profiler-home" P "Set the home for jprofiler." string typestr="jprofiler directory" dependon="profile" default="/opt/jprofiler5" no hidden
4086+option "agentlib" a "Launch with agentlib enabled." string typestr="agentlib" dependon="profile" optional hidden
4087+option "profiler-home" P "Set the home for jprofiler." string typestr="jprofiler directory" dependon="profile" default="/opt/jprofiler6" no hidden
4088
4089
4090=== modified file 'clc/modules/bootstrap/eucalyptus-bootstrap.c'
4091--- clc/modules/bootstrap/eucalyptus-bootstrap.c 2010-01-23 05:39:06 +0000
4092+++ clc/modules/bootstrap/eucalyptus-bootstrap.c 2010-08-17 20:32:41 +0000
4093@@ -65,7 +65,7 @@
4094 int java_init(euca_opts*, java_home_t*);
4095 int JVM_destroy(int);
4096
4097-static void java_fail(void) { exit(123); }
4098+static void java_fail(void) { exit(1); }
4099
4100 static java_home_t *get_java_home( char *path ) {
4101 java_home_t *data = NULL;
4102@@ -182,9 +182,9 @@
4103 while( waitpid( pid, &status, 0 ) != pid );
4104 if( WIFEXITED( status ) ) {
4105 status = WEXITSTATUS( status );
4106- __abort(1, (status == 0),"User '%s' validated", user );
4107+ __abort(0, (status != 0),"User '%s' validated", user );
4108 }
4109- __abort(0,1,"Error validating user '%s'", user );
4110+ return 1;
4111 }
4112
4113 static void controller( int sig ) {
4114@@ -252,10 +252,10 @@
4115 setpgrp( );
4116 __die(java_init( args, data ) != 1, "Failed to initialize Eucalyptus.");
4117 __die((r=(*env)->CallBooleanMethod(env,bootstrap.instance,bootstrap.init))==0,"Failed to init Eucalyptus.");
4118- __die((r=(*env)->CallBooleanMethod(env,bootstrap.instance,bootstrap.load))==0,"Failed to load Eucalyptus.");
4119 __abort(4, set_keys_ownership( GETARG( args, home ), uid, gid ) != 0,"Setting ownership of keyfile failed." );
4120 __abort(4, linuxset_user_group( GETARG( args, user ), uid, gid ) != 0,"Setting the user failed." );
4121 __abort(4, (set_caps(0)!=0), "set_caps (0) failed");
4122+ __die((r=(*env)->CallBooleanMethod(env,bootstrap.instance,bootstrap.load))==0,"Failed to load Eucalyptus.");
4123 __die((r=(*env)->CallBooleanMethod(env,bootstrap.instance,bootstrap.start))==0,"Failed to start Eucalyptus.");
4124 handle._hup = signal_set( SIGHUP, handler );
4125 handle._term = signal_set( SIGTERM, handler );
4126@@ -337,15 +337,15 @@
4127 }
4128 if( strcmp( argv[ 0 ], "eucalyptus-cloud" ) != 0 ) {
4129 char *oldpath = getenv( "LD_LIBRARY_PATH" ),*libf = java_library( args, data );
4130- char *old = argv[ 0 ],buf[ 4096 ],*tmp = NULL,*p1 = NULL,*p2 = NULL;
4131+ char *old = argv[ 0 ],buf[ 32768 ],*tmp = NULL,*p1 = NULL,*p2 = NULL;
4132 p1 = strdup( libf );
4133 tmp = strrchr( p1, '/' );
4134 if( tmp != NULL ) tmp[ 0 ] = '\0';
4135 p2 = strdup( p1 );
4136 tmp = strrchr( p2, '/' );
4137 if( tmp != NULL ) tmp[ 0 ] = '\0';
4138- if( oldpath == NULL ) snprintf( buf, 4096, "%s:%s:%s/bin/linux-x64", p1, p2, GETARG(args,profiler_home) );
4139- else snprintf( buf, 4096, "%s:%s:%s:%s/bin/linux-x64", oldpath, p1, p2, GETARG(args,profiler_home) );
4140+ if( oldpath == NULL ) snprintf( buf, 32768, "%s:%s:%s/bin/linux-x64", p1, p2, GETARG(args,profiler_home) );
4141+ else snprintf( buf, 32768, "%s:%s:%s:%s/bin/linux-x64", oldpath, p1, p2, GETARG(args,profiler_home) );
4142 tmp = strdup( buf );
4143
4144 setenv( "LD_LIBRARY_PATH", tmp, 1 );
4145@@ -357,15 +357,10 @@
4146 }
4147 __debug( "Running w/ LD_LIBRARY_PATH=%s", getenv( "LD_LIBRARY_PATH" ) );
4148 if(args->fork_flag) {
4149-//TODO: commented out for the time being to make dan happi.
4150-// if(args->debug_flag) {
4151-// __debug("Ignoring --fork because of --debug.");
4152-// } else {
4153- pid = fork( );
4154- __die(( pid == -1 ),"Cannot detach from parent process" );
4155- if( pid != 0 ) return wait_child( args, pid );
4156- setsid( );
4157-// }
4158+ pid = fork( );
4159+ __die(( pid == -1 ),"Cannot detach from parent process" );
4160+ if( pid != 0 ) return wait_child( args, pid );
4161+ setsid( );
4162 }
4163 set_output(GETARG(args,out), GETARG(args,err));
4164 while( ( pid = fork( ) ) != -1 ) {
4165@@ -376,8 +371,8 @@
4166 signal( SIGINT, controller );
4167 while( waitpid( pid, &status, 0 ) != pid );
4168 if( WIFEXITED( status ) ) {
4169+ status = WEXITSTATUS( status );
4170 __debug( "Eucalyptus exited with status: %d", status );
4171- status = WEXITSTATUS( status );
4172 if( status != 122 ) unlink( GETARG( args, pidfile ) );
4173 if( status == 123 ) {
4174 __debug( "Reloading service" );
4175@@ -447,7 +442,7 @@
4176 return libjvm_path;
4177 }
4178
4179-void java_load_bootstrapper(void) {
4180+void euca_load_bootstrapper(void) {
4181 __die((bootstrap.class_name=((*env)->NewStringUTF(env,EUCA_MAIN)))==NULL,"Cannot create string for class name.");
4182 __die((bootstrap.clazz=((*env)->FindClass(env,EUCA_MAIN)))==NULL,"Cannot find Eucalyptus bootstrapper: %s.",EUCA_MAIN);
4183 __debug("Found Eucalyptus bootstrapper: %s",EUCA_MAIN);
4184@@ -479,7 +474,7 @@
4185 }
4186
4187 char* java_library_path(euca_opts *args) {
4188-#define JAVA_PATH_LEN 16384
4189+#define JAVA_PATH_LEN 65536
4190 char lib_dir[256],etc_dir[256],script_dir[256],*jar_list=(char*)malloc(JAVA_PATH_LEN*sizeof(char));
4191 __die(( strlen(GETARG(args,home))+strlen(EUCA_LIB_DIR)>=254),"Directory path too long: %s/%s", GETARG(args,home), EUCA_LIB_DIR);
4192 snprintf(lib_dir,255,"%s%s",GETARG(args,home),EUCA_LIB_DIR);
4193@@ -539,6 +534,7 @@
4194 JVM_ARG(opt[++x],"-Deuca.log.exhaustive.db=TRACE");
4195 JVM_ARG(opt[++x],"-Deuca.log.exhaustive.user=TRACE");
4196 JVM_ARG(opt[++x],"-Deuca.log.exhaustive.cc=TRACE");
4197+ JVM_ARG(opt[++x],"-Deuca.log.exhaustive.external=TRACE");
4198 } else {
4199 if(args->exhaustive_db_flag) {
4200 JVM_ARG(opt[++x],"-Deuca.log.exhaustive.db=TRACE");
4201@@ -555,6 +551,11 @@
4202 } else {
4203 JVM_ARG(opt[++x],"-Deuca.log.exhaustive.user=FATAL");
4204 }
4205+ if(args->exhaustive_external_flag) {
4206+ JVM_ARG(opt[++x],"-Deuca.log.exhaustive.external=TRACE");
4207+ } else {
4208+ JVM_ARG(opt[++x],"-Deuca.log.exhaustive.external=FATAL");
4209+ }
4210 }
4211 JVM_ARG(opt[++x],"-Deuca.log.level=%1$s",GETARG(args,log_level));
4212 JVM_ARG(opt[++x],"-Deuca.log.appender=%1$s",GETARG(args,log_appender));
4213@@ -592,7 +593,14 @@
4214 JVM_ARG(opt[++x],"-Xdebug");
4215 JVM_ARG(opt[++x],"-Xrunjdwp:transport=dt_socket,server=y,suspend=%2$s,address=%1$d",GETARG(args,debug_port),(args->debug_suspend_flag?"y":"n"));
4216 }
4217- if(args->profile_flag) {
4218+ if(args->debug_flag||args->profile_flag) {
4219+ JVM_ARG(opt[++x],"-Dcom.sun.management.jmxremote");
4220+ JVM_ARG(opt[++x],"-XX:+HeapDumpOnOutOfMemoryError");
4221+ JVM_ARG(opt[++x],"-XX:HeapDumpPath=%s/var/log/eucalyptus/",GETARG(args,home));
4222+ }
4223+ if(args->profile_flag && args->agentlib_given ) {
4224+ JVM_ARG(opt[++x],"-agentlib:%s",GETARG(args,agentlib));
4225+ } else if(args->profile_flag) {
4226 JVM_ARG(opt[++x],"-agentlib:jprofilerti=port=8849");
4227 JVM_ARG(opt[++x],"-Xbootclasspath/a:%1$s/bin/agent.jar",GETARG(args,profiler_home));
4228 }
4229
4230=== modified file 'clc/modules/bootstrap/eucalyptus-bootstrap.h'
4231--- clc/modules/bootstrap/eucalyptus-bootstrap.h 2010-01-28 02:34:16 +0000
4232+++ clc/modules/bootstrap/eucalyptus-bootstrap.h 2010-08-17 20:32:41 +0000
4233@@ -68,9 +68,10 @@
4234 #define EUCA_LIB_DIR "/usr/share/eucalyptus"
4235 #define EUCA_ETC_DIR "/etc/eucalyptus/cloud.d"
4236 #define EUCA_SCRIPT_DIR "/etc/eucalyptus/cloud.d/scripts"
4237-
4238 #define EUCA_MAIN "com/eucalyptus/bootstrap/SystemBootstrapper"
4239 #define EUCA_RET_RELOAD 123
4240+#define java_load_bootstrapper euca_load_bootstrapper
4241+void euca_load_bootstrapper(void);
4242
4243 typedef struct {
4244 char* method_name;
4245@@ -114,12 +115,14 @@
4246 "-Djava.net.preferIPv4Stack=true",
4247 "-Djava.security.policy=%1$s/etc/eucalyptus/cloud.d/security.policy",
4248 "-Djava.library.path=%1$s/usr/lib/eucalyptus",
4249+ "-Dsun.java.command=Eucalyptus",
4250 "-Deuca.home=%1$s/",
4251 "-Deuca.var.dir=%1$s/var/lib/eucalyptus",
4252+ "-Deuca.run.dir=%1$s/var/run/eucalyptus",
4253 "-Deuca.lib.dir=%1$s/usr/share/eucalyptus",
4254 "-Deuca.conf.dir=%1$s/etc/eucalyptus/cloud.d",
4255 "-Deuca.log.dir=%1$s/var/log/eucalyptus",
4256- "-Deuca.version=1.6.2",
4257+ "-Deuca.version=2.0.0",
4258 NULL,
4259 };
4260 static char *libjvm_paths[ ] = {
4261
4262=== modified file 'clc/modules/bootstrap/eucalyptus-opts.c'
4263--- clc/modules/bootstrap/eucalyptus-opts.c 2010-01-23 05:39:06 +0000
4264+++ clc/modules/bootstrap/eucalyptus-opts.c 2010-08-17 20:32:41 +0000
4265@@ -47,6 +47,7 @@
4266 " --exhaustive-db Individually enable exhaustive connection \n information for database connections. \n (default=off)",
4267 " --exhaustive-user Individually enable exhaustive connection \n information for client connections. \n (default=off)",
4268 " --exhaustive-cc Individually enable exhaustive connection \n information for client connections. \n (default=off)",
4269+ " --exhaustive-external Individually enable exhaustive logging for \n external libraries. (default=off)",
4270 " -L, --log-appender=log4j-appender-name\n Control the destination for console output. \n (default=`console-log')",
4271 " -o, --out=filename Redirect standard out to file. (default=`&1')",
4272 " -e, --err=filename Redirect standard error to file. \n (default=`&2')",
4273@@ -74,7 +75,8 @@
4274 " --debug-port=INT Set the port to use for the debugger. \n (default=`5005')",
4275 " --debug-suspend Set the port to use for the debugger. \n (default=off)",
4276 " -p, --profile Launch with jprofiler enabled. (default=off)",
4277- " -P, --profiler-home=jprofiler directory\n Set the home for jprofiler. \n (default=`/opt/jprofiler5')",
4278+ " -a, --agentlib=agentlib Launch with agentlib enabled.",
4279+ " -P, --profiler-home=jprofiler directory\n Set the home for jprofiler. \n (default=`/opt/jprofiler6')",
4280 0
4281 };
4282
4283@@ -122,11 +124,12 @@
4284 eucalyptus_opts_help[38] = eucalyptus_opts_full_help[38];
4285 eucalyptus_opts_help[39] = eucalyptus_opts_full_help[39];
4286 eucalyptus_opts_help[40] = eucalyptus_opts_full_help[40];
4287- eucalyptus_opts_help[41] = 0;
4288+ eucalyptus_opts_help[41] = eucalyptus_opts_full_help[41];
4289+ eucalyptus_opts_help[42] = 0;
4290
4291 }
4292
4293-const char *eucalyptus_opts_help[42];
4294+const char *eucalyptus_opts_help[43];
4295
4296 typedef enum {ARG_NO
4297 , ARG_FLAG
4298@@ -166,6 +169,7 @@
4299 args_info->exhaustive_db_given = 0 ;
4300 args_info->exhaustive_user_given = 0 ;
4301 args_info->exhaustive_cc_given = 0 ;
4302+ args_info->exhaustive_external_given = 0 ;
4303 args_info->log_appender_given = 0 ;
4304 args_info->out_given = 0 ;
4305 args_info->err_given = 0 ;
4306@@ -189,6 +193,7 @@
4307 args_info->debug_port_given = 0 ;
4308 args_info->debug_suspend_given = 0 ;
4309 args_info->profile_given = 0 ;
4310+ args_info->agentlib_given = 0 ;
4311 args_info->profiler_home_given = 0 ;
4312 }
4313
4314@@ -213,6 +218,7 @@
4315 args_info->exhaustive_db_flag = 0;
4316 args_info->exhaustive_user_flag = 0;
4317 args_info->exhaustive_cc_flag = 0;
4318+ args_info->exhaustive_external_flag = 0;
4319 args_info->log_appender_arg = gengetopt_strdup ("console-log");
4320 args_info->log_appender_orig = NULL;
4321 args_info->out_arg = gengetopt_strdup ("&1");
4322@@ -244,7 +250,9 @@
4323 args_info->debug_port_orig = NULL;
4324 args_info->debug_suspend_flag = 0;
4325 args_info->profile_flag = 0;
4326- args_info->profiler_home_arg = gengetopt_strdup ("/opt/jprofiler5");
4327+ args_info->agentlib_arg = NULL;
4328+ args_info->agentlib_orig = NULL;
4329+ args_info->profiler_home_arg = gengetopt_strdup ("/opt/jprofiler6");
4330 args_info->profiler_home_orig = NULL;
4331
4332 }
4333@@ -270,32 +278,34 @@
4334 args_info->exhaustive_db_help = eucalyptus_opts_full_help[12] ;
4335 args_info->exhaustive_user_help = eucalyptus_opts_full_help[13] ;
4336 args_info->exhaustive_cc_help = eucalyptus_opts_full_help[14] ;
4337- args_info->log_appender_help = eucalyptus_opts_full_help[15] ;
4338- args_info->out_help = eucalyptus_opts_full_help[16] ;
4339- args_info->err_help = eucalyptus_opts_full_help[17] ;
4340- args_info->remote_cloud_help = eucalyptus_opts_full_help[19] ;
4341- args_info->remote_walrus_help = eucalyptus_opts_full_help[20] ;
4342- args_info->remote_dns_help = eucalyptus_opts_full_help[21] ;
4343- args_info->remote_storage_help = eucalyptus_opts_full_help[22] ;
4344- args_info->disable_cloud_help = eucalyptus_opts_full_help[24] ;
4345- args_info->disable_walrus_help = eucalyptus_opts_full_help[25] ;
4346- args_info->disable_dns_help = eucalyptus_opts_full_help[26] ;
4347- args_info->disable_storage_help = eucalyptus_opts_full_help[27] ;
4348- args_info->disable_iscsi_help = eucalyptus_opts_full_help[28] ;
4349- args_info->check_help = eucalyptus_opts_full_help[30] ;
4350- args_info->stop_help = eucalyptus_opts_full_help[31] ;
4351- args_info->fork_help = eucalyptus_opts_full_help[32] ;
4352- args_info->pidfile_help = eucalyptus_opts_full_help[33] ;
4353- args_info->java_home_help = eucalyptus_opts_full_help[35] ;
4354- args_info->jvm_name_help = eucalyptus_opts_full_help[36] ;
4355- args_info->jvm_args_help = eucalyptus_opts_full_help[37] ;
4356+ args_info->exhaustive_external_help = eucalyptus_opts_full_help[15] ;
4357+ args_info->log_appender_help = eucalyptus_opts_full_help[16] ;
4358+ args_info->out_help = eucalyptus_opts_full_help[17] ;
4359+ args_info->err_help = eucalyptus_opts_full_help[18] ;
4360+ args_info->remote_cloud_help = eucalyptus_opts_full_help[20] ;
4361+ args_info->remote_walrus_help = eucalyptus_opts_full_help[21] ;
4362+ args_info->remote_dns_help = eucalyptus_opts_full_help[22] ;
4363+ args_info->remote_storage_help = eucalyptus_opts_full_help[23] ;
4364+ args_info->disable_cloud_help = eucalyptus_opts_full_help[25] ;
4365+ args_info->disable_walrus_help = eucalyptus_opts_full_help[26] ;
4366+ args_info->disable_dns_help = eucalyptus_opts_full_help[27] ;
4367+ args_info->disable_storage_help = eucalyptus_opts_full_help[28] ;
4368+ args_info->disable_iscsi_help = eucalyptus_opts_full_help[29] ;
4369+ args_info->check_help = eucalyptus_opts_full_help[31] ;
4370+ args_info->stop_help = eucalyptus_opts_full_help[32] ;
4371+ args_info->fork_help = eucalyptus_opts_full_help[33] ;
4372+ args_info->pidfile_help = eucalyptus_opts_full_help[34] ;
4373+ args_info->java_home_help = eucalyptus_opts_full_help[36] ;
4374+ args_info->jvm_name_help = eucalyptus_opts_full_help[37] ;
4375+ args_info->jvm_args_help = eucalyptus_opts_full_help[38] ;
4376 args_info->jvm_args_min = 0;
4377 args_info->jvm_args_max = 0;
4378- args_info->debug_help = eucalyptus_opts_full_help[38] ;
4379- args_info->debug_port_help = eucalyptus_opts_full_help[39] ;
4380- args_info->debug_suspend_help = eucalyptus_opts_full_help[40] ;
4381- args_info->profile_help = eucalyptus_opts_full_help[41] ;
4382- args_info->profiler_home_help = eucalyptus_opts_full_help[42] ;
4383+ args_info->debug_help = eucalyptus_opts_full_help[39] ;
4384+ args_info->debug_port_help = eucalyptus_opts_full_help[40] ;
4385+ args_info->debug_suspend_help = eucalyptus_opts_full_help[41] ;
4386+ args_info->profile_help = eucalyptus_opts_full_help[42] ;
4387+ args_info->agentlib_help = eucalyptus_opts_full_help[43] ;
4388+ args_info->profiler_home_help = eucalyptus_opts_full_help[44] ;
4389
4390 }
4391
4392@@ -455,6 +465,8 @@
4393 free_string_field (&(args_info->jvm_name_orig));
4394 free_multiple_string_field (args_info->jvm_args_given, &(args_info->jvm_args_arg), &(args_info->jvm_args_orig));
4395 free_string_field (&(args_info->debug_port_orig));
4396+ free_string_field (&(args_info->agentlib_arg));
4397+ free_string_field (&(args_info->agentlib_orig));
4398 free_string_field (&(args_info->profiler_home_arg));
4399 free_string_field (&(args_info->profiler_home_orig));
4400
4401@@ -522,6 +534,8 @@
4402 write_into_file(outfile, "exhaustive-user", 0, 0 );
4403 if (args_info->exhaustive_cc_given)
4404 write_into_file(outfile, "exhaustive-cc", 0, 0 );
4405+ if (args_info->exhaustive_external_given)
4406+ write_into_file(outfile, "exhaustive-external", 0, 0 );
4407 if (args_info->log_appender_given)
4408 write_into_file(outfile, "log-appender", args_info->log_appender_orig, 0);
4409 if (args_info->out_given)
4410@@ -567,6 +581,8 @@
4411 write_into_file(outfile, "debug-suspend", 0, 0 );
4412 if (args_info->profile_given)
4413 write_into_file(outfile, "profile", 0, 0 );
4414+ if (args_info->agentlib_given)
4415+ write_into_file(outfile, "agentlib", args_info->agentlib_orig, 0);
4416 if (args_info->profiler_home_given)
4417 write_into_file(outfile, "profiler-home", args_info->profiler_home_orig, 0);
4418
4419@@ -837,6 +853,11 @@
4420 fprintf (stderr, "%s: '--debug-suspend' option depends on option 'debug'%s\n", prog_name, (additional_error ? additional_error : ""));
4421 error = 1;
4422 }
4423+ if (args_info->agentlib_given && ! args_info->profile_given)
4424+ {
4425+ fprintf (stderr, "%s: '--agentlib' ('-a') option depends on option 'profile'%s\n", prog_name, (additional_error ? additional_error : ""));
4426+ error = 1;
4427+ }
4428 if (args_info->profiler_home_given && ! args_info->profile_given)
4429 {
4430 fprintf (stderr, "%s: '--profiler-home' ('-P') option depends on option 'profile'%s\n", prog_name, (additional_error ? additional_error : ""));
4431@@ -1145,6 +1166,7 @@
4432 { "exhaustive-db", 0, NULL, 0 },
4433 { "exhaustive-user", 0, NULL, 0 },
4434 { "exhaustive-cc", 0, NULL, 0 },
4435+ { "exhaustive-external", 0, NULL, 0 },
4436 { "log-appender", 1, NULL, 'L' },
4437 { "out", 1, NULL, 'o' },
4438 { "err", 1, NULL, 'e' },
4439@@ -1168,11 +1190,12 @@
4440 { "debug-port", 1, NULL, 0 },
4441 { "debug-suspend", 0, NULL, 0 },
4442 { "profile", 0, NULL, 'p' },
4443+ { "agentlib", 1, NULL, 'a' },
4444 { "profiler-home", 1, NULL, 'P' },
4445 { 0, 0, 0, 0 }
4446 };
4447
4448- c = getopt_long (argc, argv, "Vu:h:c:w:D:vl:xL:o:e:CSfj:J:X:dpP:", long_options, &option_index);
4449+ c = getopt_long (argc, argv, "Vu:h:c:w:D:vl:xL:o:e:CSfj:J:X:dpa:P:", long_options, &option_index);
4450
4451 if (c == -1) break; /* Exit from `while (1)' loop. */
4452
4453@@ -1391,12 +1414,24 @@
4454 goto failure;
4455
4456 break;
4457+ case 'a': /* Launch with agentlib enabled.. */
4458+
4459+
4460+ if (update_arg( (void *)&(args_info->agentlib_arg),
4461+ &(args_info->agentlib_orig), &(args_info->agentlib_given),
4462+ &(local_args_info.agentlib_given), optarg, 0, 0, ARG_STRING,
4463+ check_ambiguity, override, 0, 0,
4464+ "agentlib", 'a',
4465+ additional_error))
4466+ goto failure;
4467+
4468+ break;
4469 case 'P': /* Set the home for jprofiler.. */
4470
4471
4472 if (update_arg( (void *)&(args_info->profiler_home_arg),
4473 &(args_info->profiler_home_orig), &(args_info->profiler_home_given),
4474- &(local_args_info.profiler_home_given), optarg, 0, "/opt/jprofiler5", ARG_STRING,
4475+ &(local_args_info.profiler_home_given), optarg, 0, "/opt/jprofiler6", ARG_STRING,
4476 check_ambiguity, override, 0, 0,
4477 "profiler-home", 'P',
4478 additional_error))
4479@@ -1453,6 +1488,18 @@
4480 goto failure;
4481
4482 }
4483+ /* Individually enable exhaustive logging for external libraries.. */
4484+ else if (strcmp (long_options[option_index].name, "exhaustive-external") == 0)
4485+ {
4486+
4487+
4488+ if (update_arg((void *)&(args_info->exhaustive_external_flag), 0, &(args_info->exhaustive_external_given),
4489+ &(local_args_info.exhaustive_external_given), optarg, 0, 0, ARG_FLAG,
4490+ check_ambiguity, override, 1, 0, "exhaustive-external", '-',
4491+ additional_error))
4492+ goto failure;
4493+
4494+ }
4495 /* Do not try to bootstrap cloud services locally.. */
4496 else if (strcmp (long_options[option_index].name, "remote-cloud") == 0)
4497 {
4498
4499=== modified file 'clc/modules/bootstrap/eucalyptus-opts.h'
4500--- clc/modules/bootstrap/eucalyptus-opts.h 2010-01-23 05:39:06 +0000
4501+++ clc/modules/bootstrap/eucalyptus-opts.h 2010-08-17 20:32:41 +0000
4502@@ -70,6 +70,8 @@
4503 const char *exhaustive_user_help; /**< @brief Individually enable exhaustive connection information for client connections. help description. */
4504 int exhaustive_cc_flag; /**< @brief Individually enable exhaustive connection information for client connections. (default=off). */
4505 const char *exhaustive_cc_help; /**< @brief Individually enable exhaustive connection information for client connections. help description. */
4506+ int exhaustive_external_flag; /**< @brief Individually enable exhaustive logging for external libraries. (default=off). */
4507+ const char *exhaustive_external_help; /**< @brief Individually enable exhaustive logging for external libraries. help description. */
4508 char * log_appender_arg; /**< @brief Control the destination for console output. (default='console-log'). */
4509 char * log_appender_orig; /**< @brief Control the destination for console output. original value given at command line. */
4510 const char *log_appender_help; /**< @brief Control the destination for console output. help description. */
4511@@ -126,7 +128,10 @@
4512 const char *debug_suspend_help; /**< @brief Set the port to use for the debugger. help description. */
4513 int profile_flag; /**< @brief Launch with jprofiler enabled. (default=off). */
4514 const char *profile_help; /**< @brief Launch with jprofiler enabled. help description. */
4515- char * profiler_home_arg; /**< @brief Set the home for jprofiler. (default='/opt/jprofiler5'). */
4516+ char * agentlib_arg; /**< @brief Launch with agentlib enabled.. */
4517+ char * agentlib_orig; /**< @brief Launch with agentlib enabled. original value given at command line. */
4518+ const char *agentlib_help; /**< @brief Launch with agentlib enabled. help description. */
4519+ char * profiler_home_arg; /**< @brief Set the home for jprofiler. (default='/opt/jprofiler6'). */
4520 char * profiler_home_orig; /**< @brief Set the home for jprofiler. original value given at command line. */
4521 const char *profiler_home_help; /**< @brief Set the home for jprofiler. help description. */
4522
4523@@ -144,6 +149,7 @@
4524 unsigned int exhaustive_db_given ; /**< @brief Whether exhaustive-db was given. */
4525 unsigned int exhaustive_user_given ; /**< @brief Whether exhaustive-user was given. */
4526 unsigned int exhaustive_cc_given ; /**< @brief Whether exhaustive-cc was given. */
4527+ unsigned int exhaustive_external_given ; /**< @brief Whether exhaustive-external was given. */
4528 unsigned int log_appender_given ; /**< @brief Whether log-appender was given. */
4529 unsigned int out_given ; /**< @brief Whether out was given. */
4530 unsigned int err_given ; /**< @brief Whether err was given. */
4531@@ -167,6 +173,7 @@
4532 unsigned int debug_port_given ; /**< @brief Whether debug-port was given. */
4533 unsigned int debug_suspend_given ; /**< @brief Whether debug-suspend was given. */
4534 unsigned int profile_given ; /**< @brief Whether profile was given. */
4535+ unsigned int agentlib_given ; /**< @brief Whether agentlib was given. */
4536 unsigned int profiler_home_given ; /**< @brief Whether profiler-home was given. */
4537
4538 } ;
4539
4540=== modified file 'clc/modules/cloud/src/main/resources/com.eucalyptus.CloudServiceProvider'
4541--- clc/modules/cloud/src/main/resources/com.eucalyptus.CloudServiceProvider 2009-08-14 14:29:33 +0000
4542+++ clc/modules/cloud/src/main/resources/com.eucalyptus.CloudServiceProvider 2010-08-17 20:32:41 +0000
4543@@ -5,3 +5,6 @@
4544 euca.model.storage=eucalyptus-storage.xml
4545 euca.model.userdata=eucalyptus-userdata.xml
4546 euca.model.verification=eucalyptus-verification.xml
4547+euca.url.local=vm://EucalyptusRequestQueue
4548+euca.url.pattern=http://%s:%d/internal/%s
4549+euca.url.port=8773
4550\ No newline at end of file
4551
4552=== modified file 'clc/modules/cloud/src/main/resources/eucalyptus-interface.xml'
4553--- clc/modules/cloud/src/main/resources/eucalyptus-interface.xml 2009-11-18 02:56:08 +0000
4554+++ clc/modules/cloud/src/main/resources/eucalyptus-interface.xml 2010-08-17 20:32:41 +0000
4555@@ -89,10 +89,14 @@
4556 <outbound-endpoint ref="StartVerifyWS" />
4557 <payload-type-filter expectedType="edu.ucsb.eucalyptus.msgs.RunInstancesType" />
4558 </filtering-router>
4559- <filtering-router>
4560- <outbound-endpoint ref="VmControlWS" />
4561- <payload-type-filter expectedType="edu.ucsb.eucalyptus.msgs.VmControlMessage" />
4562- </filtering-router>
4563+ <filtering-router>
4564+ <outbound-endpoint ref="VmControlWS" />
4565+ <payload-type-filter expectedType="edu.ucsb.eucalyptus.msgs.VmControlMessage" />
4566+ </filtering-router>
4567+ <filtering-router>
4568+ <outbound-endpoint ref="VmControlWS" />
4569+ <payload-type-filter expectedType="edu.ucsb.eucalyptus.msgs.VmBundleMessage" />
4570+ </filtering-router>
4571 <filtering-router>
4572 <outbound-endpoint ref="ClusterEndpointWS" />
4573 <payload-type-filter expectedType="edu.ucsb.eucalyptus.msgs.ClusterMessage" />
4574
4575=== modified file 'clc/modules/cloud/src/main/resources/eucalyptus-runtime.xml'
4576--- clc/modules/cloud/src/main/resources/eucalyptus-runtime.xml 2009-09-08 21:45:10 +0000
4577+++ clc/modules/cloud/src/main/resources/eucalyptus-runtime.xml 2010-08-17 20:32:41 +0000
4578@@ -81,7 +81,7 @@
4579 <inbound>
4580 <inbound-endpoint ref="VmControlWS"/>
4581 </inbound>
4582- <component class="edu.ucsb.eucalyptus.cloud.ws.VmControl"/>
4583+ <component class="com.eucalyptus.vm.VmControl"/>
4584 <outbound>
4585 <outbound-pass-through-router>
4586 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4587@@ -99,21 +99,21 @@
4588 <inbound>
4589 <inbound-endpoint ref="ImageResolveWS"/>
4590 </inbound>
4591- <component class="edu.ucsb.eucalyptus.cloud.ws.ImageManager"/>
4592+ <component class="com.eucalyptus.images.ImageManager"/>
4593 </service>
4594
4595 <service name="ClusterSink">
4596 <inbound>
4597 <inbound-endpoint ref="ClusterSinkWS"/>
4598 </inbound>
4599- <component class="edu.ucsb.eucalyptus.cloud.cluster.ClusterEndpoint"/>
4600+ <component class="com.eucalyptus.cluster.ClusterEndpoint"/>
4601 </service>
4602
4603 <service name="ClusterEndpoint">
4604 <inbound>
4605 <inbound-endpoint ref="ClusterEndpointWS"/>
4606 </inbound>
4607- <component class="edu.ucsb.eucalyptus.cloud.cluster.ClusterEndpoint"/>
4608+ <component class="com.eucalyptus.cluster.ClusterEndpoint"/>
4609 <outbound>
4610 <outbound-pass-through-router>
4611 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4612@@ -125,7 +125,7 @@
4613 <inbound>
4614 <inbound-endpoint ref="AddressWS"/>
4615 </inbound>
4616- <component class="edu.ucsb.eucalyptus.cloud.ws.AddressManager"/>
4617+ <component class="com.eucalyptus.address.AddressManager"/>
4618 <outbound>
4619 <outbound-pass-through-router>
4620 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4621@@ -137,7 +137,7 @@
4622 <inbound>
4623 <inbound-endpoint ref="SystemStateWS"/>
4624 </inbound>
4625- <component class="edu.ucsb.eucalyptus.cloud.ws.SystemState"/>
4626+ <component class="com.eucalyptus.vm.SystemState"/>
4627 <outbound>
4628 <outbound-pass-through-router>
4629 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4630@@ -149,7 +149,7 @@
4631 <inbound>
4632 <inbound-endpoint ref="UpdateSystemWS"/>
4633 </inbound>
4634- <component class="edu.ucsb.eucalyptus.cloud.ws.CreateVmInstances"/>
4635+ <component class="com.eucalyptus.sla.CreateVmInstances"/>
4636 <outbound>
4637 <multicasting-router>
4638 <outbound-endpoint ref="ClusterSinkWS"/>
4639@@ -162,7 +162,7 @@
4640 <inbound>
4641 <inbound-endpoint ref="TransformReplyWS"/>
4642 </inbound>
4643- <component class="edu.ucsb.eucalyptus.cloud.ws.VmReplyTransform"/>
4644+ <component class="com.eucalyptus.vm.VmReplyTransform"/>
4645 <outbound>
4646 <outbound-pass-through-router>
4647 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4648@@ -177,7 +177,7 @@
4649 <inbound>
4650 <inbound-endpoint ref="VmMetadataWS"/>
4651 </inbound>
4652- <component class="edu.ucsb.eucalyptus.cloud.ws.VmMetadata"/>
4653+ <component class="com.eucalyptus.vm.VmMetadata"/>
4654 </service>
4655 </model>
4656
4657
4658=== modified file 'clc/modules/cloud/src/main/resources/eucalyptus-services.xml'
4659--- clc/modules/cloud/src/main/resources/eucalyptus-services.xml 2009-10-23 04:34:22 +0000
4660+++ clc/modules/cloud/src/main/resources/eucalyptus-services.xml 2010-08-17 20:32:41 +0000
4661@@ -73,7 +73,7 @@
4662 http://www.mulesource.org/schema/mule/vm/2.0 http://www.mulesource.org/schema/mule/vm/2.0/mule-vm.xsd
4663 http://www.eucalyptus.com/schema/cloud/1.6 http://www.eucalyptus.com/schema/cloud/1.6/euca.xsd">
4664 <!--user data services-->
4665- <euca:endpoint name="EucalyptusWS" connector-ref="eucaws" address="http://127.0.0.1:8773/services/Eucalyptus" synchronous="true" />
4666+ <euca:endpoint name="EucalyptusWS" connector-ref="eucaws" address="http://127.0.0.1:${euca.ws.port}/services/Eucalyptus" synchronous="true" />
4667 <endpoint name="ShortBusWS" address="vm://ShortBus" synchronous="false" />
4668 <endpoint name="ImageWS" address="vm://Image" synchronous="false" />
4669 <endpoint name="VolumeWS" address="vm://Volume" synchronous="false" />
4670
4671=== modified file 'clc/modules/cloud/src/main/resources/eucalyptus-storage.xml'
4672--- clc/modules/cloud/src/main/resources/eucalyptus-storage.xml 2009-08-27 10:37:27 +0000
4673+++ clc/modules/cloud/src/main/resources/eucalyptus-storage.xml 2010-08-17 20:32:41 +0000
4674@@ -81,7 +81,7 @@
4675 <inbound>
4676 <inbound-endpoint ref="ImageWS"/>
4677 </inbound>
4678- <component class="edu.ucsb.eucalyptus.cloud.ws.ImageManager"/>
4679+ <component class="com.eucalyptus.images.ImageManager"/>
4680 <outbound>
4681 <outbound-pass-through-router>
4682 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4683@@ -92,7 +92,7 @@
4684 <inbound>
4685 <inbound-endpoint ref="VolumeWS"/>
4686 </inbound>
4687- <component class="edu.ucsb.eucalyptus.cloud.ws.VolumeManager"/>
4688+ <component class="com.eucalyptus.blockstorage.VolumeManager"/>
4689 <outbound>
4690 <outbound-pass-through-router>
4691 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4692@@ -103,7 +103,7 @@
4693 <inbound>
4694 <inbound-endpoint ref="SnapshotWS"/>
4695 </inbound>
4696- <component class="edu.ucsb.eucalyptus.cloud.ws.SnapshotManager"/>
4697+ <component class="com.eucalyptus.blockstorage.SnapshotManager"/>
4698 <outbound>
4699 <outbound-pass-through-router>
4700 <outbound-endpoint ref="ReplyQueueEndpoint"/>
4701
4702=== modified file 'clc/modules/cloud/src/main/resources/eucalyptus-verification.xml'
4703--- clc/modules/cloud/src/main/resources/eucalyptus-verification.xml 2009-12-16 12:49:23 +0000
4704+++ clc/modules/cloud/src/main/resources/eucalyptus-verification.xml 2010-08-17 20:32:41 +0000
4705@@ -105,7 +105,7 @@
4706 <inbound>
4707 <inbound-endpoint ref="ImageVerifyWS"/>
4708 </inbound>
4709- <component class="edu.ucsb.eucalyptus.cloud.ws.ImageManager"/>
4710+ <component class="com.eucalyptus.images.ImageManager"/>
4711 <outbound>
4712 <outbound-pass-through-router>
4713 <outbound-endpoint ref="KeyPairVerifyWS"/>
4714@@ -129,7 +129,7 @@
4715 <inbound>
4716 <inbound-endpoint ref="VmTypeVerifyWS"/>
4717 </inbound>
4718- <component class="edu.ucsb.eucalyptus.cloud.cluster.VmTypeVerify"/>
4719+ <component class="com.eucalyptus.cluster.VmTypeVerify"/>
4720 <outbound>
4721 <outbound-pass-through-router>
4722 <outbound-endpoint ref="GroupsVerifyWS"/>
4723
4724=== removed file 'clc/modules/cluster-manager/cluster-manager.iml'
4725--- clc/modules/cluster-manager/cluster-manager.iml 2009-06-24 02:29:49 +0000
4726+++ clc/modules/cluster-manager/cluster-manager.iml 1970-01-01 00:00:00 +0000
4727@@ -1,27 +0,0 @@
4728-<?xml version="1.0" encoding="UTF-8"?>
4729-<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
4730- <component name="FacetManager">
4731- <facet type="Groovy" name="Groovy">
4732- <configuration />
4733- </facet>
4734- </component>
4735- <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
4736- <output url="file://$MODULE_DIR$/build" />
4737- <output-test url="file://$MODULE_DIR$/build" />
4738- <exclude-output />
4739- <content url="file://$MODULE_DIR$">
4740- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
4741- <excludeFolder url="file://$MODULE_DIR$/build" />
4742- </content>
4743- <content url="file://$MODULE_DIR$/../../target">
4744- <excludeFolder url="file://$MODULE_DIR$/../../target" />
4745- </content>
4746- <orderEntry type="inheritedJdk" />
4747- <orderEntry type="sourceFolder" forTests="false" />
4748- <orderEntry type="library" exported="" name="eucalyptus-deps" level="project" />
4749- <orderEntry type="module" module-name="msgs" exported="" />
4750- <orderEntry type="module" module-name="core" exported="" />
4751- <orderEntry type="module" module-name="axis2-transport" exported="" />
4752- </component>
4753-</module>
4754-
4755
4756=== removed file 'clc/modules/cluster-manager/conf/scripts/LeastFullFirst.groovy'
4757--- clc/modules/cluster-manager/conf/scripts/LeastFullFirst.groovy 2009-12-17 12:35:33 +0000
4758+++ clc/modules/cluster-manager/conf/scripts/LeastFullFirst.groovy 1970-01-01 00:00:00 +0000
4759@@ -1,34 +0,0 @@
4760-package com.eucalyptus.sla;
4761-
4762-import com.eucalyptus.cluster.Cluster;
4763-import com.eucalyptus.cluster.Clusters;
4764-import edu.ucsb.eucalyptus.cloud.ResourceToken;
4765-import edu.ucsb.eucalyptus.cloud.VmAllocationInfo;
4766-import com.eucalyptus.util.NotEnoughResourcesAvailable;
4767-
4768-public class LeastFullFirst implements ResourceAllocator {
4769-
4770- @Override
4771- public void allocate( VmAllocationInfo vmInfo ) throws Exception {
4772- def clusterMap = [:]
4773- Clusters.getInstance().listValues().collect{ Cluster it ->
4774- clusterMap[it] = it.getNodeState( ).getAvailability( vmInfo.getRequest( ).getInstanceType( ) )
4775- }
4776-
4777- def leastFull = clusterMap.sort{ it.value }.find{ it }
4778- def amount = [leastFull.value.getAvailable(), vmInfo.request.maxCount].min();
4779- if( amount < vmInfo.request.minCount ) {
4780- throw new NotEnoughResourcesAvailable("Not enough resources (${leastFull.value} < ${vmInfo.request.minCount}: vm instances.") ;
4781- }
4782- def allocation = leastFull.key.getNodeState().getResourceAllocation(vmInfo.request.correlationId, vmInfo.request.userId, vmInfo.request.instanceType, amount)
4783- vmInfo.getAllocationTokens( ).add( allocation );
4784- }
4785-
4786- @Override
4787- public void fail( VmAllocationInfo vmInfo, Throwable t ) {
4788- vmInfo.allocationTokens.each { ResourceToken it ->
4789- Clusters.getInstance().lookup( it.getCluster( ) ).getNodeState( ).releaseToken( it )
4790- }
4791- }
4792-
4793-}
4794
4795=== removed file 'clc/modules/cluster-manager/pom.xml'
4796--- clc/modules/cluster-manager/pom.xml 2009-08-27 10:37:27 +0000
4797+++ clc/modules/cluster-manager/pom.xml 1970-01-01 00:00:00 +0000
4798@@ -1,101 +0,0 @@
4799-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4800- ~ Copyright (c) 2009 Eucalyptus Systems, Inc.
4801- ~
4802- ~ This program is free software: you can redistribute it and/or modify
4803- ~ it under the terms of the GNU General Public License as published by
4804- ~ the Free Software Foundation, only version 3 of the License.
4805- ~
4806- ~
4807- ~ This file is distributed in the hope that it will be useful, but WITHOUT
4808- ~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4809- ~ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4810- ~ for more details.
4811- ~
4812- ~ You should have received a copy of the GNU General Public License along
4813- ~ with this program. If not, see http://www.gnu.org/licenses/.
4814- ~
4815- ~ Please contact Eucalyptus Systems, Inc., 130 Castilian
4816- ~ Dr., Goleta, CA 93101 USA or visit http://www.eucalyptus.com/licenses/
4817- ~ if you need additional information or have any questions.
4818- ~
4819- ~ This file may incorporate work covered under the following copyright and
4820- ~ permission notice:
4821- ~
4822- ~ Software License Agreement (BSD License)
4823- ~
4824- ~ Copyright (c) 2008, Regents of the University of California
4825- ~ All rights reserved.
4826- ~
4827- ~ Redistribution and use of this software in source and binary forms, with
4828- ~ or without modification, are permitted provided that the following
4829- ~ conditions are met:
4830- ~
4831- ~ Redistributions of source code must retain the above copyright notice,
4832- ~ this list of conditions and the following disclaimer.
4833- ~
4834- ~ Redistributions in binary form must reproduce the above copyright
4835- ~ notice, this list of conditions and the following disclaimer in the
4836- ~ documentation and/or other materials provided with the distribution.
4837- ~
4838- ~ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
4839- ~ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
4840- ~ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
4841- ~ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
4842- ~ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
4843- ~ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
4844- ~ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
4845- ~ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
4846- ~ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
4847- ~ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
4848- ~ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
4849- ~ THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
4850- ~ LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
4851- ~ SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
4852- ~ IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
4853- ~ BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
4854- ~ THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
4855- ~ OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
4856- ~ WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
4857- ~ ANY SUCH LICENSES OR RIGHTS.
4858- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4859- ~ Author: chris grzegorczyk <grze@eucalyptus.com>
4860- -->
4861-<project >
4862- <parent>
4863- <groupId>eucalyptus</groupId>
4864- <artifactId>cloud</artifactId>
4865- <version>1</version>
4866- <relativePath>../../pom.xml</relativePath>
4867- </parent>
4868- <modelVersion>4.0.0</modelVersion>
4869- <groupId>eucalyptus</groupId>
4870- <artifactId>cluster-manager</artifactId>
4871- <version>${euca.version}</version>
4872- <name>Eucalyptus Cluster Manager</name>
4873- <dependencies>
4874- <dependency>
4875- <groupId>eucalyptus</groupId>
4876- <artifactId>msgs</artifactId>
4877- <version>${euca.version}</version>
4878- </dependency>
4879- <dependency>
4880- <groupId>eucalyptus</groupId>
4881- <artifactId>core</artifactId>
4882- <version>${euca.version}</version>
4883- </dependency>
4884- <dependency>
4885- <groupId>eucalyptus</groupId>
4886- <artifactId>wsstack</artifactId>
4887- <version>${euca.version}</version>
4888- </dependency>
4889- <dependency>
4890- <groupId>org.drools</groupId>
4891- <artifactId>drools-core</artifactId>
4892- </dependency>
4893- <dependency>
4894- <groupId>org.drools</groupId>
4895- <artifactId>drools-compiler</artifactId>
4896- </dependency>
4897-
4898- </dependencies>
4899-</project>
4900\ No newline at end of file
4901
4902=== modified file 'clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AbstractSystemAddressManager.java'
4903--- clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AbstractSystemAddressManager.java 2010-06-26 04:02:24 +0000
4904+++ clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/AbstractSystemAddressManager.java 2010-08-17 20:32:41 +0000
4905@@ -8,22 +8,19 @@
4906 import org.apache.log4j.Logger;
4907 import com.eucalyptus.bootstrap.Component;
4908 import com.eucalyptus.cluster.Cluster;
4909-import com.eucalyptus.cluster.SuccessCallback;
4910-import com.eucalyptus.net.util.ClusterAddressInfo;
4911-import com.eucalyptus.util.EntityWrapper;
4912+import com.eucalyptus.cluster.VmInstance;
4913+import com.eucalyptus.cluster.VmInstances;
4914+import com.eucalyptus.entities.EntityWrapper;
4915+import com.eucalyptus.util.Exceptions;
4916 import com.eucalyptus.util.LogUtil;
4917 import com.eucalyptus.util.NotEnoughResourcesAvailable;
4918+import com.eucalyptus.vm.VmState;
4919 import com.google.common.collect.Lists;
4920-import edu.ucsb.eucalyptus.cloud.cluster.AssignAddressCallback;
4921-import edu.ucsb.eucalyptus.cloud.cluster.QueuedEventCallback;
4922-import edu.ucsb.eucalyptus.cloud.cluster.UnassignAddressCallback;
4923-import edu.ucsb.eucalyptus.cloud.cluster.VmInstance;
4924-import edu.ucsb.eucalyptus.cloud.cluster.VmInstances;
4925 import edu.ucsb.eucalyptus.cloud.exceptions.ExceptionList;
4926-import edu.ucsb.eucalyptus.constants.VmState;
4927
4928 public abstract class AbstractSystemAddressManager {
4929- static Logger LOG = Logger.getLogger( AbstractSystemAddressManager.class );
4930+ static Logger LOG = Logger.getLogger( AbstractSystemAddressManager.class );
4931+
4932 public Address allocateNext( String userId ) throws NotEnoughResourcesAvailable {
4933 Address addr = Addresses.getInstance( ).enableFirst( ).allocate( userId );
4934 LOG.debug( "Allocated address for public addressing: " + addr.toString( ) );
4935@@ -33,10 +30,9 @@
4936 }
4937 return addr;
4938 }
4939-
4940+
4941 public abstract void assignSystemAddress( final VmInstance vm ) throws NotEnoughResourcesAvailable;
4942- public abstract void releaseSystemAddress( final Address addr );
4943- public abstract List<Address> getReservedAddresses();
4944+ public abstract List<Address> getReservedAddresses( );
4945 public abstract void inheritReservedAddresses( List<Address> previouslyReservedAddresses );
4946 public abstract List<Address> allocateSystemAddresses( String cluster, int count ) throws NotEnoughResourcesAvailable;
4947
4948@@ -85,6 +81,7 @@
4949 } catch ( NoSuchElementException e1 ) {
4950 try {
4951 addr = Addresses.getInstance( ).lookup( addrInfo.getAddress( ) );
4952+<<<<<<< TREE
4953 LOG.trace( "Found address in the active set cache: " + addr );
4954 } catch ( NoSuchElementException e ) {}
4955 }
4956@@ -105,8 +102,121 @@
4957 } else if( addr == null && vm == null ) {
4958 addr = new Address( addrInfo.getAddress( ), cluster.getName( ) );
4959 cluster.getState().handleOrphan( addrInfo );
4960- }
4961- } else {
4962+=======
4963+ LOG.trace( "Found address in the active set cache: " + addr );
4964+ } catch ( NoSuchElementException e ) {}
4965+ }
4966+ Helper.checkUniqueness( addrInfo );
4967+ if ( addrInfo.hasMapping( ) ) {
4968+ vm = Helper.maybeFindVm( addrInfo.getAddress( ), addrInfo.getInstanceIp( ) );
4969+ if ( addr != null && vm != null ) {
4970+ Helper.ensureAllocated( addr, vm );
4971+ cluster.getState( ).clearOrphan( addrInfo );
4972+ } else if ( addr != null && vm != null && vm.getState( ).ordinal( ) > VmState.RUNNING.ordinal( ) ) {
4973+ cluster.getState( ).handleOrphan( addrInfo );
4974+ } else if ( addr != null && vm == null ) {
4975+ cluster.getState( ).handleOrphan( addrInfo );
4976+ } else if ( addr == null && vm != null ) {
4977+ addr = new Address( addrInfo.getAddress( ), cluster.getName( ), Component.eucalyptus.name( ), vm.getInstanceId( ), vm.getPrivateAddress( ) );
4978+ cluster.getState( ).clearOrphan( addrInfo );
4979+ } else if( addr == null && vm == null ) {
4980+ addr = new Address( addrInfo.getAddress( ), cluster.getName( ) );
4981+ cluster.getState().handleOrphan( addrInfo );
4982+ }
4983+ } else {
4984+ if( addr != null && addr.isAssigned( ) && !addr.isPending( ) ) {
4985+ cluster.getState( ).handleOrphan( addrInfo );
4986+ } else if( addr != null && !addr.isAssigned( ) && !addr.isPending( ) && addr.isSystemOwned( ) ) {
4987+ try {
4988+ addr.release( );
4989+ } catch ( Exception ex ) {
4990+ LOG.error( ex );
4991+ }
4992+ } else if( addr != null && Address.Transition.system.equals( addr.getTransition( ) ) ) {
4993+ cluster.getState( ).handleOrphan( addrInfo );
4994+ } else if( addr == null ) {
4995+ addr = new Address( addrInfo.getAddress( ), cluster.getName( ) );
4996+ Helper.clearVmState( addrInfo );
4997+ }
4998+ }
4999+ return addr;
5000+ }
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches