Skip to content

Commit 2eeb1bd

Browse files
Autoscaling decision return absolute capacity (elastic#61575) (elastic#62670)
The autoscaling decision API now returns an absolute capacity, and leaves the actual decision of whether a scale up or down is needed to the orchestration system. The decision API now returns both a tier and node level required and current capacity as wells as a decider level breakdown of the same though with in particular current memory still not populated.
1 parent 1580fc7 commit 2eeb1bd

32 files changed

+1216
-434
lines changed

docs/reference/autoscaling/apis/delete-autoscaling-policy.asciidoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ PUT /_autoscaling/policy/my_autoscaling_policy
1717
{
1818
"policy": {
1919
"deciders": {
20-
"always": {
20+
"fixed": {
2121
}
2222
}
2323
}

docs/reference/autoscaling/apis/get-autoscaling-policy.asciidoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ PUT /_autoscaling/policy/my_autoscaling_policy
1717
{
1818
"policy": {
1919
"deciders": {
20-
"always": {
20+
"fixed": {
2121
}
2222
}
2323
}

docs/reference/autoscaling/apis/put-autoscaling-policy.asciidoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ PUT /_autoscaling/policy/<name>
1717
{
1818
"policy": {
1919
"deciders": {
20-
"always": {
20+
"fixed": {
2121
}
2222
}
2323
}
@@ -59,7 +59,7 @@ PUT /_autoscaling/policy/my_autoscaling_policy
5959
{
6060
"policy": {
6161
"deciders": {
62-
"always": {
62+
"fixed": {
6363
}
6464
}
6565
}

x-pack/plugin/autoscaling/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/autoscaling/delete_autoscaling_policy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
body:
77
policy:
88
deciders:
9-
always: {}
9+
fixed: {}
1010

1111
- match: { "acknowledged": true }
1212

x-pack/plugin/autoscaling/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/autoscaling/get_autoscaling_decision.yml

+16-6
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,34 @@
66
- match: { "decisions": [] }
77

88
---
9-
"Test get always autoscaling decision":
9+
"Test get fixed autoscaling decision":
1010
- do:
1111
autoscaling.put_autoscaling_policy:
1212
name: my_autoscaling_policy
1313
body:
1414
policy:
1515
deciders:
16-
always: {}
16+
fixed:
17+
storage: 1337b
18+
memory: 7331b
19+
nodes: 10
1720

1821
- match: { "acknowledged": true }
1922

2023
- do:
2124
autoscaling.get_autoscaling_decision: {}
2225

23-
- match: { decisions.0.my_autoscaling_policy.decision: scale_up }
24-
- match: { decisions.0.my_autoscaling_policy.decisions.0.name: always }
25-
- match: { decisions.0.my_autoscaling_policy.decisions.0.type: scale_up }
26-
- match: { decisions.0.my_autoscaling_policy.decisions.0.reason: always }
26+
- match: { decisions.0.tier: my_autoscaling_policy }
27+
- match: { decisions.0.required_capacity.tier.storage: 13370b }
28+
- match: { decisions.0.required_capacity.tier.memory: 73310b }
29+
- match: { decisions.0.required_capacity.node.storage: 1337b }
30+
- match: { decisions.0.required_capacity.node.memory: 7331b }
31+
- match: { decisions.0.decisions.0.name: fixed }
32+
- match: { decisions.0.decisions.0.required_capacity.tier.storage: 13370b }
33+
- match: { decisions.0.decisions.0.required_capacity.tier.memory: 73310b }
34+
- match: { decisions.0.decisions.0.required_capacity.node.storage: 1337b }
35+
- match: { decisions.0.decisions.0.required_capacity.node.memory: 7331b }
36+
- match: { decisions.0.decisions.0.reason_summary: "fixed storage [1.3kb] memory [7.1kb] nodes [10]" }
2737

2838
# test cleanup
2939
- do:

x-pack/plugin/autoscaling/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/autoscaling/get_autoscaling_policy.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
body:
77
policy:
88
deciders:
9-
always: {}
9+
fixed: {}
1010

1111
- match: { "acknowledged": true }
1212

1313
- do:
1414
autoscaling.get_autoscaling_policy:
1515
name: my_autoscaling_policy
1616

17-
- match: { policy.deciders.always: {} }
17+
- match: { policy.deciders.fixed: {} }
1818

1919
# test cleanup
2020
- do:

x-pack/plugin/autoscaling/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/autoscaling/put_autoscaling_policy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
body:
77
policy:
88
deciders:
9-
always: {}
9+
fixed: {}
1010

1111
- match: { "acknowledged": true }
1212

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/Autoscaling.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@
4545
import org.elasticsearch.xpack.autoscaling.action.TransportGetAutoscalingDecisionAction;
4646
import org.elasticsearch.xpack.autoscaling.action.TransportGetAutoscalingPolicyAction;
4747
import org.elasticsearch.xpack.autoscaling.action.TransportPutAutoscalingPolicyAction;
48-
import org.elasticsearch.xpack.autoscaling.decision.AlwaysAutoscalingDeciderConfiguration;
49-
import org.elasticsearch.xpack.autoscaling.decision.AlwaysAutoscalingDeciderService;
48+
import org.elasticsearch.xpack.autoscaling.decision.AutoscalingDecision;
49+
import org.elasticsearch.xpack.autoscaling.decision.FixedAutoscalingDeciderConfiguration;
50+
import org.elasticsearch.xpack.autoscaling.decision.FixedAutoscalingDeciderService;
5051
import org.elasticsearch.xpack.autoscaling.decision.AutoscalingDeciderConfiguration;
5152
import org.elasticsearch.xpack.autoscaling.decision.AutoscalingDeciderService;
5253
import org.elasticsearch.xpack.autoscaling.decision.AutoscalingDecisionService;
@@ -181,8 +182,13 @@ public List<NamedWriteableRegistry.Entry> getNamedWriteables() {
181182
new NamedWriteableRegistry.Entry(NamedDiff.class, AutoscalingMetadata.NAME, AutoscalingMetadata.AutoscalingMetadataDiff::new),
182183
new NamedWriteableRegistry.Entry(
183184
AutoscalingDeciderConfiguration.class,
184-
AlwaysAutoscalingDeciderConfiguration.NAME,
185-
AlwaysAutoscalingDeciderConfiguration::new
185+
FixedAutoscalingDeciderConfiguration.NAME,
186+
FixedAutoscalingDeciderConfiguration::new
187+
),
188+
new NamedWriteableRegistry.Entry(
189+
AutoscalingDecision.Reason.class,
190+
FixedAutoscalingDeciderConfiguration.NAME,
191+
FixedAutoscalingDeciderService.FixedReason::new
186192
)
187193
);
188194
}
@@ -193,8 +199,8 @@ public List<NamedXContentRegistry.Entry> getNamedXContent() {
193199
new NamedXContentRegistry.Entry(Metadata.Custom.class, new ParseField(AutoscalingMetadata.NAME), AutoscalingMetadata::parse),
194200
new NamedXContentRegistry.Entry(
195201
AutoscalingDeciderConfiguration.class,
196-
new ParseField(AlwaysAutoscalingDeciderConfiguration.NAME),
197-
AlwaysAutoscalingDeciderConfiguration::parse
202+
new ParseField(FixedAutoscalingDeciderConfiguration.NAME),
203+
FixedAutoscalingDeciderConfiguration::parse
198204
)
199205
);
200206
}
@@ -210,7 +216,7 @@ public void loadExtensions(ExtensionLoader loader) {
210216

211217
@Override
212218
public Collection<AutoscalingDeciderService<? extends AutoscalingDeciderConfiguration>> deciders() {
213-
return org.elasticsearch.common.collect.List.of(new AlwaysAutoscalingDeciderService());
219+
return org.elasticsearch.common.collect.List.of(new FixedAutoscalingDeciderService());
214220
}
215221

216222
public Set<AutoscalingDeciderService<? extends AutoscalingDeciderConfiguration>> createDeciderServices() {

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/GetAutoscalingDecisionAction.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import org.elasticsearch.xpack.autoscaling.decision.AutoscalingDecisions;
1818

1919
import java.io.IOException;
20-
import java.util.Map;
2120
import java.util.Objects;
2221
import java.util.SortedMap;
2322
import java.util.TreeMap;
@@ -89,12 +88,8 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa
8988
{
9089
builder.startArray("decisions");
9190
{
92-
for (final Map.Entry<String, AutoscalingDecisions> decision : decisions.entrySet()) {
93-
builder.startObject();
94-
{
95-
builder.field(decision.getKey(), decision.getValue());
96-
}
97-
builder.endObject();
91+
for (final AutoscalingDecisions decision : decisions.values()) {
92+
decision.toXContent(builder, params);
9893
}
9994
}
10095
builder.endArray();

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingDecisionAction.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.elasticsearch.action.ActionListener;
1010
import org.elasticsearch.action.support.ActionFilters;
1111
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
12+
import org.elasticsearch.cluster.ClusterInfoService;
1213
import org.elasticsearch.cluster.ClusterState;
1314
import org.elasticsearch.cluster.block.ClusterBlockException;
1415
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
@@ -26,6 +27,7 @@ public class TransportGetAutoscalingDecisionAction extends TransportMasterNodeAc
2627
GetAutoscalingDecisionAction.Response> {
2728

2829
private final AutoscalingDecisionService decisionService;
30+
private final ClusterInfoService clusterInfoService;
2931

3032
@Inject
3133
public TransportGetAutoscalingDecisionAction(
@@ -34,7 +36,8 @@ public TransportGetAutoscalingDecisionAction(
3436
final ThreadPool threadPool,
3537
final ActionFilters actionFilters,
3638
final IndexNameExpressionResolver indexNameExpressionResolver,
37-
final AutoscalingDecisionService.Holder decisionServiceHolder
39+
final AutoscalingDecisionService.Holder decisionServiceHolder,
40+
final ClusterInfoService clusterInfoService
3841
) {
3942
super(
4043
GetAutoscalingDecisionAction.NAME,
@@ -46,6 +49,7 @@ public TransportGetAutoscalingDecisionAction(
4649
indexNameExpressionResolver
4750
);
4851
this.decisionService = decisionServiceHolder.get();
52+
this.clusterInfoService = clusterInfoService;
4953
assert this.decisionService != null;
5054
}
5155

@@ -65,7 +69,7 @@ protected void masterOperation(
6569
final ClusterState state,
6670
final ActionListener<GetAutoscalingDecisionAction.Response> listener
6771
) {
68-
listener.onResponse(new GetAutoscalingDecisionAction.Response(decisionService.decide(state)));
72+
listener.onResponse(new GetAutoscalingDecisionAction.Response(decisionService.decide(state, clusterInfoService.getClusterInfo())));
6973
}
7074

7175
@Override

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/decision/AlwaysAutoscalingDeciderConfiguration.java

-72
This file was deleted.

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/decision/AlwaysAutoscalingDeciderService.java

-25
This file was deleted.

0 commit comments

Comments
 (0)