Skip to content

Commit 5fee557

Browse files
authored
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 597d895 commit 5fee557

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
@@ -247,10 +247,10 @@ And the response:
247247
[source,txt]
248248
--------------------------------------------------
249249
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
250-
127.0.0.1 10 5 5 4.46 dim * PB2SGZY
250+
127.0.0.1 10 5 5 4.46 dim * PB2SGZY
251251
--------------------------------------------------
252252
// TESTRESPONSE[s/10 5 5 4.46/\\d+ \\d+ \\d+ (\\d+\\.\\d+)? (\\d+\\.\\d+)? (\\d+\.\\d+)?/]
253-
// TESTRESPONSE[s/[*]/[*]/ s/PB2SGZY/.+/ non_json]
253+
// TESTRESPONSE[s/dim/.+/ s/[*]/[*]/ s/PB2SGZY/.+/ non_json]
254254

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

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;
@@ -280,6 +281,7 @@
280281
import java.util.Collections;
281282
import java.util.List;
282283
import java.util.Map;
284+
import java.util.Set;
283285
import java.util.function.Supplier;
284286
import java.util.function.UnaryOperator;
285287

@@ -300,6 +302,21 @@ public class MachineLearning extends Plugin implements ActionPlugin, AnalysisPlu
300302

301303
public static final Setting<Boolean> ML_ENABLED =
302304
Setting.boolSetting("node.ml", XPackSettings.MACHINE_LEARNING_ENABLED, Property.NodeScope);
305+
306+
public static final DiscoveryNodeRole ML_ROLE = new DiscoveryNodeRole("ml", "l") {
307+
308+
@Override
309+
protected Setting<Boolean> roleSetting() {
310+
return ML_ENABLED;
311+
}
312+
313+
};
314+
315+
@Override
316+
public Set<DiscoveryNodeRole> getRoles() {
317+
return Collections.singleton(ML_ROLE);
318+
}
319+
303320
// This is not used in v7 and higher, but users are still prevented from setting it directly to avoid confusion
304321
private static final String PRE_V7_ML_ENABLED_NODE_ATTR = "ml.enabled";
305322
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)