|
98 | 98 | (Required) The raw ID of the flavor to use or the name of a flavor
|
99 | 99 | prefixed by "name:".
|
100 | 100 |
|
| 101 | +Instance_Networks: |
| 102 | + (Optional) A comma seperated list of either the raw IDs or the names |
| 103 | + prefixed by "name:" of the networks to use. |
| 104 | +
|
101 | 105 | Instance_SSHKey:
|
102 | 106 | (Optional) The ID of an SSH key (on OpenStack this is just a plain name).
|
103 | 107 | If not specified the node will be booted without an extra key.
|
|
135 | 139 | Driver_ex_tenant_name = clouduser
|
136 | 140 | Instance_Image = name:CentOS-7-x86_64-GenericCloud-1905
|
137 | 141 | Instance_Flavor = name:m1.medium
|
| 142 | + Instance_Networks = name:my_public_net,name:my_private_net |
138 | 143 | Instance_SSHKey = mysshkey
|
139 | 144 |
|
140 | 145 | """
|
@@ -279,6 +284,35 @@ def _getFlavor(self):
|
279 | 284 | return flavor
|
280 | 285 | raise KeyError("No matching flavor found for %s" % rawID)
|
281 | 286 |
|
| 287 | + def _getNetworks(self): |
| 288 | + """Extracts network list from configuration system. |
| 289 | +
|
| 290 | + :return: List of network objects or None if not set |
| 291 | + """ |
| 292 | + rawIDs = self.ceParameters.get("Instance_Networks", None) |
| 293 | + if not rawIDs: |
| 294 | + return None |
| 295 | + drv = self._getDriver() |
| 296 | + avail_networks = drv.ex_list_networks() |
| 297 | + networks = [] |
| 298 | + for netID in rawIDs.split(","): |
| 299 | + found = False |
| 300 | + for net in avail_networks: |
| 301 | + netName = "" |
| 302 | + if netID.startswith("name:"): |
| 303 | + netName = netID[5:] |
| 304 | + if not netName and net.id == netID: |
| 305 | + networks.append(net) |
| 306 | + found = True |
| 307 | + break |
| 308 | + elif netName and net.name == netName: |
| 309 | + networks.append(net) |
| 310 | + found = True |
| 311 | + break |
| 312 | + if not found: |
| 313 | + raise KeyError("No matching network found for %s" % netID) |
| 314 | + return networks |
| 315 | + |
282 | 316 | def _getSSHKeyID(self):
|
283 | 317 | """Extract ssh key id from configuration system.
|
284 | 318 |
|
@@ -426,6 +460,9 @@ def submitJob(self, executableFile, proxy, numberOfJobs=1):
|
426 | 460 | instParams = {}
|
427 | 461 | instParams["image"] = self._getImage()
|
428 | 462 | instParams["size"] = self._getFlavor()
|
| 463 | + networks = self._getNetworks() |
| 464 | + if networks: |
| 465 | + instParams["networks"] = networks |
429 | 466 | instParams["ex_keyname"] = self._getSSHKeyID()
|
430 | 467 | instParams["ex_userdata"] = self._getMetadata(executableFile)
|
431 | 468 | instParams["ex_config_drive"] = True
|
|
0 commit comments