args.address,
],
)
+
+
+def map_components(notsplit_packages, components):
+ """
+ Returns a list of packages to install based on component names
+
+ This is done by checking if a component is in notsplit_packages,
+ if it is, we know we need to install 'ceph' instead of the
+ raw component name. Essentially, this component hasn't been
+ 'split' from the master 'ceph' package yet.
+ """
+ packages = set()
+
+ for c in components:
+ if c in notsplit_packages:
+ packages.add('ceph')
+ else:
+ packages.add(c)
+
+ return list(packages)
--- /dev/null
+from ceph_deploy.hosts.common import map_components
+
+
+class TestMapComponents(object):
+
+ def test_map_components_all_split(self):
+ components = ['ceph-mon', 'ceph-osd']
+ packages = map_components([], components)
+ assert set(packages) == set(components)
+
+ def test_map_components_mds_not_split(self):
+ components = ['ceph-mon', 'ceph-osd', 'ceph-mds']
+ packages = map_components(['ceph-mds'], components)
+ assert set(packages) == set(['ceph-mon', 'ceph-osd', 'ceph'])
+
+ def test_map_components_no_duplicates(self):
+ components = ['ceph-mon', 'ceph-osd', 'ceph-mds']
+ packages = map_components(['ceph-mds', 'ceph-osd'], components)
+ assert set(packages) == set(['ceph-mon', 'ceph'])
+ assert len(packages) == len(set(['ceph-mon', 'ceph']))
+
+ def test_map_components_no_components(self):
+ packages = map_components(['ceph-mon'], [])
+ assert len(packages) == 0