Skip to content

Commit d89ba59

Browse files
committed
Make sure ceph-mds is deployed (needed for manila).
As we need only one ceph-mds node, let's take it first and we can both make sure that there's one deployed and skip those complicated checks for conflicts using the extra method. (cherry picked from commit 7f61904)
1 parent d763695 commit d89ba59

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)