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
6 from orchestrator
import HostSpec
7 from ceph
.deployment
.service_spec
import PlacementSpec
9 @pytest.mark
.parametrize("hosts",
26 @pytest.mark
.parametrize("expected_placement_spec, expected_node_selector",
32 NodeSelectorTermsItem(
33 matchExpressions
=MatchExpressionsList(
36 key
="ceph-label/label1",
48 NodeSelectorTermsItem(
49 matchExpressions
=MatchExpressionsList(
52 key
="ceph-label/label1",
56 key
="kubernetes.io/hostname",
67 NodeSelectorTermsItem(
68 matchExpressions
=MatchExpressionsList(
71 key
="kubernetes.io/hostname",
80 hosts
=["node1", "node2", "node3"]
82 NodeSelectorTermsItem(
83 matchExpressions
=MatchExpressionsList(
86 key
="kubernetes.io/hostname",
88 values
=["node1", "node2", "node3"]
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))