@@ -132,6 +132,20 @@ def get_resource(module, resource_type, resource_func, resource_name, search_tit
132
132
return result
133
133
134
134
135
+ def split_parent (name ):
136
+ """
137
+ Split hostgroup name in parent part and name:
138
+
139
+ >>> split_parent("a/b/c")
140
+ ('c', 'a/b')
141
+ """
142
+ if '/' in name :
143
+ parent , name = name .rsplit ('/' ,1 )
144
+ else :
145
+ return name , None
146
+ return name , parent
147
+
148
+
135
149
def ensure (module ):
136
150
# Changes in one of the following keys fails with:
137
151
# <key> is not allowed as nested parameter for hostgroups. Allowed parameters are puppetclass_id, location_id, organization_id
@@ -141,7 +155,8 @@ def ensure(module):
141
155
hostgroup_updateable_keys = ['puppetclass_id' , 'location_id' , 'organization_id' ]
142
156
143
157
changed = False
144
- name = module .params ['name' ]
158
+ full_name = module .params ['name' ]
159
+ short_name , parent_name = split_parent (full_name )
145
160
architecture_name = module .params [ARCHITECTURE ]
146
161
compute_profile_name = module .params [COMPUTE_PROFILE ]
147
162
domain_name = module .params [DOMAIN ]
@@ -153,7 +168,6 @@ def ensure(module):
153
168
subnet_name = module .params [SUBNET ]
154
169
state = module .params ['state' ]
155
170
parameters = module .params ['parameters' ]
156
-
157
171
foreman_host = module .params ['foreman_host' ]
158
172
foreman_port = module .params ['foreman_port' ]
159
173
foreman_user = module .params ['foreman_user' ]
@@ -164,7 +178,7 @@ def ensure(module):
164
178
username = foreman_user ,
165
179
password = foreman_pass )
166
180
167
- data = {'name ' : name }
181
+ data = {'title ' : full_name , ' name' : short_name }
168
182
169
183
try :
170
184
hostgroup = theforeman .search_hostgroup (data = data )
@@ -244,6 +258,15 @@ def ensure(module):
244
258
resource_name = subnet_name )
245
259
data ['subnet_id' ] = subnet .get ('id' )
246
260
261
+ # Parent
262
+ if parent_name :
263
+ environment = get_resource (module = module ,
264
+ resource_type = HOSTGROUP ,
265
+ resource_func = theforeman .search_hostgroup ,
266
+ search_title = True ,
267
+ resource_name = parent_name )
268
+ data ['parent_id' ] = environment .get ('id' )
269
+
247
270
if not hostgroup and state == 'present' :
248
271
try :
249
272
hostgroup = theforeman .create_hostgroup (data = data )
0 commit comments