Skip to content
This repository was archived by the owner on May 12, 2021. It is now read-only.

Commit fe0622a

Browse files
committed
merge with apache master
2 parents 4862b29 + d45bd6e commit fe0622a

File tree

1,624 files changed

+14991
-100562
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,624 files changed

+14991
-100562
lines changed

components/org.apache.stratos.autoscaler/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<parent>
2525
<groupId>org.apache.stratos</groupId>
2626
<artifactId>stratos-components-parent</artifactId>
27-
<version>4.1.1-SNAPSHOT</version>
27+
<version>4.1.2-SNAPSHOT</version>
2828
</parent>
2929

3030
<modelVersion>4.0.0</modelVersion>

components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
import java.util.regex.Pattern;
3838

3939
public class ApplicationUtils {
40-
private static final Log log = LogFactory.getLog(ApplicationUtils.class);
41-
4240
public static final String TOKEN_PAYLOAD_PARAM_NAME = "TOKEN";
4341
public static final String DEPLOYMENT = "DEPLOYMENT";
42+
private static final String PORT_SEPARATOR="|";
4443
public static final String PAYLOAD_PARAMETER = "payload_parameter.";
44+
private static final Log log = LogFactory.getLog(ApplicationUtils.class);
4545
public static Pattern ALIAS_PATTERN = Pattern.compile("([a-z0-9]+([-][a-z0-9])*)+");
4646

4747
public static boolean isAliasValid(String alias) {
@@ -76,7 +76,13 @@ public static Properties getGlobalPayloadData() {
7676
return globalProperties;
7777
}
7878

79-
private static String createPortMappingPayloadString(Cartridge cartridge) {
79+
/**
80+
* This method creates payload string with port numbers in
81+
* 'PORTS': '9443|8280|8243' format
82+
* @param cartridge
83+
* @return String containing ports
84+
*/
85+
private static String createPortsToPayloadString(Cartridge cartridge) {
8086

8187
// port mappings
8288
StringBuilder portMapBuilder = new StringBuilder();
@@ -88,8 +94,7 @@ private static String createPortMappingPayloadString(Cartridge cartridge) {
8894
}
8995

9096
for (PortMapping portMapping : portMappings) {
91-
int port = portMapping.getPort();
92-
portMapBuilder.append(port).append("|");
97+
portMapBuilder.append(portMapping.getPort()).append(PORT_SEPARATOR);
9398
}
9499

95100
// remove last "|" character
@@ -98,6 +103,39 @@ private static String createPortMappingPayloadString(Cartridge cartridge) {
98103
return portMappingString;
99104
}
100105

106+
/**
107+
* This method creates payload string with port mappings in following format.
108+
* PORT_MAPPINGS='NAME:mgt-console|PROTOCOL:https|PORT:30649|PROXY_PORT:0|TYPE:NodePort;
109+
* NAME:pt-http|PROTOCOL:http|PORT:30650|PROXY_PORT:0|TYPE:NodePort;
110+
* NAME:pt-https|PROTOCOL:https|PORT:30651|PROXY_PORT:0|TYPE:NodePort
111+
* @param cartridge
112+
* @return string containing port mapping
113+
*/
114+
private static String createPortMappingsToPayloadString(Cartridge cartridge) {
115+
116+
// port mappings
117+
StringBuilder portMapBuilder = new StringBuilder();
118+
PortMapping[] portMappings = cartridge.getPortMappings();
119+
120+
if (cartridge.getPortMappings()[0] == null) {
121+
// first element is null, which means no port mappings.
122+
return null;
123+
}
124+
125+
for (PortMapping portMapping : portMappings) {
126+
int port = portMapping.getPort();
127+
//Format : NAME:mgt-console|PROTOCOL:https|PORT:30649|PROXY_PORT:0|TYPE:NodePort;
128+
portMapBuilder.append(String.format("NAME:%s|PROTOCOL:%s|PORT:%d|PROXY_PORT:%d|TYPE:%s;",
129+
portMapping.getName(), portMapping.getProtocol(),
130+
portMapping.getPort(), portMapping.getProxyPort(),
131+
portMapping.getKubernetesPortType()));
132+
}
133+
//remove last ";" character
134+
String portMappingString = portMapBuilder.toString().replaceAll(";$", "");
135+
return portMappingString;
136+
137+
}
138+
101139
public static StringBuilder getTextPayload(String appId, String groupName, String clusterId) {
102140

103141
StringBuilder payloadBuilder = new StringBuilder();
@@ -139,12 +177,12 @@ public static StringBuilder getTextPayload(String appId, String groupName, Strin
139177
public static PayloadData createPayload(String appId, String groupName, Cartridge cartridge, String subscriptionKey, int tenantId, String clusterId,
140178
String hostName, String repoUrl, String alias, Map<String, String> customPayloadEntries, String[] dependencyAliases,
141179
org.apache.stratos.common.Properties properties, String oauthToken, String[] dependencyClusterIDs,
142-
String[] exportMetadata, String[] importMetadata,String lvsVirtualIP)
180+
String[] exportMetadata, String[] importMetadata, String lvsVirtualIP)
143181
throws ApplicationDefinitionException {
144182

145183
//Create the payload
146184
BasicPayloadData basicPayloadData = createBasicPayload(appId, groupName, cartridge, subscriptionKey,
147-
clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata,lvsVirtualIP);
185+
clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata, lvsVirtualIP);
148186
//Populate the basic payload details
149187
basicPayloadData.populatePayload();
150188

@@ -212,7 +250,7 @@ private static BasicPayloadData createBasicPayload(String appId, String groupNam
212250
String subscriptionKey, String clusterId,
213251
String hostName, String repoUrl, String alias,
214252
int tenantId, String[] dependencyAliases, String[] dependencyCLusterIDs,
215-
String[] exportMetadata, String[] importMetadata,String lvsVirtualIP) {
253+
String[] exportMetadata, String[] importMetadata, String lvsVirtualIP) {
216254

217255
BasicPayloadData basicPayloadData = new BasicPayloadData();
218256
basicPayloadData.setAppId(appId);
@@ -221,10 +259,11 @@ private static BasicPayloadData createBasicPayload(String appId, String groupNam
221259
basicPayloadData.setSubscriptionKey(subscriptionKey);
222260
//basicPayloadData.setDeployment("default");//currently hard coded to default
223261
basicPayloadData.setMultitenant(String.valueOf(cartridge.getMultiTenant()));
224-
basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridge));
262+
basicPayloadData.setPorts(createPortsToPayloadString(cartridge));
263+
basicPayloadData.setPortMappings(createPortMappingsToPayloadString(cartridge));
225264
basicPayloadData.setServiceName(cartridge.getType());
226265
basicPayloadData.setProvider(cartridge.getProvider());
227-
basicPayloadData.setLvsVirtualIP(lvsVirtualIP);
266+
basicPayloadData.setLvsVirtualIP(lvsVirtualIP);
228267

229268
if (repoUrl != null) {
230269
basicPayloadData.setGitRepositoryUrl(repoUrl);

components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,30 @@ private DependencyBuilder() {
3939

4040
}
4141

42-
private static class Holder {
43-
private static final DependencyBuilder INSTANCE = new DependencyBuilder();
44-
}
45-
4642
public static DependencyBuilder getInstance() {
4743
return Holder.INSTANCE;
4844
}
4945

46+
/**
47+
* Utility method to get the group alias from the startup order Eg: group.mygroup
48+
*
49+
* @param startupOrder startup order
50+
* @return group alias
51+
*/
52+
public static String getGroupFromStartupOrder(String startupOrder) {
53+
return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1);
54+
}
55+
56+
/**
57+
* Utility method to get the cluster alias from startup order Eg: cartridge.myphp
58+
*
59+
* @param startupOrder startup order
60+
* @return cluster alias
61+
*/
62+
public static String getClusterFromStartupOrder(String startupOrder) {
63+
return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1);
64+
}
65+
5066
/**
5167
* This will build the dependency tree based on the given dependencies
5268
*
@@ -236,23 +252,7 @@ public Set<ScalingDependentList> buildScalingDependencies(ParentComponent compon
236252
return scalingDependentLists;
237253
}
238254

239-
/**
240-
* Utility method to get the group alias from the startup order Eg: group.mygroup
241-
*
242-
* @param startupOrder startup order
243-
* @return group alias
244-
*/
245-
public static String getGroupFromStartupOrder(String startupOrder) {
246-
return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1);
247-
}
248-
249-
/**
250-
* Utility method to get the cluster alias from startup order Eg: cartridge.myphp
251-
*
252-
* @param startupOrder startup order
253-
* @return cluster alias
254-
*/
255-
public static String getClusterFromStartupOrder(String startupOrder) {
256-
return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1);
255+
private static class Holder {
256+
private static final DependencyBuilder INSTANCE = new DependencyBuilder();
257257
}
258258
}

components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,6 @@ public List<ApplicationChildContext> findAllChildrenOfAppContext() {
230230
allChildrenOfAppContext);
231231
}
232232

233-
public void setTerminationBehavior(TerminationBehavior terminationBehavior) {
234-
this.terminationBehavior = terminationBehavior;
235-
}
236-
237233
public boolean isTerminateDependent() {
238234
return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_DEPENDENT;
239235
}
@@ -242,13 +238,12 @@ public boolean isTerminateAll() {
242238
return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_ALL;
243239
}
244240

245-
246241
public TerminationBehavior getTerminationBehavior() {
247242
return terminationBehavior;
248243
}
249244

250-
public enum TerminationBehavior {
251-
TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT
245+
public void setTerminationBehavior(TerminationBehavior terminationBehavior) {
246+
this.terminationBehavior = terminationBehavior;
252247
}
253248

254249
public String getId() {
@@ -281,4 +276,8 @@ private void buildTreeStructure(ApplicationChildContext applicationChildContext,
281276
}
282277
}
283278
}
279+
280+
public enum TerminationBehavior {
281+
TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT
282+
}
284283
}

