http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java index d7a5916..4d51cc1 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java @@ -68,8 +68,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } - public boolean addCartridge(Cartridge cartridgeConfig) - throws InvalidCartridgeDefinitionException, InvalidIaasProviderException, CartridgeAlreadyExistsException { + public boolean addCartridge(Cartridge cartridgeConfig) throws InvalidCartridgeDefinitionException, + InvalidIaasProviderException, CartridgeAlreadyExistsException { handleNullObject(cartridgeConfig, "Cartridge definition is null"); @@ -111,8 +111,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean updateCartridge(Cartridge cartridge) - throws InvalidCartridgeDefinitionException, InvalidIaasProviderException, + public boolean updateCartridge(Cartridge cartridge) throws InvalidCartridgeDefinitionException, + InvalidIaasProviderException, CartridgeDefinitionNotExistsException { handleNullObject(cartridge, "Cartridge definition is null"); @@ -155,13 +155,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { return true; } - private void copyIaasProviders(Cartridge destCartridge, Cartridge sourceCartridge) { + private void copyIaasProviders(Cartridge destCartridge, + Cartridge sourceCartridge) { - List<IaasProvider> newIaasProviders = - CloudControllerContext.getInstance().getIaasProviders(destCartridge.getType()); + List<IaasProvider> newIaasProviders = CloudControllerContext.getInstance().getIaasProviders(destCartridge.getType()); - Map<String, IaasProvider> iaasProviderMap = - CloudControllerContext.getInstance().getPartitionToIaasProvider(sourceCartridge.getType()); + Map<String, IaasProvider> iaasProviderMap = CloudControllerContext.getInstance().getPartitionToIaasProvider(sourceCartridge.getType()); if (iaasProviderMap != null) { for (Entry<String, IaasProvider> entry : iaasProviderMap.entrySet()) { @@ -172,12 +171,11 @@ public class CloudControllerServiceImpl implements CloudControllerService { IaasProvider iaasProvider = entry.getValue(); if (newIaasProviders.contains(iaasProvider)) { if (log.isDebugEnabled()) { - log.debug("Copying partition from the cartridge that is undeployed, to the new cartridge: " + - "[partition-id] " + partitionId + " [cartridge-type] " + destCartridge.getType()); + log.debug("Copying partition from the cartridge that is undeployed, to the new cartridge: " + + "[partition-id] " + partitionId + " [cartridge-type] " + destCartridge.getType()); } CloudControllerContext.getInstance().addIaasProvider(destCartridge.getType(), partitionId, - newIaasProviders.get(newIaasProviders.indexOf( - iaasProvider))); + newIaasProviders.get(newIaasProviders.indexOf(iaasProvider))); } } } @@ -332,8 +330,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { return memberContextsArray; } - public MemberContext startInstance(InstanceContext instanceContext) - throws CartridgeNotFoundException, InvalidIaasProviderException, CloudControllerException { + public MemberContext startInstance(InstanceContext instanceContext) throws + CartridgeNotFoundException, InvalidIaasProviderException, CloudControllerException { try { // Validate instance context @@ -350,8 +348,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { String partitionId = partition.getId(); String clusterId = instanceContext.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); - handleNullObject(clusterContext, - "Could not start instance, cluster context not found: [cluster-id] " + clusterId); + handleNullObject(clusterContext, "Could not start instance, cluster context not found: [cluster-id] " + clusterId); // Validate cartridge String cartridgeType = clusterContext.getCartridgeType(); @@ -363,15 +360,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { } // Validate iaas provider - IaasProvider iaasProvider = - CloudControllerContext.getInstance().getIaasProviderOfPartition(cartridge.getType(), partitionId); + IaasProvider iaasProvider = CloudControllerContext.getInstance().getIaasProviderOfPartition(cartridge.getType(), partitionId); if (iaasProvider == null) { String msg = String.format("Could not start instance, " + "IaaS provider not found in cartridge %s for partition %s, " + "partitions found: %s ", cartridgeType, partitionId, - CloudControllerContext.getInstance() - .getPartitionToIaasProvider(cartridge.getType()) - .keySet().toString()); + CloudControllerContext.getInstance().getPartitionToIaasProvider(cartridge.getType()).keySet().toString()); log.error(msg); throw new InvalidIaasProviderException(msg); } @@ -382,9 +376,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { // Create member context String applicationId = clusterContext.getApplicationId(); MemberContext memberContext = createMemberContext(applicationId, cartridgeType, memberId, - CloudControllerUtil.getLoadBalancingIPTypeEnumFromString( - cartridge.getLoadBalancingIPType()), - instanceContext); + CloudControllerUtil.getLoadBalancingIPTypeEnumFromString(cartridge.getLoadBalancingIPType()), instanceContext); // Prepare payload StringBuilder payload = new StringBuilder(clusterContext.getPayload()); @@ -408,6 +400,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { NetworkPartition networkPartition = CloudControllerContext.getInstance().getNetworkPartition(memberContext.getNetworkPartitionId()); + if (networkPartition.getProperties() != null) { if (networkPartition.getProperties().getProperties() != null) { for (Property property : networkPartition.getProperties().getProperties()) { @@ -454,13 +447,13 @@ public class CloudControllerServiceImpl implements CloudControllerService { clusterContext.setVolumes(volumes); } + // Handle member created event + TopologyBuilder.handleMemberCreatedEvent(memberContext); + // Persist member context CloudControllerContext.getInstance().addMemberContext(memberContext); CloudControllerContext.getInstance().persist(); - // Handle member created event - TopologyBuilder.handleMemberCreatedEvent(memberContext); - // Start instance in a new thread if (log.isDebugEnabled()) { log.debug(String.format("Starting instance creator thread: [cluster] %s [cluster-instance] %s " + @@ -479,10 +472,9 @@ public class CloudControllerServiceImpl implements CloudControllerService { } private MemberContext createMemberContext(String applicationId, String cartridgeType, String memberId, - LoadBalancingIPType loadBalancingIPType, - InstanceContext instanceContext) { - MemberContext memberContext = - new MemberContext(applicationId, cartridgeType, instanceContext.getClusterId(), memberId); + LoadBalancingIPType loadBalancingIPType, InstanceContext instanceContext) { + MemberContext memberContext = new MemberContext( + applicationId, cartridgeType, instanceContext.getClusterId(), memberId); memberContext.setClusterInstanceId(instanceContext.getClusterInstanceId()); memberContext.setNetworkPartitionId(instanceContext.getNetworkPartitionId()); @@ -497,7 +489,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { return memberContext; } - private Volume createVolumeAndSetInClusterContext(Volume volume, IaasProvider iaasProvider) { + private Volume createVolumeAndSetInClusterContext(Volume volume, + IaasProvider iaasProvider) { // iaas cannot be null at this state #startInstance method Iaas iaas = iaasProvider.getIaas(); int sizeGB = volume.getSize(); @@ -505,8 +498,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { if (StringUtils.isNotEmpty(volume.getVolumeId())) { // volumeID is specified, so not creating additional volumes if (log.isDebugEnabled()) { - log.debug("Volume creation is skipping since a volume ID is specified. [Volume ID] " + - volume.getVolumeId()); + log.debug("Volume creation is skipping since a volume ID is specified. [Volume ID] " + volume.getVolumeId()); } volume.setId(volume.getVolumeId()); } else { @@ -519,6 +511,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { return volume; } + private StringBuilder getPersistencePayload(ClusterContext ctx, Iaas iaas) { StringBuilder persistencePayload = new StringBuilder(); if (isPersistenceMappingAvailable(ctx)) { @@ -581,8 +574,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { log.info(String.format("Member terminated [member-id] %s ", memberId)); } else { log.warn(String.format("Stratos could not terminate the member [member-id] %s. This may due to a issue " + - "in the underlying IaaS, Please terminate the member manually if it is available", - memberId)); + "in the underlying IaaS, Please terminate the member manually if it is available", memberId)); MemberContext memberContext = CloudControllerContext.getInstance().getMemberContextOfMemberId(memberId); CloudControllerServiceUtil.executeMemberTerminationPostProcess(memberContext); } @@ -590,8 +582,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean terminateInstance(String memberId) - throws InvalidMemberException, InvalidCartridgeTypeException, CloudControllerException { + public boolean terminateInstance(String memberId) throws InvalidMemberException, + InvalidCartridgeTypeException, CloudControllerException { try { handleNullObject(memberId, "Could not terminate instance, member id is null."); @@ -605,8 +597,10 @@ public class CloudControllerServiceImpl implements CloudControllerService { if (StringUtils.isBlank(memberContext.getInstanceId())) { if (log.isErrorEnabled()) { - log.error(String.format("Could not terminate instance, instance id is blank: [member-id] %s " + - ", removing member from topology...", memberContext.getMemberId())); + log.error(String.format( + "Could not terminate instance, instance id is blank: [member-id] %s " + + ", removing member from topology...", + memberContext.getMemberId())); } CloudControllerServiceUtil.executeMemberTerminationPostProcess(memberContext); } @@ -614,8 +608,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { // check if status == active, if true, then this is a termination on member faulty TopologyManager.acquireWriteLock(); Topology topology = TopologyManager.getTopology(); - org.apache.stratos.messaging.domain.topology.Service service = - topology.getService(memberContext.getCartridgeType()); + org.apache.stratos.messaging.domain.topology.Service service = topology.getService(memberContext.getCartridgeType()); if (service != null) { Cluster cluster = service.getCluster(memberContext.getClusterId()); @@ -625,8 +618,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { // check if ready to shutdown member is expired and send // member terminated if it is. - if (isMemberExpired(member, memberContext.getObsoleteInitTime(), - memberContext.getObsoleteExpiryTime())) { + if (isMemberExpired(member, memberContext.getObsoleteInitTime(), memberContext.getObsoleteExpiryTime())) { if (log.isInfoEnabled()) { log.info(String.format( "Member pending termination in ReadyToShutdown state exceeded expiry time. " + @@ -682,12 +674,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { @Override public boolean terminateInstances(String clusterId) throws InvalidClusterException { - log.info("Starting to terminate all instances of cluster : " + clusterId); + log.info("Starting to terminate all instances of cluster : " + + clusterId); handleNullObject(clusterId, "Instance termination failed. Cluster id is null."); - List<MemberContext> memberContexts = - CloudControllerContext.getInstance().getMemberContextsOfClusterId(clusterId); + List<MemberContext> memberContexts = CloudControllerContext.getInstance().getMemberContextsOfClusterId(clusterId); if (memberContexts == null) { String msg = "Instance termination failed. No members found for cluster id: " + clusterId; log.warn(msg); @@ -701,7 +693,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean registerService(Registrant registrant) throws CartridgeNotFoundException { + public boolean registerService(Registrant registrant) + throws CartridgeNotFoundException { String cartridgeType = registrant.getCartridgeType(); handleNullObject(cartridgeType, "Service registration failed, cartridge Type is null."); @@ -778,8 +771,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { Cartridge cartridge = CloudControllerContext.getInstance().getCartridge(cartridgeType); if (cartridge == null) { - String msg = String.format( - "Service unregistration failed. No matching cartridge found: [cartridge-type] %s " + + String msg = + String.format("Service unregistration failed. No matching cartridge found: [cartridge-type] %s " + "[application-id] %s", cartridgeType, ctxt.getApplicationId()); log.error(msg); throw new UnregisteredClusterException(msg); @@ -820,9 +813,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { terminateInstance(member.getMemberId()); } catch (Exception e) { // we are not gonna stop the execution due to errors. - log.warn((String.format( - "Instance termination failed of member [member-id] %s " + "[application-id] %s", - member.getMemberId(), ctxt.getApplicationId())), e); + log.warn((String.format("Instance termination failed of member [member-id] %s " + + "[application-id] %s", member.getMemberId(), ctxt.getApplicationId())), e); } } @@ -836,9 +828,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { lock = CloudControllerContext.getInstance().acquireClusterContextWriteLock(); ClusterContext ctxt = CloudControllerContext.getInstance().getClusterContext(clusterId_); if (ctxt == null) { - String msg = String.format( - "Service unregistration failed. Cluster not found: [cluster-id] %s " + - "[application-id] %s ", clusterId_, ctxt.getApplicationId()); + String msg = String.format("Service unregistration failed. Cluster not found: [cluster-id] %s " + + "[application-id] %s ", clusterId_, ctxt.getApplicationId()); log.error(msg); return; } @@ -867,17 +858,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { try { lock = CloudControllerContext.getInstance().acquireCartridgesWriteLock(); - Cartridge cartridge = - CloudControllerContext.getInstance().getCartridge(ctxt.getCartridgeType()); - if (cartridge != null && - CloudControllerContext.getInstance().getIaasProviders(cartridge.getType()) != null && - ctxt.getVolumes() != null) { + Cartridge cartridge = CloudControllerContext.getInstance().getCartridge(ctxt.getCartridgeType()); + if (cartridge != null && CloudControllerContext.getInstance().getIaasProviders(cartridge.getType()) != null && ctxt.getVolumes() != null) { for (Volume volume : ctxt.getVolumes()) { if (volume.getId() != null) { String iaasType = volume.getIaasType(); - Iaas iaas = CloudControllerContext.getInstance() - .getIaasProvider(cartridge.getType(), iaasType) - .getIaas(); + Iaas iaas = CloudControllerContext.getInstance().getIaasProvider(cartridge.getType(), iaasType).getIaas(); if (iaas != null) { try { // delete the volumes if remove on unsubscription is true. @@ -888,8 +874,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } catch (Exception ignore) { if (log.isErrorEnabled()) { log.error((String.format("Error while deleting volume [id] %s " + - "[application-id]", volume.getId(), - ctxt.getApplicationId())), ignore); + "[application-id]", volume.getId(), ctxt.getApplicationId())), + ignore); } } } @@ -917,8 +903,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { public boolean validateDeploymentPolicyNetworkPartition(String cartridgeType, String networkPartitionId) throws InvalidPartitionException, InvalidCartridgeTypeException { - NetworkPartition networkPartition = - CloudControllerContext.getInstance().getNetworkPartition(networkPartitionId); + NetworkPartition networkPartition = CloudControllerContext.getInstance().getNetworkPartition(networkPartitionId); Lock lock = null; try { lock = CloudControllerContext.getInstance().acquireCartridgesWriteLock(); @@ -950,14 +935,15 @@ public class CloudControllerServiceImpl implements CloudControllerService { if (validatedPartitions != null && validatedPartitions.contains(partition.getId())) { // partition cache hit String provider = partition.getProvider(); - IaasProvider iaasProvider = - CloudControllerContext.getInstance().getIaasProvider(cartridge.getType(), provider); + IaasProvider iaasProvider = CloudControllerContext.getInstance() + .getIaasProvider(cartridge.getType(), provider); partitionToIaasProviders.put(partition.getId(), iaasProvider); continue; } Callable<IaasProvider> worker = new PartitionValidatorCallable(partition, cartridge); - Future<IaasProvider> job = CloudControllerContext.getInstance().getExecutorService().submit(worker); + Future<IaasProvider> job = CloudControllerContext.getInstance() + .getExecutorService().submit(worker); jobList.put(partition.getId(), job); } @@ -983,8 +969,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { "[cartridge-type] " + cartridgeType); } } catch (Exception e) { - String message = - "Could not cache partitions against the cartridge: [cartridge-type] " + cartridgeType; + String message = "Could not cache partitions against the cartridge: [cartridge-type] " + cartridgeType; log.error(message, e); throw new InvalidPartitionException(message, e); } @@ -1034,8 +1019,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean updateClusterStatus(String serviceName, String clusterId, String instanceId, - ClusterStatus status) { + public boolean updateClusterStatus(String serviceName, String clusterId, String instanceId, ClusterStatus status) { //TODO return true; } @@ -1048,8 +1032,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean createApplicationClusters(String appId, ApplicationClusterContext[] appClustersContexts) - throws ApplicationClusterRegistrationException { + public boolean createApplicationClusters(String appId, ApplicationClusterContext[] appClustersContexts) throws + ApplicationClusterRegistrationException { if (appClustersContexts == null || appClustersContexts.length == 0) { String errorMsg = "No application cluster information found, unable to create clusters: " + "[application-id] " + appId; @@ -1079,14 +1063,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { for (ClusterPortMapping clusterPortMapping : clusterPortMappings) { try { if (clusterPortMapping.isKubernetes()) { - URL accessUrl = - new URL(clusterPortMapping.getProtocol(), appClusterCtxt.getHostName(), - clusterPortMapping.getKubernetesServicePort(), ""); + URL accessUrl = new URL(clusterPortMapping.getProtocol(), appClusterCtxt.getHostName(), + clusterPortMapping.getKubernetesServicePort(), ""); accessUrlPerCluster.add(accessUrl.toString()); } else { - URL accessUrl = - new URL(clusterPortMapping.getProtocol(), appClusterCtxt.getHostName(), - clusterPortMapping.getProxyPort(), ""); + URL accessUrl = new URL(clusterPortMapping.getProtocol(), appClusterCtxt.getHostName(), + clusterPortMapping.getProxyPort(), ""); accessUrlPerCluster.add(accessUrl.toString()); } } catch (MalformedURLException e) { @@ -1102,10 +1084,10 @@ public class CloudControllerServiceImpl implements CloudControllerService { } for (ApplicationClusterContext appClusterCtxt : appClustersContexts) { - ClusterContext clusterContext = - new ClusterContext(appId, appClusterCtxt.getCartridgeType(), appClusterCtxt.getClusterId(), - appClusterCtxt.getTextPayload(), appClusterCtxt.getHostName(), - appClusterCtxt.isLbCluster(), appClusterCtxt.getProperties()); + ClusterContext clusterContext = new ClusterContext( + appId, appClusterCtxt.getCartridgeType(), appClusterCtxt.getClusterId(), + appClusterCtxt.getTextPayload(), appClusterCtxt.getHostName(), + appClusterCtxt.isLbCluster(), appClusterCtxt.getProperties()); if (appClusterCtxt.isVolumeRequired()) { clusterContext.setVolumeRequired(true); @@ -1115,8 +1097,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { // Create cluster object Cluster cluster = new Cluster(appClusterCtxt.getCartridgeType(), appClusterCtxt.getClusterId(), - appClusterCtxt.getDeploymentPolicyName(), - appClusterCtxt.getAutoscalePolicyName(), appId); + appClusterCtxt.getDeploymentPolicyName(), appClusterCtxt.getAutoscalePolicyName(), appId); cluster.setLbCluster(false); cluster.setTenantRange(appClusterCtxt.getTenantRange()); cluster.setHostNames(Arrays.asList(appClusterCtxt.getHostName())); @@ -1139,14 +1120,14 @@ public class CloudControllerServiceImpl implements CloudControllerService { return true; } - public boolean createClusterInstance(String serviceType, String clusterId, String alias, String instanceId, - String partitionId, String networkPartitionId) - throws ClusterInstanceCreationException { + public boolean createClusterInstance(String serviceType, String clusterId, + String alias, String instanceId, String partitionId, + String networkPartitionId) throws ClusterInstanceCreationException { Lock lock = null; try { lock = CloudControllerContext.getInstance().acquireClusterContextWriteLock(); - TopologyBuilder.handleClusterInstanceCreated(serviceType, clusterId, alias, instanceId, partitionId, - networkPartitionId); + TopologyBuilder.handleClusterInstanceCreated(serviceType, clusterId, alias, + instanceId, partitionId, networkPartitionId); CloudControllerContext.getInstance().persist(); } finally { @@ -1163,26 +1144,27 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public KubernetesCluster getKubernetesCluster(String kubernetesClusterId) - throws NonExistingKubernetesClusterException { + public KubernetesCluster getKubernetesCluster(String kubernetesClusterId) throws + NonExistingKubernetesClusterException { return CloudControllerContext.getInstance().getKubernetesCluster(kubernetesClusterId); } @Override - public KubernetesMaster getMasterForKubernetesCluster(String kubernetesClusterId) - throws NonExistingKubernetesClusterException { + public KubernetesMaster getMasterForKubernetesCluster(String kubernetesClusterId) throws + NonExistingKubernetesClusterException { return CloudControllerContext.getInstance().getKubernetesMasterInGroup(kubernetesClusterId); } @Override - public KubernetesHost[] getHostsForKubernetesCluster(String kubernetesClusterId) - throws NonExistingKubernetesClusterException { + public KubernetesHost[] getHostsForKubernetesCluster(String kubernetesClusterId) throws + NonExistingKubernetesClusterException { return CloudControllerContext.getInstance().getKubernetesHostsInGroup(kubernetesClusterId); } + @Override - public boolean addKubernetesCluster(KubernetesCluster kubernetesCluster) - throws InvalidKubernetesClusterException, KubernetesClusterAlreadyExistsException { + public boolean addKubernetesCluster(KubernetesCluster kubernetesCluster) throws InvalidKubernetesClusterException, + KubernetesClusterAlreadyExistsException { if (kubernetesCluster == null) { throw new InvalidKubernetesClusterException("Kubernetes cluster cannot be null"); } @@ -1222,8 +1204,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean updateKubernetesCluster(KubernetesCluster kubernetesCluster) - throws InvalidKubernetesClusterException { + public boolean updateKubernetesCluster(KubernetesCluster kubernetesCluster) throws InvalidKubernetesClusterException { if (kubernetesCluster == null) { throw new InvalidKubernetesClusterException("Kubernetes cluster cannot be null"); } @@ -1256,8 +1237,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean addKubernetesHost(String kubernetesClusterId, KubernetesHost kubernetesHost) - throws InvalidKubernetesHostException, NonExistingKubernetesClusterException { + public boolean addKubernetesHost(String kubernetesClusterId, KubernetesHost kubernetesHost) throws + InvalidKubernetesHostException, NonExistingKubernetesClusterException { if (kubernetesHost == null) { throw new InvalidKubernetesHostException("Kubernetes host cannot be null"); } @@ -1270,9 +1251,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { lock = CloudControllerContext.getInstance().acquireKubernetesClusterWriteLock(); if (log.isInfoEnabled()) { - log.info(String.format( - "Adding kubernetes host for kubernetes cluster: [kubernetes-cluster-id] %s " + "[hostname] %s", - kubernetesClusterId, kubernetesHost.getHostname())); + log.info(String.format("Adding kubernetes host for kubernetes cluster: [kubernetes-cluster-id] %s " + + "[hostname] %s", kubernetesClusterId, kubernetesHost.getHostname())); } CloudControllerUtil.validateKubernetesHost(kubernetesHost); @@ -1283,23 +1263,21 @@ public class CloudControllerServiceImpl implements CloudControllerService { kubernetesHostArrayList = new ArrayList<KubernetesHost>(); } else { if (CloudControllerContext.getInstance().kubernetesHostExists(kubernetesHost.getHostId())) { - throw new InvalidKubernetesHostException( - "Kubernetes host already exists: [hostname] " + kubernetesHost.getHostId()); + throw new InvalidKubernetesHostException("Kubernetes host already exists: [hostname] " + + kubernetesHost.getHostId()); } - kubernetesHostArrayList = - new ArrayList<KubernetesHost>(Arrays.asList(kubernetesCluster.getKubernetesHosts())); + kubernetesHostArrayList = new + ArrayList<KubernetesHost>(Arrays.asList(kubernetesCluster.getKubernetesHosts())); } kubernetesHostArrayList.add(kubernetesHost); // Update information model - kubernetesCluster.setKubernetesHosts( - kubernetesHostArrayList.toArray(new KubernetesHost[kubernetesHostArrayList.size()])); + kubernetesCluster.setKubernetesHosts(kubernetesHostArrayList.toArray(new KubernetesHost[kubernetesHostArrayList.size()])); CloudControllerContext.getInstance().updateKubernetesCluster(kubernetesCluster); CloudControllerContext.getInstance().persist(); if (log.isInfoEnabled()) { - log.info( - String.format("Kubernetes host added successfully: [id] %s", kubernetesCluster.getClusterId())); + log.info(String.format("Kubernetes host added successfully: [id] %s", kubernetesCluster.getClusterId())); } return true; @@ -1313,8 +1291,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean removeKubernetesCluster(String kubernetesClusterId) - throws NonExistingKubernetesClusterException { + public boolean removeKubernetesCluster(String kubernetesClusterId) throws NonExistingKubernetesClusterException { if (StringUtils.isEmpty(kubernetesClusterId)) { throw new NonExistingKubernetesClusterException("Kubernetes cluster id cannot be empty"); } @@ -1357,13 +1334,11 @@ public class CloudControllerServiceImpl implements CloudControllerService { log.info("Removing Kubernetes Host: " + kubernetesHostId); } try { - KubernetesCluster kubernetesClusterStored = - CloudControllerContext.getInstance().getKubernetesClusterContainingHost(kubernetesHostId); + KubernetesCluster kubernetesClusterStored = CloudControllerContext.getInstance().getKubernetesClusterContainingHost(kubernetesHostId); // Kubernetes master cannot be removed if (kubernetesClusterStored.getKubernetesMaster().getHostId().equals(kubernetesHostId)) { - throw new NonExistingKubernetesHostException( - "Kubernetes master is not allowed to be removed [id] " + kubernetesHostId); + throw new NonExistingKubernetesHostException("Kubernetes master is not allowed to be removed [id] " + kubernetesHostId); } List<KubernetesHost> kubernetesHostList = new ArrayList<KubernetesHost>(); @@ -1374,8 +1349,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } // member count will be equal only when host object was not found if (kubernetesHostList.size() == kubernetesClusterStored.getKubernetesHosts().length) { - throw new NonExistingKubernetesHostException( - "Kubernetes host not found for [id] " + kubernetesHostId); + throw new NonExistingKubernetesHostException("Kubernetes host not found for [id] " + kubernetesHostId); } KubernetesHost[] kubernetesHostsArray = new KubernetesHost[kubernetesHostList.size()]; kubernetesHostList.toArray(kubernetesHostsArray); @@ -1411,9 +1385,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { log.info("Updating Kubernetes master: " + kubernetesMaster); } try { - KubernetesCluster kubernetesClusterStored = CloudControllerContext.getInstance() - .getKubernetesClusterContainingHost( - kubernetesMaster.getHostId()); + KubernetesCluster kubernetesClusterStored = CloudControllerContext.getInstance().getKubernetesClusterContainingHost(kubernetesMaster.getHostId()); // Update information model kubernetesClusterStored.setKubernetesMaster(kubernetesMaster); @@ -1421,8 +1393,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { CloudControllerContext.getInstance().persist(); if (log.isInfoEnabled()) { - log.info(String.format("Kubernetes master updated successfully: [id] %s", - kubernetesMaster.getHostId())); + log.info(String.format("Kubernetes master updated successfully: [id] %s", kubernetesMaster.getHostId())); } return true; @@ -1437,8 +1408,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean updateKubernetesHost(KubernetesHost kubernetesHost) - throws InvalidKubernetesHostException, NonExistingKubernetesHostException { + public boolean updateKubernetesHost(KubernetesHost kubernetesHost) throws + InvalidKubernetesHostException, NonExistingKubernetesHostException { Lock lock = null; try { @@ -1449,9 +1420,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } try { - KubernetesCluster kubernetesClusterStored = CloudControllerContext.getInstance() - .getKubernetesClusterContainingHost( - kubernetesHost.getHostId()); + KubernetesCluster kubernetesClusterStored = CloudControllerContext.getInstance().getKubernetesClusterContainingHost(kubernetesHost.getHostId()); KubernetesHost[] kubernetesHosts = kubernetesClusterStored.getKubernetesHosts(); for (int i = 0; i < kubernetesHosts.length; i++) { if (kubernetesHosts[i].getHostId().equals(kubernetesHost.getHostId())) { @@ -1459,8 +1428,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { kubernetesHosts[i] = kubernetesHost; if (log.isInfoEnabled()) { - log.info(String.format("Kubernetes host updated successfully: [id] %s", - kubernetesHost.getHostId())); + log.info(String.format("Kubernetes host updated successfully: [id] %s", kubernetesHost.getHostId())); } CloudControllerContext.getInstance().updateKubernetesCluster(kubernetesClusterStored); @@ -1480,8 +1448,9 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean addNetworkPartition(NetworkPartition networkPartition) - throws NetworkPartitionAlreadyExistsException, InvalidNetworkPartitionException { + public boolean addNetworkPartition(NetworkPartition networkPartition) throws + NetworkPartitionAlreadyExistsException, + InvalidNetworkPartitionException { handleNullObject(networkPartition, "Network Partition is null"); handleNullObject(networkPartition.getId(), "Network Partition ID is null"); @@ -1510,22 +1479,20 @@ public class CloudControllerServiceImpl implements CloudControllerService { validatePartition(partition); } catch (InvalidPartitionException e) { //Following message is shown to the end user in all the the API clients(GUI/CLI/Rest API) - throw new InvalidNetworkPartitionException(String.format( - "Network partition " + " %s, is invalid since the partition %s is invalid", + throw new InvalidNetworkPartitionException(String.format("Network partition " + + " %s, is invalid since the partition %s is invalid", networkPartition.getId(), partition.getId()), e); } if (log.isInfoEnabled()) { - log.info(String.format( - "Partition validated successfully: [network-partition-id] %s " + "[partition-id] %s", - networkPartition.getId(), partition.getId())); + log.info(String.format("Partition validated successfully: [network-partition-id] %s " + + "[partition-id] %s", networkPartition.getId(), partition.getId())); } } } } else { //Following message is shown to the end user in all the the API clients(GUI/CLI/Rest API) - throw new InvalidNetworkPartitionException( - String.format("Network partition: " + "%s doesn't not have any partitions ", - networkPartition.getId())); + throw new InvalidNetworkPartitionException(String.format("Network partition: " + + "%s doesn't not have any partitions ", networkPartition.getId())); } // adding network partition to CC-Context @@ -1540,8 +1507,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean removeNetworkPartition(String networkPartitionId) - throws NetworkPartitionNotExistsException { + public boolean removeNetworkPartition(String networkPartitionId) throws NetworkPartitionNotExistsException { try { if (log.isInfoEnabled()) { @@ -1571,15 +1537,13 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public boolean updateNetworkPartition(NetworkPartition networkPartition) - throws NetworkPartitionNotExistsException { + public boolean updateNetworkPartition(NetworkPartition networkPartition) throws NetworkPartitionNotExistsException { try { handleNullObject(networkPartition, "Network Partition is null"); handleNullObject(networkPartition.getId(), "Network Partition ID is null"); if (log.isInfoEnabled()) { - log.info(String.format("Updating network partition: [network-partition-id] %s", - networkPartition.getId())); + log.info(String.format("Updating network partition: [network-partition-id] %s", networkPartition.getId())); } String networkPartitionID = networkPartition.getId(); @@ -1640,8 +1604,8 @@ public class CloudControllerServiceImpl implements CloudControllerService { try { return CloudControllerContext.getInstance().getNetworkPartition(networkPartitionId); } catch (Exception e) { - String message = - String.format("Could not get network partition: [network-partition-id] %s", networkPartitionId); + String message = String.format("Could not get network partition: [network-partition-id] %s", + networkPartitionId); log.error(message); throw new CloudControllerException(message, e); }
http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java index 3c6716c..37580eb 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java @@ -62,20 +62,21 @@ public class CloudControllerServiceUtil { String partitionId = memberContext.getPartition() == null ? null : memberContext.getPartition().getId(); // Update the topology - TopologyBuilder.handleMemberTerminated(memberContext.getCartridgeType(), memberContext.getClusterId(), - memberContext.getNetworkPartitionId(), partitionId, - memberContext.getMemberId()); + TopologyBuilder.handleMemberTerminated(memberContext.getCartridgeType(), + memberContext.getClusterId(), memberContext.getNetworkPartitionId(), + partitionId, memberContext.getMemberId()); - Long timeStamp = System.currentTimeMillis(); // Publish statistics to BAM - BAMUsageDataPublisher.publish(memberContext.getMemberId(), partitionId, memberContext.getNetworkPartitionId(), - memberContext.getClusterId(), memberContext.getClusterInstanceId(), - memberContext.getCartridgeType(), MemberStatus.Terminated.toString(), timeStamp, - null, null, null); + BAMUsageDataPublisher.publish(memberContext.getMemberId(), + partitionId, + memberContext.getNetworkPartitionId(), + memberContext.getClusterId(), + memberContext.getCartridgeType(), + MemberStatus.Terminated.toString(), + null); // Remove member context - CloudControllerContext.getInstance() - .removeMemberContext(memberContext.getClusterId(), memberContext.getMemberId()); + CloudControllerContext.getInstance().removeMemberContext(memberContext.getClusterId(), memberContext.getMemberId()); // Persist cloud controller context CloudControllerContext.getInstance().persist(); @@ -86,8 +87,7 @@ public class CloudControllerServiceUtil { return isValid; } - public static IaasProvider validatePartitionAndGetIaasProvider(Partition partition, IaasProvider iaasProvider) - throws InvalidPartitionException { + public static IaasProvider validatePartitionAndGetIaasProvider(Partition partition, IaasProvider iaasProvider) throws InvalidPartitionException { if (iaasProvider != null) { // if this is a IaaS based partition Iaas iaas = iaasProvider.getIaas(); @@ -104,8 +104,7 @@ public class CloudControllerServiceUtil { } } - public static boolean validatePartition(Partition partition, IaasProvider iaasProvider) - throws InvalidPartitionException { + public static boolean validatePartition(Partition partition, IaasProvider iaasProvider) throws InvalidPartitionException { validatePartitionAndGetIaasProvider(partition, iaasProvider); return true; } http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java index 35c8bb1..77cfea2 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java @@ -27,6 +27,8 @@ import org.apache.stratos.cloud.controller.domain.*; import org.apache.stratos.cloud.controller.exception.CartridgeNotFoundException; import org.apache.stratos.cloud.controller.iaases.Iaas; import org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder; +import org.apache.stratos.cloud.controller.statistics.publisher.BAMUsageDataPublisher; +import org.apache.stratos.messaging.domain.topology.MemberStatus; import java.util.concurrent.locks.Lock; @@ -83,6 +85,15 @@ public class InstanceCreator implements Runnable { // Update topology TopologyBuilder.handleMemberInitializedEvent(memberContext); + // Publish instance creation statistics to BAM + BAMUsageDataPublisher.publish( + memberContext.getMemberId(), + memberContext.getPartition().getId(), + memberContext.getNetworkPartitionId(), + memberContext.getClusterId(), + memberContext.getCartridgeType(), + MemberStatus.Initialized.toString(), + memberContext.getInstanceMetadata()); } catch (Exception e) { String message = String.format("Could not start instance: [cartridge-type] %s [cluster-id] %s", memberContext.getCartridgeType(), memberContext.getClusterId()); http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java index 675de25..d5aabbd 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java @@ -52,9 +52,13 @@ public class BAMUsageDataPublisher { private static StreamDefinition streamDefinition; private static final String cloudControllerEventStreamVersion = "1.0.0"; - public static void publish(String memberId, String partitionId, String networkId, String clusterId, - String clusterInstanceId, String serviceName, String status, Long timeStamp, - String autoscalingReason, Long scalingTime, InstanceMetadata metadata) { + public static void publish(String memberId, + String partitionId, + String networkId, + String clusterId, + String serviceName, + String status, + InstanceMetadata metadata) { if (!CloudControllerConfig.getInstance().isBAMDataPublisherEnabled()) { return; } @@ -75,24 +79,16 @@ public class BAMUsageDataPublisher { MemberContext memberContext = CloudControllerContext.getInstance().getMemberContextOfMemberId(memberId); String cartridgeType = memberContext.getCartridgeType(); Cartridge cartridge = CloudControllerContext.getInstance().getCartridge(cartridgeType); - String instanceType = - CloudControllerContext.getInstance().getIaasProviderOfPartition(cartridgeType, partitionId) - .getProperty(CloudControllerConstants.INSTANCE_TYPE); //Construct the data to be published List<Object> payload = new ArrayList<Object>(); // Payload values - payload.add(timeStamp); payload.add(memberId); payload.add(serviceName); payload.add(clusterId); - payload.add(clusterInstanceId); payload.add(handleNull(memberContext.getLbClusterId())); payload.add(handleNull(partitionId)); payload.add(handleNull(networkId)); - payload.add(handleNull(instanceType)); - payload.add(handleNull(autoscalingReason)); - payload.add(handleNull(scalingTime)); if (cartridge != null) { payload.add(handleNull(String.valueOf(cartridge.isMultiTenant()))); } else { @@ -133,14 +129,12 @@ public class BAMUsageDataPublisher { try { if (log.isDebugEnabled()) { - log.debug(String.format("Publishing BAM event: [stream] %s [version] %s", streamDefinition.getName(), - streamDefinition.getVersion())); + log.debug(String.format("Publishing BAM event: [stream] %s [version] %s", streamDefinition.getName(), streamDefinition.getVersion())); } dataPublisher.publish(streamDefinition.getName(), streamDefinition.getVersion(), event); } catch (AgentException e) { if (log.isErrorEnabled()) { - log.error(String.format("Could not publish BAM event: [stream] %s [version] %s", - streamDefinition.getName(), streamDefinition.getVersion()), e); + log.error(String.format("Could not publish BAM event: [stream] %s [version] %s", streamDefinition.getName(), streamDefinition.getVersion()), e); } } } @@ -150,23 +144,19 @@ public class BAMUsageDataPublisher { } private static StreamDefinition initializeStream() throws Exception { - streamDefinition = new StreamDefinition(CloudControllerConstants.CLOUD_CONTROLLER_EVENT_STREAM, + streamDefinition = new StreamDefinition( + CloudControllerConstants.CLOUD_CONTROLLER_EVENT_STREAM, cloudControllerEventStreamVersion); streamDefinition.setNickName("cloud.controller"); streamDefinition.setDescription("Instances booted up by the Cloud Controller"); // Payload definition List<Attribute> payloadData = new ArrayList<Attribute>(); - payloadData.add(new Attribute(CloudControllerConstants.TIME_STAMP, AttributeType.LONG)); payloadData.add(new Attribute(CloudControllerConstants.MEMBER_ID_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.CARTRIDGE_TYPE_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.CLUSTER_ID_COL, AttributeType.STRING)); - payloadData.add(new Attribute(CloudControllerConstants.CLUSTER_INSTANCE_ID_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.LB_CLUSTER_ID_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.PARTITION_ID_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.NETWORK_ID_COL, AttributeType.STRING)); - payloadData.add(new Attribute(CloudControllerConstants.INSTANCE_TYPE, AttributeType.STRING)); - payloadData.add(new Attribute(CloudControllerConstants.SCALING_REASON, AttributeType.STRING)); - payloadData.add(new Attribute(CloudControllerConstants.SCALING_TIME, AttributeType.LONG)); payloadData.add(new Attribute(CloudControllerConstants.IS_MULTI_TENANT_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.IAAS_COL, AttributeType.STRING)); payloadData.add(new Attribute(CloudControllerConstants.STATUS_COL, AttributeType.STRING)); @@ -186,6 +176,7 @@ public class BAMUsageDataPublisher { return streamDefinition; } + private static void createDataPublisher() { //creating the agent @@ -199,6 +190,7 @@ public class BAMUsageDataPublisher { System.setProperty("javax.net.ssl.trustStore", trustStorePath); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); + try { dataPublisher = new AsyncDataPublisher("tcp://" + bamServerUrl + "", adminUsername, adminPassword); CloudControllerContext.getInstance().setDataPublisher(dataPublisher); @@ -218,11 +210,4 @@ public class BAMUsageDataPublisher { } return val; } - - private static Long handleNull(Long val) { - if (val == null) { - return -1L; - } - return val; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java index 41dd8f0..5e6115f 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java @@ -93,7 +93,8 @@ public final class CloudControllerConstants { public static final String USER_NAME_ELEMENT = "userName"; public static final String PASSWORD_ELEMENT = "password"; public static final String CLOUD_CONTROLLER_EVENT_STREAM = "org.apache.stratos.cloud.controller"; - public static final String CLOUD_CONTROLLER_COL_FAMILY = CLOUD_CONTROLLER_EVENT_STREAM.replaceAll("[/.]", "_"); + public static final String CLOUD_CONTROLLER_COL_FAMILY = CLOUD_CONTROLLER_EVENT_STREAM + .replaceAll("[/.]", "_"); /** * column names @@ -102,7 +103,6 @@ public final class CloudControllerConstants { public static final String MEMBER_ID_COL = "memberId"; public static final String CARTRIDGE_TYPE_COL = "cartridgeType"; public static final String CLUSTER_ID_COL = "clusterId"; - public static final String CLUSTER_INSTANCE_ID_COL = "clusterInstanceId"; public static final String PARTITION_ID_COL = "partitionId"; public static final String NETWORK_ID_COL = "networkId"; public static final String ALIAS_COL = "alias"; @@ -122,9 +122,6 @@ public final class CloudControllerConstants { public static final String PRIV_IP_COL = "privateIPAddresses"; public static final String PUB_IP_COL = "publicIPAddresses"; public static final String ALLOCATE_IP_COL = "allocateIPAddresses"; - public static final String TIME_STAMP = "timeStamp"; - public static final String SCALING_REASON = "scalingReason"; - public static final String SCALING_TIME = "scalingTime"; /** * Properties @@ -150,44 +147,66 @@ public final class CloudControllerConstants { /** * XPath expressions */ - public static final String IAAS_PROVIDER_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT; - public static final String PARTITION_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + PARTITIONS_ELEMENT + "/" + PARTITION_ELEMENT; - public static final String REGION_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + - REGION_ELEMENT; - public static final String ZONE_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + - REGION_ELEMENT + "/" + ZONE_ELEMENT; - public static final String HOST_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + - REGION_ELEMENT + "/" + ZONE_ELEMENT + "/" + HOST_ELEMENT; + public static final String IAAS_PROVIDER_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/" + + IAAS_PROVIDER_ELEMENT; + public static final String PARTITION_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + + "/" + PARTITIONS_ELEMENT + "/" + PARTITION_ELEMENT; + public static final String REGION_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + + REGION_ELEMENT; + public static final String ZONE_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + + REGION_ELEMENT + "/" + ZONE_ELEMENT; + public static final String HOST_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" + + REGION_ELEMENT + "/" + ZONE_ELEMENT + "/" + HOST_ELEMENT; public static final String PROPERTY_ELEMENT_XPATH = "/" + PROPERTY_ELEMENT; public static final String IMAGE_ID_ELEMENT_XPATH = "/" + IMAGE_ID_ELEMENT; - public static final String SCALE_UP_ORDER_ELEMENT_XPATH = "/" + SCALE_UP_ORDER_ELEMENT; - public static final String SCALE_DOWN_ORDER_ELEMENT_XPATH = "/" + SCALE_DOWN_ORDER_ELEMENT; + public static final String SCALE_UP_ORDER_ELEMENT_XPATH = "/" + + SCALE_UP_ORDER_ELEMENT; + public static final String SCALE_DOWN_ORDER_ELEMENT_XPATH = "/" + + SCALE_DOWN_ORDER_ELEMENT; public static final String PROVIDER_ELEMENT_XPATH = "/" + PROPERTY_ELEMENT; public static final String IDENTITY_ELEMENT_XPATH = "/" + IDENTITY_ELEMENT; - public static final String CREDENTIAL_ELEMENT_XPATH = "/" + CREDENTIAL_ELEMENT; - public static final String SERVICES_ELEMENT_XPATH = "/" + SERVICES_ELEMENT + "/" + SERVICE_ELEMENT; + public static final String CREDENTIAL_ELEMENT_XPATH = "/" + + CREDENTIAL_ELEMENT; + public static final String SERVICES_ELEMENT_XPATH = "/" + SERVICES_ELEMENT + + "/" + SERVICE_ELEMENT; public static final String SERVICE_ELEMENT_XPATH = "/" + SERVICE_ELEMENT; - public static final String CARTRIDGE_ELEMENT_XPATH = "/" + CARTRIDGE_ELEMENT; + public static final String CARTRIDGE_ELEMENT_XPATH = "/" + + CARTRIDGE_ELEMENT; public static final String PAYLOAD_ELEMENT_XPATH = "/" + PAYLOAD_ELEMENT; public static final String HOST_ELEMENT_XPATH = "/" + HOST_ELEMENT; - public static final String CARTRIDGES_ELEMENT_XPATH = "/" + CARTRIDGES_ELEMENT + "/" + CARTRIDGE_ELEMENT; - public static final String IAAS_PROVIDER_ELEMENT_XPATH = "/" + IAAS_PROVIDER_ELEMENT; - public static final String DEPLOYMENT_ELEMENT_XPATH = "/" + DEPLOYMENT_ELEMENT; - public static final String PORT_MAPPING_ELEMENT_XPATH = "/" + PORT_MAPPING_ELEMENT; - public static final String APP_TYPES_ELEMENT_XPATH = "/" + APP_TYPES_ELEMENT; + public static final String CARTRIDGES_ELEMENT_XPATH = "/" + + CARTRIDGES_ELEMENT + "/" + CARTRIDGE_ELEMENT; + public static final String IAAS_PROVIDER_ELEMENT_XPATH = "/" + + IAAS_PROVIDER_ELEMENT; + public static final String DEPLOYMENT_ELEMENT_XPATH = "/" + + DEPLOYMENT_ELEMENT; + public static final String PORT_MAPPING_ELEMENT_XPATH = "/" + + PORT_MAPPING_ELEMENT; + public static final String APP_TYPES_ELEMENT_XPATH = "/" + + APP_TYPES_ELEMENT; - public static final String DATA_PUBLISHER_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + "/" + DATA_PUBLISHER_ELEMENT; - public static final String TOPOLOGY_SYNC_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + "/" + TOPOLOGY_SYNC_ELEMENT; - public static final String DATA_PUBLISHER_CRON_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT + "/" + CRON_ELEMENT; - public static final String BAM_SERVER_ADMIN_USERNAME_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + BAM_SERVER_ADMIN_USERNAME_ELEMENT; - public static final String BAM_SERVER_ADMIN_PASSWORD_XPATH = - "/" + CLOUD_CONTROLLER_ELEMENT + "/" + BAM_SERVER_ADMIN_PASSWORD_ELEMENT; + public static final String DATA_PUBLISHER_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + DATA_PUBLISHER_ELEMENT; + public static final String TOPOLOGY_SYNC_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + TOPOLOGY_SYNC_ELEMENT; + public static final String DATA_PUBLISHER_CRON_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + CRON_ELEMENT; + public static final String BAM_SERVER_ADMIN_USERNAME_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + + BAM_SERVER_ADMIN_USERNAME_ELEMENT; + public static final String BAM_SERVER_ADMIN_PASSWORD_XPATH = "/" + + CLOUD_CONTROLLER_ELEMENT + "/" + + BAM_SERVER_ADMIN_PASSWORD_ELEMENT; + // public static final String CASSANDRA_HOST_ADDRESS_XPATH = + // "/"+CLOUD_CONTROLLER_ELEMENT+ + // "/"+CASSANDRA_HOST_ADDRESS; + // public static final String CASSANDRA_HOST_PORT_XPATH = + // "/"+CLOUD_CONTROLLER_ELEMENT+ + // "/"+CASSANDRA_HOST_PORT; /** * Secret Manager related aliases. @@ -220,19 +239,20 @@ public final class CloudControllerConstants { /** * Directories */ - public static final String SERVICES_DIR = - CarbonUtils.getCarbonRepository() + File.separator + "services" + File.separator; + public static final String SERVICES_DIR = CarbonUtils.getCarbonRepository() + + File.separator + "services" + File.separator; /** * Topology sync related constants */ - public static final String TOPOLOGY_FILE_PATH = - CarbonUtils.getCarbonConfigDirPath() + File.separator + "service-topology.conf"; + public static final String TOPOLOGY_FILE_PATH = CarbonUtils + .getCarbonConfigDirPath() + + File.separator + + "service-topology.conf"; public static final String TOPOLOGY_SYNC_CRON = "1 * * * * ? *"; public static final String TOPOLOGY_SYNC_TASK_NAME = "TOPOLOGY_SYNC_TASK"; public static final String TOPOLOGY_SYNC_TASK_TYPE = "TOPOLOGY_SYNC_TASK_TYPE"; - public static final String AMQP_CONNECTION_URL = - "amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'"; + public static final String AMQP_CONNECTION_URL = "amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'"; public static final String AMQP_INITIAL_CONTEXT_FACTORY = "org.wso2.andes.jndi.PropertiesFileInitialContextFactory"; public static final String AMQP_TOPIC_CONNECTION_FACTORY = "qpidConnectionfactory"; http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java index 669a96a..1275f5c 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java @@ -18,6 +18,7 @@ */ package org.apache.stratos.common.constants; + public class StratosConstants { public static final String CLOUD_SERVICE_IS_ACTIVE_PROP_KEY = "active"; @@ -25,7 +26,8 @@ public class StratosConstants { public static final String CLOUD_SERVICE_INFO_STORE_PATH = "/repository/components/org.apache.stratos/cloud-manager/cloud-services"; - public static final String TENANT_USER_VALIDATION_STORE_PATH = "/repository/components/org.wso2.carbon.validations"; + public static final String TENANT_USER_VALIDATION_STORE_PATH = + "/repository/components/org.wso2.carbon.validations"; public static final String ADMIN_EMAIL_VERIFICATION_FLAG_PATH = "/repository/components/org.wso2.carbon.email-confirmation-flag"; public static final String TENANT_DOMAIN_VERIFICATION_FLAG_PATH = @@ -37,18 +39,23 @@ public class StratosConstants { public static final String TENANT_CREATION_THEME_PAGE_TOKEN = "/repository/components/org.wso2.carbon.theme-page-token"; - public static final String TENANT_PACKAGE_INFO_PATH = "/repository/components/org.wso2.carbon.package-info"; + public static final String TENANT_PACKAGE_INFO_PATH = + "/repository/components/org.wso2.carbon.package-info"; - public static final String ALL_THEMES_PATH = "/repository/components/org.wso2.carbon.all-themes"; + public static final String ALL_THEMES_PATH = + "/repository/components/org.wso2.carbon.all-themes"; - public static final String THROTTLING_RULES_PATH = "/repository/components/org.wso2.carbon.throttling-rules"; + public static final String THROTTLING_RULES_PATH = + "/repository/components/org.wso2.carbon.throttling-rules"; - public static final String ORIGINATED_SERVICE_PATH = "/repository/components/org.wso2.carbon.originated-service"; + public static final String ORIGINATED_SERVICE_PATH = + "/repository/components/org.wso2.carbon.originated-service"; public static final String PATH_SEPARATOR = "/"; public static final String CLOUD_SERVICE_ICONS_STORE_PATH = - "/repository/components/org.wso2.carbon.cloud-manager/" + "cloud-services-icons"; + "/repository/components/org.wso2.carbon.cloud-manager/" + + "cloud-services-icons"; public static final String VALIDATION_KEY_RESOURCE_NAME = "validation-key"; public static final String INCOMING_PATH_DIR = "incoming"; @@ -84,8 +91,7 @@ public class StratosConstants { // metering constants public static final String THROTTLING_ALL_ACTION = "all_actions"; - public static final String THROTTLING_IN_DATA_ACTION = "in_data_action"; - //this covers registry capacity + registry bandwidth + public static final String THROTTLING_IN_DATA_ACTION = "in_data_action"; //this covers registry capacity + registry bandwidth public static final String THROTTLING_OUT_DATA_ACTION = "out_data_action"; //this covers registry bandwidth public static final String THROTTLING_ADD_USER_ACTION = "add_user_action"; public static final String THROTTLING_SERVICE_IN_BANDWIDTH_ACTION = "service_in_bandwith_action"; @@ -123,8 +129,10 @@ public class StratosConstants { " for privacy policy of WSO2 Stratos."; // Web location of Terms of Usage and privacy policy - public static final String STRATOS_TERMS_OF_USAGE = "http://wso2.com/cloud/services/terms-of-use/"; - public static final String STRATOS_PRIVACY_POLICY = "http://wso2.com/cloud/services/privacy-policy/"; + public static final String STRATOS_TERMS_OF_USAGE = + "http://wso2.com/cloud/services/terms-of-use/"; + public static final String STRATOS_PRIVACY_POLICY = + "http://wso2.com/cloud/services/privacy-policy/"; public static final String MULTITENANCY_FREE_PLAN = "Demo"; public static final String MULTITENANCY_SMALL_PLAN = "SMB"; public static final String MULTITENANCY_MEDIUM_PLAN = "Professional"; @@ -150,8 +158,6 @@ public class StratosConstants { public static final String MAX_CHECK_DROOL_FILE = "maxcheck.drl"; public static final String OBSOLETE_CHECK_DROOL_FILE = "obsoletecheck.drl"; public static final String MIN_COUNT = "MIN_COUNT"; - public static final String SCALING_REASON = "SCALING_REASON"; - public static final String SCALING_TIME = "SCALING_TIME"; // Policy and definition related constants public static final int PUBLIC_DEFINITION = 0; @@ -159,8 +165,7 @@ public class StratosConstants { // member expiry timeout constants public static final String PENDING_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.pendingMemberExpiryTimeout"; public static final String OBSOLETED_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.obsoletedMemberExpiryTimeout"; - public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = - "autoscaler.member.pendingTerminationMemberExpiryTimeout"; + public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.pendingTerminationMemberExpiryTimeout"; public static final String FILTER_VALUE_SEPARATOR = ","; public static final String TOPOLOGY_APPLICATION_FILTER = "stratos.topology.application.filter"; http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py index e44059f..ed64f6e 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py @@ -508,6 +508,7 @@ class EventHandler: try: if self.__extension_executor is not None: self.__log.debug("Executing extension for event [%s]" % event) + PluginExecutor(self.__extension_executor, extension_values).start() extension_thread = PluginExecutor(self.__extension_executor, extension_values) extension_thread.start() http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/healthstatspublisher/healthstats.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/healthstatspublisher/healthstats.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/healthstatspublisher/healthstats.py index 855f732..9753c3e 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/healthstatspublisher/healthstats.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/healthstatspublisher/healthstats.py @@ -17,7 +17,7 @@ from threading import Thread import multiprocessing -import time + import psutil from abstracthealthstatisticspublisher import * @@ -124,8 +124,6 @@ class HealthStatisticsPublisher: stream_def.description = HealthStatisticsPublisherManager.STREAM_DESCRIPTION # stream_def.add_payloaddata_attribute() - - #stream_def.add_payloaddata_attribute("time_stamp", StreamDefinition.LONG) stream_def.add_payloaddata_attribute("cluster_id", StreamDefinition.STRING) stream_def.add_payloaddata_attribute("cluster_instance_id", StreamDefinition.STRING) stream_def.add_payloaddata_attribute("network_partition_id", StreamDefinition.STRING) @@ -143,7 +141,6 @@ class HealthStatisticsPublisher: """ event = ThriftEvent() - #event.payloadData.append(int(round(time.time() * 1000))) event.payloadData.append(self.cartridge_agent_config.cluster_id) event.payloadData.append(self.cartridge_agent_config.cluster_instance_id) event.payloadData.append(self.cartridge_agent_config.network_partition_id) @@ -162,7 +159,6 @@ class HealthStatisticsPublisher: """ event = ThriftEvent() - #event.payloadData.append(int(round(time.time() * 1000))) event.payloadData.append(self.cartridge_agent_config.cluster_id) event.payloadData.append(self.cartridge_agent_config.cluster_instance_id) event.payloadData.append(self.cartridge_agent_config.network_partition_id) http://git-wip-us.apache.org/repos/asf/stratos/blob/2ff059db/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java index a16a3e5..fa369f5 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java @@ -463,6 +463,7 @@ public class StratosApiV41 extends AbstractApi { @Produces("application/json") @Consumes("application/json") @AuthorizationAction("/permission/admin/stratos/cartridgeGroups/manage") + @SuperTenantService(true) public Response addCartridgeGroup( CartridgeGroupBean cartridgeGroupBean) throws RestAPIException { try { @@ -579,6 +580,7 @@ public class StratosApiV41 extends AbstractApi { @Produces("application/json") @Consumes("application/json") @AuthorizationAction("/permission/admin/stratos/cartridgeGroups/manage") + @SuperTenantService(true) public Response removeServiceGroup( @PathParam("name") String name) throws RestAPIException { try { @@ -1294,6 +1296,7 @@ public class StratosApiV41 extends AbstractApi { @Produces("application/json") @Consumes("application/json") @AuthorizationAction("/permission/admin/stratos/applications/manage") + @SuperTenantService(true) public Response removeApplication( @PathParam("applicationId") String applicationId) throws RestAPIException { ApplicationBean applicationDefinition = StratosApiV41Utils.getApplication(applicationId);
