Skip to content

Commit 9a142ff

Browse files
committed
Introduce formal node ML role (#45174)
This commit builds on the ability for plugins to introduce new roles to add a formal node ML role.
1 parent bb22b2e commit 9a142ff

File tree

6 files changed

+28
-15
lines changed

6 files changed

+28
-15
lines changed

distribution/docker/src/test/resources/rest-api-spec/test/11_nodes.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66

77
- match:
88
$body: |
9-
/ #ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10-
^ ((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)?\s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dmi]{1,3}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
9+
/ #ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10+
^ ((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)?\s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dilm]{1,4}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
1111
1212
- do:
1313
cat.nodes:
1414
v: true
1515

1616
- match:
1717
$body: |
18-
/^ ip \s+ heap\.percent \s+ ram\.percent \s+ cpu \s+ load_1m \s+ load_5m \s+ load_15m \s+ node\.role \s+ master \s+ name \n
19-
((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dmi]{1,3}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
18+
/^ ip \s+ heap\.percent \s+ ram\.percent \s+ cpu \s+ load_1m \s+ load_5m \s+ load_15m \s+ node\.role \s+ master \s+ name \n
19+
((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dilm]{1,4}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
2020
2121
- do:
2222
cat.nodes:

docs/reference/cat/nodes.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master
1818
--------------------------------------------------
1919
// TESTRESPONSE[s/3.07/(\\d+\\.\\d+( \\d+\\.\\d+ (\\d+\\.\\d+)?)?)?/]
2020
// TESTRESPONSE[s/65 99 42/\\d+ \\d+ \\d+/]
21-
// TESTRESPONSE[s/[*]/[*]/ s/mJw06l1/.+/ non_json]
21+
// TESTRESPONSE[s/dim/.+/ s/[*]/[*]/ s/mJw06l1/.+/ non_json]
2222

2323
The first few columns (`ip`, `heap.percent`, `ram.percent`, `cpu`, `load_*`) tell
2424
you where your nodes live and give a quick picture of performance stats.

docs/reference/getting-started.asciidoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,10 @@ And the response:
258258
[source,txt]
259259
--------------------------------------------------
260260
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
261-
127.0.0.1 10 5 5 4.46 dim * PB2SGZY
261+
127.0.0.1 10 5 5 4.46 dim * PB2SGZY
262262
--------------------------------------------------
263263
// TESTRESPONSE[s/10 5 5 4.46/\\d+ \\d+ \\d+ (\\d+\\.\\d+)? (\\d+\\.\\d+)? (\\d+\.\\d+)?/]
264-
// TESTRESPONSE[s/[*]/[*]/ s/PB2SGZY/.+/ non_json]
264+
// TESTRESPONSE[s/dim/.+/ s/[*]/[*]/ s/PB2SGZY/.+/ non_json]
265265

266266
Here, we can see our one node named "PB2SGZY", which is the single node that is currently in our cluster.
267267

rest-api-spec/src/main/resources/rest-api-spec/test/cat.nodes/10_basic.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66

77
- match:
88
$body: |
9-
/ #ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10-
^ ((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)?\s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dmi]{1,3}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
9+
/ #ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10+
^ ((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)?\s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dilm]{1,4}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
1111
1212
- do:
1313
cat.nodes:
1414
v: true
1515

1616
- match:
1717
$body: |
18-
/^ ip \s+ heap\.percent \s+ ram\.percent \s+ cpu \s+ load_1m \s+ load_5m \s+ load_15m \s+ node\.role \s+ master \s+ name \n
19-
((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dmi]{1,3}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
18+
/^ ip \s+ heap\.percent \s+ ram\.percent \s+ cpu \s+ load_1m \s+ load_5m \s+ load_15m \s+ node\.role \s+ master \s+ name \n
19+
((\d{1,3}\.){3}\d{1,3} \s+ \d+ \s+ \d* \s+ (-)?\d* \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ ((-)?\d*(\.\d+)?)? \s+ (-|[dilm]{1,4}) \s+ [-*x] \s+ (\S+\s?)+ \n)+ $/
2020
2121
- do:
2222
cat.nodes:

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
2020
import org.elasticsearch.cluster.metadata.IndexTemplateMetaData;
2121
import org.elasticsearch.cluster.node.DiscoveryNode;
22+
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
2223
import org.elasticsearch.cluster.node.DiscoveryNodes;
2324
import org.elasticsearch.cluster.routing.UnassignedInfo;
2425
import org.elasticsearch.cluster.service.ClusterService;
@@ -277,6 +278,7 @@
277278
import java.util.Collections;
278279
import java.util.List;
279280
import java.util.Map;
281+
import java.util.Set;
280282
import java.util.function.Supplier;
281283
import java.util.function.UnaryOperator;
282284

@@ -297,6 +299,21 @@ public class MachineLearning extends Plugin implements ActionPlugin, AnalysisPlu
297299

298300
public static final Setting<Boolean> ML_ENABLED =
299301
Setting.boolSetting("node.ml", XPackSettings.MACHINE_LEARNING_ENABLED, Property.NodeScope);
302+
303+
public static final DiscoveryNodeRole ML_ROLE = new DiscoveryNodeRole("ml", "l") {
304+
305+
@Override
306+
protected Setting<Boolean> roleSetting() {
307+
return ML_ENABLED;
308+
}
309+
310+
};
311+
312+
@Override
313+
public Set<DiscoveryNodeRole> getRoles() {
314+
return Collections.singleton(ML_ROLE);
315+
}
316+
300317
// This is not used in v7 and higher, but users are still prevented from setting it directly to avoid confusion
301318
private static final String PRE_V7_ML_ENABLED_NODE_ATTR = "ml.enabled";
302319
public static final String MAX_OPEN_JOBS_NODE_ATTR = "ml.max_open_jobs";

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/JobNodeSelectorTests.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ public void testNodeNameAndMlAttributes() {
8484

8585
node = new DiscoveryNode(null, "_node_id1", ta, attributes, Collections.emptySet(), Version.CURRENT);
8686
assertEquals("{_node_id1}{ml.machine_memory=5}", JobNodeSelector.nodeNameAndMlAttributes(node));
87-
88-
attributes.put("node.ml", "true");
89-
node = new DiscoveryNode("_node_name1", "_node_id1", ta, attributes, Collections.emptySet(), Version.CURRENT);
90-
assertEquals("{_node_name1}{ml.machine_memory=5}{node.ml=true}", JobNodeSelector.nodeNameAndMlAttributes(node));
9187
}
9288

9389
public void testSelectLeastLoadedMlNode_byCount() {

0 commit comments

Comments
 (0)