Skip to content

Commit 3d3bc1d

Browse files
authored
Merge pull request #99 from jsuchome/deploy-mds-node
Make sure ceph-mds is deployed (it's needed for manila)
2 parents 2d23655 + 7f61904 commit 3d3bc1d

File tree

1 file changed

+4
-25
lines changed

1 file changed

+4
-25
lines changed

crowbar_framework/app/models/ceph_service.rb

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -106,27 +106,6 @@ def proposal_dependencies(role)
106106
answer
107107
end
108108

109-
# Helper to find a suitable node for ceph-mds role.
110-
# ceph-mds conflicts with ceph-osd, and should not be assigned to the cluster node
111-
def select_node_for_mds_role(nodes)
112-
# do not modify array given by caller
113-
mds_nodes = nodes.dup
114-
mds_nodes.delete_if(&:nil?)
115-
mds_nodes.reject! do |n|
116-
node_is_valid_for_role(n.name, "ceph-mds")
117-
end
118-
119-
mds_node = mds_nodes.find { |n| n.intended_role != "controller" }
120-
if mds_node.nil? && !mds_nodes.empty?
121-
mds_node = mds_nodes.first
122-
@logger.debug("Not enough nodes: putting ceph-mds on controller node (unsupported scenario)")
123-
end
124-
if mds_node.nil?
125-
@logger.warn("Not enough nodes: there seems to be no node for ceph-mds role!")
126-
end
127-
mds_node
128-
end
129-
130109
def create_proposal
131110
@logger.debug("Ceph create_proposal: entering")
132111
base = super
@@ -142,9 +121,11 @@ def create_proposal
142121
n.roles.include?("pacemaker-cluster-member")
143122
end
144123

145-
osd_nodes = select_nodes_for_role(nodes, "ceph-osd", "storage")
124+
mds_node = select_nodes_for_role(nodes, "ceph-mds").first
125+
126+
osd_nodes = select_nodes_for_role(nodes - [mds_node], "ceph-osd", "storage")
146127
if osd_nodes.size < 2
147-
osd_nodes_all = select_nodes_for_role(nodes, "ceph-osd")
128+
osd_nodes_all = select_nodes_for_role(nodes - [mds_node], "ceph-osd")
148129
# avoid controllers if possible (ceph should not be used with openstack roles)
149130
osd_nodes_no_controller = osd_nodes_all.reject do |n|
150131
n.intended_role == "controller"
@@ -163,8 +144,6 @@ def create_proposal
163144
end
164145
mon_nodes = mon_nodes.take(mon_nodes.length > 2 ? 3 : 1)
165146

166-
mds_node = select_node_for_mds_role(nodes - osd_nodes)
167-
168147
radosgw_node = select_nodes_for_role(nodes, "ceph-radosgw", "storage").first
169148

170149
# Any spare node after allocating mons and osds is fair game

0 commit comments

Comments
 (0)