components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,16 @@
2929
*/
3030
public abstract class ApplicationChildContext {
3131

32-
private String id;
3332
protected boolean started;
33+
protected boolean hasStartupDependents;
34+
protected boolean isGroupScalingEnabled;
35+
private String id;
3436
private boolean terminated;
3537
private ClusterStatus status;
3638
private Stack<ClusterStatus> statusLifeCycle;
3739
private List<ApplicationChildContext> applicationChildContextList;
3840
private ApplicationChildContext parent;
3941

40-
protected boolean hasStartupDependents;
41-
protected boolean isGroupScalingEnabled;
42-
4342
public ApplicationChildContext(String id, boolean killDependent) {
4443
applicationChildContextList = new ArrayList<ApplicationChildContext>();
4544
statusLifeCycle = new Stack<ClusterStatus>();

components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@
5757
*/
5858
public class DefaultApplicationParser implements ApplicationParser {
5959

60-
private static final String METADATA_APPENDER = "-";
6160
public static final String ALIAS = "alias";
6261
public static final String CARTRIDGE_TYPE = "type";
6362
public static final String LOAD_BALANCER = "lb";
63+
private static final String METADATA_APPENDER = "-";
6464
private static Log log = LogFactory.getLog(DefaultApplicationParser.class);
6565

6666
private List<ApplicationClusterContext> applicationClusterContexts;
@@ -73,6 +73,29 @@ public DefaultApplicationParser() {
7373

7474
}
7575

76+
/**
77+
* Validates terminationBehavior. The terminationBehavior should be one of the following:
78+
* 1. terminate-none
79+
* 2. terminate-dependents
80+
* 3. terminate-all
81+
*
82+
* @throws ApplicationDefinitionException if terminationBehavior is different to what is
83+
* listed above
84+
*/
85+
private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException {
86+
87+
if (!(terminationBehavior == null ||
88+
AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) ||
89+
AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) ||
90+
AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) {
91+
throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " +
92+
terminationBehavior + " ], should be one of '" +
93+
AutoscalerConstants.TERMINATE_NONE + "', '" +
94+
AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" +
95+
AutoscalerConstants.TERMINATE_ALL + "'");
96+
}
97+
}
98+
7699
@Override
77100
public Application parse(ApplicationContext applicationContext)
78101
throws ApplicationDefinitionException, CartridgeGroupNotFoundException,
@@ -153,7 +176,7 @@ private void addSubscribableInfo(String applicationId, String cartridgeType,
153176

154177
if (!ApplicationUtils.isAliasValid(alias)) {
155178
handleError(String.format("Alias is not valid: [application-id] %s " +
156-
"[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias,
179+
"[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias,
157180
ApplicationUtils.ALIAS_PATTERN.pattern()));
158181
}
159182

@@ -235,7 +258,6 @@ private Map<String, SubscribableInfoContext> getSubscribableInformation(Applicat
235258
return subscribableInfoContextMap;
236259
}
237260

238-
239261
/**
240262
* Builds the Application structure
241263
*
@@ -334,7 +356,6 @@ private Application buildCompositeAppStructure(ApplicationContext applicationCon
334356
return application;
335357
}
336358

337-
338359
/**
339360
* Parse Subscription Information
340361
*
@@ -455,7 +476,7 @@ private Map<String, Map<String, ClusterDataHolder>> parseLeafLevelSubscriptions(
455476
subscribableInfoContext.getDeploymentPolicy(), isLB,
456477
tenantRange, subscribableInfoContext.getDependencyAliases(),
457478
subscribableInfoContext.getProperties(), arrDependencyClusterIDs, arrExportMetadata,
458-
arrImportMetadata,subscribableInfoContext.getLvsVirtualIP());
479+
arrImportMetadata, subscribableInfoContext.getLvsVirtualIP());
459480

460481
appClusterCtxt.setAutoscalePolicyName(subscribableInfoContext.getAutoscalingPolicy());
461482
appClusterCtxt.setProperties(subscribableInfoContext.getProperties());
@@ -528,29 +549,6 @@ private void createClusterDataMap(String applicationId,
528549
}
529550
}
530551

531-
/**
532-
* Validates terminationBehavior. The terminationBehavior should be one of the following:
533-
* 1. terminate-none
534-
* 2. terminate-dependents
535-
* 3. terminate-all
536-
*
537-
* @throws ApplicationDefinitionException if terminationBehavior is different to what is
538-
* listed above
539-
*/
540-
private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException {
541-
542-
if (!(terminationBehavior == null ||
543-
AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) ||
544-
AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) ||
545-
AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) {
546-
throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " +
547-
terminationBehavior + " ], should be one of '" +
548-
AutoscalerConstants.TERMINATE_NONE + "', '" +
549-
AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" +
550-
AutoscalerConstants.TERMINATE_ALL + "'");
551-
}
552-
}
553-
554552
/**
555553
* Parse Group information
556554
*
@@ -942,12 +940,12 @@ private ApplicationClusterContext createApplicationClusterContext(String appId,
942940
String alias, String clusterId, String hostname,
943941
String deploymentPolicy, boolean isLB, String tenantRange,
944942
String[] dependencyAliases, Properties properties, String[] dependencyClustorIDs,
945-
String[] exportMetadata, String[] importMetadata,String lvsVirtualIP)
943+
String[] exportMetadata, String[] importMetadata, String lvsVirtualIP)
946944
throws ApplicationDefinitionException {
947945

948946
// Create text payload
949947
PayloadData payloadData = ApplicationUtils.createPayload(appId, groupName, cartridge, subscriptionKey, tenantId, clusterId,
950-
hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata,lvsVirtualIP);
948+
hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata, lvsVirtualIP);
951949

952950
String textPayload = payloadData.toString();
953951
if (log.isDebugEnabled()) {

0 commit comments

Comments
 (0)