]>
Commit | Line | Data |
---|---|---|
20effc67 TL |
1 | # flake8: noqa |
2 | ||
3 | from rook.rook_cluster import placement_spec_to_node_selector, node_selector_to_placement_spec | |
4 | from rook.rook_client.ceph.cephcluster import MatchExpressionsItem, MatchExpressionsList, NodeSelectorTermsItem | |
5 | import pytest | |
6 | from orchestrator import HostSpec | |
7 | from ceph.deployment.service_spec import PlacementSpec | |
8 | ||
9 | @pytest.mark.parametrize("hosts", | |
10 | [ # noqa: E128 | |
11 | [ | |
12 | HostSpec( | |
13 | hostname="node1", | |
14 | labels=["label1"] | |
15 | ), | |
16 | HostSpec( | |
17 | hostname="node2", | |
18 | labels=[] | |
19 | ), | |
20 | HostSpec( | |
21 | hostname="node3", | |
22 | labels=["label1"] | |
23 | ) | |
24 | ] | |
25 | ]) | |
26 | @pytest.mark.parametrize("expected_placement_spec, expected_node_selector", | |
27 | [ # noqa: E128 | |
28 | ( | |
29 | PlacementSpec( | |
30 | label="label1" | |
31 | ), | |
32 | NodeSelectorTermsItem( | |
33 | matchExpressions=MatchExpressionsList( | |
34 | [ | |
35 | MatchExpressionsItem( | |
36 | key="ceph-label/label1", | |
37 | operator="Exists" | |
38 | ) | |
39 | ] | |
40 | ) | |
41 | ) | |
42 | ), | |
43 | ( | |
44 | PlacementSpec( | |
45 | label="label1", | |
46 | host_pattern="*" | |
47 | ), | |
48 | NodeSelectorTermsItem( | |
49 | matchExpressions=MatchExpressionsList( | |
50 | [ | |
51 | MatchExpressionsItem( | |
52 | key="ceph-label/label1", | |
53 | operator="Exists" | |
54 | ), | |
55 | MatchExpressionsItem( | |
56 | key="kubernetes.io/hostname", | |
57 | operator="Exists", | |
58 | ) | |
59 | ] | |
60 | ) | |
61 | ) | |
62 | ), | |
63 | ( | |
64 | PlacementSpec( | |
65 | host_pattern="*" | |
66 | ), | |
67 | NodeSelectorTermsItem( | |
68 | matchExpressions=MatchExpressionsList( | |
69 | [ | |
70 | MatchExpressionsItem( | |
71 | key="kubernetes.io/hostname", | |
72 | operator="Exists", | |
73 | ) | |
74 | ] | |
75 | ) | |
76 | ) | |
77 | ), | |
78 | ( | |
79 | PlacementSpec( | |
80 | hosts=["node1", "node2", "node3"] | |
81 | ), | |
82 | NodeSelectorTermsItem( | |
83 | matchExpressions=MatchExpressionsList( | |
84 | [ | |
85 | MatchExpressionsItem( | |
86 | key="kubernetes.io/hostname", | |
87 | operator="In", | |
88 | values=["node1", "node2", "node3"] | |
89 | ) | |
90 | ] | |
91 | ) | |
92 | ) | |
93 | ), | |
94 | ]) | |
95 | def test_placement_spec_translate(hosts, expected_placement_spec, expected_node_selector): | |
96 | node_selector = placement_spec_to_node_selector(expected_placement_spec, hosts) | |
97 | assert [(getattr(expression, 'key', None), getattr(expression, 'operator', None), getattr(expression, 'values', None)) for expression in node_selector.matchExpressions] == [(getattr(expression, 'key', None), getattr(expression, 'operator', None), getattr(expression, 'values', None)) for expression in expected_node_selector.matchExpressions] | |
98 | placement_spec = node_selector_to_placement_spec(expected_node_selector) | |
99 | assert placement_spec == expected_placement_spec | |
100 | assert (getattr(placement_spec, 'label', None), getattr(placement_spec, 'hosts', None), getattr(placement_spec, 'host_pattern', None)) == (getattr(expected_placement_spec, 'label', None), getattr(expected_placement_spec, 'hosts', None), getattr(expected_placement_spec, 'host_pattern', None)) |