Revision 66c844a3
b/lib/cmdlib.py | ||
---|---|---|
1313 | 1313 |
"""Wrapper over L{_ExpandItemName} for instance.""" |
1314 | 1314 |
return _ExpandItemName(cfg.ExpandInstanceName, name, "Instance") |
1315 | 1315 |
|
1316 |
def _BuildNetworkHookEnv(name, network, gateway, network6, gateway6, |
|
1317 |
network_type, mac_prefix): |
|
1318 |
env = dict() |
|
1319 |
if name: |
|
1320 |
env["NETWORK_NAME"] = name |
|
1321 |
if network: |
|
1322 |
env["NETWORK_SUBNET"] = network |
|
1323 |
if gateway: |
|
1324 |
env["NETWORK_GATEWAY"] = gateway |
|
1325 |
if network6: |
|
1326 |
env["NETWORK_SUBNET6"] = network6 |
|
1327 |
if gateway6: |
|
1328 |
env["NETWORK_GATEWAY6"] = gateway6 |
|
1329 |
if mac_prefix: |
|
1330 |
env["NETWORK_MAC_PREFIX"] = mac_prefix |
|
1331 |
if network_type: |
|
1332 |
env["NETWORK_TYPE"] = network_type |
|
1333 |
|
|
1334 |
return env |
|
1335 |
|
|
1336 |
|
|
1337 |
def _BuildNetworkHookEnvByObject(lu, network): |
|
1338 |
args = { |
|
1339 |
"name": network.name, |
|
1340 |
"network": network.network, |
|
1341 |
"gateway": network.gateway, |
|
1342 |
"network6": network.network6, |
|
1343 |
"gateway6": network.gateway6, |
|
1344 |
"network_type": network.network_type, |
|
1345 |
"mac_prefix": network.mac_prefix, |
|
1346 |
} |
|
1347 |
return _BuildNetworkHookEnv(**args) |
|
1348 |
|
|
1316 | 1349 |
|
1317 | 1350 |
def _BuildInstanceHookEnv(name, primary_node, secondary_nodes, os_type, status, |
1318 | 1351 |
minmem, maxmem, vcpus, nics, disk_template, disks, |
... | ... | |
1373 | 1406 |
} |
1374 | 1407 |
if nics: |
1375 | 1408 |
nic_count = len(nics) |
1376 |
for idx, (ip, mac, mode, link, network) in enumerate(nics): |
|
1409 |
for idx, (ip, mac, mode, link, network, netinfo) in enumerate(nics):
|
|
1377 | 1410 |
if ip is None: |
1378 | 1411 |
ip = "" |
1379 | 1412 |
env["INSTANCE_NIC%d_IP" % idx] = ip |
1380 | 1413 |
env["INSTANCE_NIC%d_MAC" % idx] = mac |
1381 | 1414 |
env["INSTANCE_NIC%d_MODE" % idx] = mode |
1382 | 1415 |
env["INSTANCE_NIC%d_LINK" % idx] = link |
1383 |
env["INSTANCE_NIC%d_NETWORK" % idx] = network |
|
1416 |
if network: |
|
1417 |
env["INSTANCE_NIC%d_NETWORK" % idx] = network |
|
1418 |
if netinfo: |
|
1419 |
nobj = objects.Network.FromDict(netinfo) |
|
1420 |
if nobj.network: |
|
1421 |
env["INSTANCE_NIC%d_NETWORK_SUBNET" % idx] = nobj.network |
|
1422 |
if nobj.gateway: |
|
1423 |
env["INSTANCE_NIC%d_NETWORK_GATEWAY" % idx] = nobj.gateway |
|
1424 |
if nobj.network6: |
|
1425 |
env["INSTANCE_NIC%d_NETWORK_SUBNET6" % idx] = nobj.network6 |
|
1426 |
if nobj.gateway6: |
|
1427 |
env["INSTANCE_NIC%d_NETWORK_GATEWAY6" % idx] = nobj.gateway6 |
|
1428 |
if nobj.mac_prefix: |
|
1429 |
env["INSTANCE_NIC%d_NETWORK_MAC_PREFIX" % idx] = nobj.mac_prefix |
|
1430 |
if nobj.network_type: |
|
1431 |
env["INSTANCE_NIC%d_NETWORK_TYPE" % idx] = nobj.network_type |
|
1384 | 1432 |
if mode == constants.NIC_MODE_BRIDGED: |
1385 | 1433 |
env["INSTANCE_NIC%d_BRIDGE" % idx] = link |
1386 | 1434 |
else: |
... | ... | |
1409 | 1457 |
|
1410 | 1458 |
return env |
1411 | 1459 |
|
1460 |
def _NICToTuple(lu, nic): |
|
1461 |
"""Build a tupple of nic information. |
|
1462 |
|
|
1463 |
@type lu: L{LogicalUnit} |
|
1464 |
@param lu: the logical unit on whose behalf we execute |
|
1465 |
@type nic: L{objects.NIC} |
|
1466 |
@param nic: nic to convert to hooks tuple |
|
1467 |
|
|
1468 |
""" |
|
1469 |
cluster = lu.cfg.GetClusterInfo() |
|
1470 |
ip = nic.ip |
|
1471 |
mac = nic.mac |
|
1472 |
filled_params = cluster.SimpleFillNIC(nic.nicparams) |
|
1473 |
mode = filled_params[constants.NIC_MODE] |
|
1474 |
link = filled_params[constants.NIC_LINK] |
|
1475 |
network = nic.network |
|
1476 |
netinfo = None |
|
1477 |
if network: |
|
1478 |
net_uuid = lu.cfg.LookupNetwork(network) |
|
1479 |
if net_uuid: |
|
1480 |
nobj = lu.cfg.GetNetwork(net_uuid) |
|
1481 |
netinfo = objects.Network.ToDict(nobj) |
|
1482 |
return (ip, mac, mode, link, network, netinfo) |
|
1412 | 1483 |
|
1413 | 1484 |
def _NICListToTuple(lu, nics): |
1414 | 1485 |
"""Build a list of nic information tuples. |
... | ... | |
1425 | 1496 |
hooks_nics = [] |
1426 | 1497 |
cluster = lu.cfg.GetClusterInfo() |
1427 | 1498 |
for nic in nics: |
1428 |
ip = nic.ip |
|
1429 |
mac = nic.mac |
|
1430 |
filled_params = cluster.SimpleFillNIC(nic.nicparams) |
|
1431 |
mode = filled_params[constants.NIC_MODE] |
|
1432 |
link = filled_params[constants.NIC_LINK] |
|
1433 |
network = nic.network |
|
1434 |
hooks_nics.append((ip, mac, mode, link, network)) |
|
1499 |
hooks_nics.append(_NICToTuple(lu, nic)) |
|
1435 | 1500 |
return hooks_nics |
1436 | 1501 |
|
1437 |
|
|
1438 | 1502 |
def _BuildInstanceHookEnvByObject(lu, instance, override=None): |
1439 | 1503 |
"""Builds instance related env variables for hooks from an object. |
1440 | 1504 |
|
... | ... | |
12339 | 12403 |
nics = [] |
12340 | 12404 |
|
12341 | 12405 |
for nic in self._new_nics: |
12342 |
nicparams = self.cluster.SimpleFillNIC(nic.nicparams)
|
|
12343 |
mode = nicparams[constants.NIC_MODE]
|
|
12344 |
link = nicparams[constants.NIC_LINK]
|
|
12345 |
nics.append((nic.ip, nic.mac, mode, link, nic.network))
|
|
12406 |
n = copy.deepcopy(nic)
|
|
12407 |
nicparams = self.cluster.SimpleFillNIC(n.nicparams)
|
|
12408 |
n.nicparams = nicparams
|
|
12409 |
nics.append(_NICToTuple(self, n))
|
|
12346 | 12410 |
|
12347 | 12411 |
args["nics"] = nics |
12348 | 12412 |
|
... | ... | |
15514 | 15578 |
"""Build hooks env. |
15515 | 15579 |
|
15516 | 15580 |
""" |
15517 |
env = {
|
|
15518 |
"NETWORK_NAME": self.op.network_name,
|
|
15519 |
"NETWORK_SUBNET": self.op.network,
|
|
15520 |
"NETWORK_GATEWAY": self.op.gateway,
|
|
15521 |
"NETWORK_SUBNET6": self.op.network6,
|
|
15522 |
"NETWORK_GATEWAY6": self.op.gateway6,
|
|
15523 |
"NETWORK_MAC_PREFIX": self.op.mac_prefix,
|
|
15524 |
"NETWORK_TYPE": self.op.network_type,
|
|
15581 |
args = {
|
|
15582 |
"name": self.op.network_name,
|
|
15583 |
"network": self.op.network,
|
|
15584 |
"gateway": self.op.gateway,
|
|
15585 |
"network6": self.op.network6,
|
|
15586 |
"gateway6": self.op.gateway6,
|
|
15587 |
"mac_prefix": self.op.mac_prefix,
|
|
15588 |
"network_type": self.op.network_type,
|
|
15525 | 15589 |
} |
15526 |
return env
|
|
15590 |
return _BuildNetworkHookEnv(**args)
|
|
15527 | 15591 |
|
15528 | 15592 |
def Exec(self, feedback_fn): |
15529 | 15593 |
"""Add the ip pool to the cluster. |
... | ... | |
15718 | 15782 |
"""Build hooks env. |
15719 | 15783 |
|
15720 | 15784 |
""" |
15721 |
env = {
|
|
15722 |
"NETWORK_NAME": self.op.network_name,
|
|
15723 |
"NETWORK_SUBNET": self.network.network,
|
|
15724 |
"NETWORK_GATEWAY": self.gateway,
|
|
15725 |
"NETWORK_SUBNET6": self.network6,
|
|
15726 |
"NETWORK_GATEWAY6": self.gateway6,
|
|
15727 |
"NETWORK_MAC_PREFIX": self.mac_prefix,
|
|
15728 |
"NETWORK_TYPE": self.network_type,
|
|
15785 |
args = {
|
|
15786 |
"name": self.op.network_name,
|
|
15787 |
"network": self.network.network,
|
|
15788 |
"gateway": self.gateway,
|
|
15789 |
"network6": self.network6,
|
|
15790 |
"gateway6": self.gateway6,
|
|
15791 |
"mac_prefix": self.mac_prefix,
|
|
15792 |
"network_type": self.network_type,
|
|
15729 | 15793 |
} |
15730 |
return env
|
|
15794 |
return _BuildNetworkHookEnv(**args)
|
|
15731 | 15795 |
|
15732 | 15796 |
def BuildHooksNodes(self): |
15733 | 15797 |
"""Build hooks nodes. |
... | ... | |
15946 | 16010 |
def BuildHooksEnv(self): |
15947 | 16011 |
ret = dict() |
15948 | 16012 |
ret["GROUP_NAME"] = self.group_name |
15949 |
ret["GROUP_NETWORK_NAME"] = self.network_name |
|
15950 | 16013 |
ret["GROUP_NETWORK_MODE"] = self.network_mode |
15951 | 16014 |
ret["GROUP_NETWORK_LINK"] = self.network_link |
16015 |
ret.update(_BuildNetworkHookEnvByObject(self, self.network)) |
|
15952 | 16016 |
return ret |
15953 | 16017 |
|
15954 | 16018 |
def BuildHooksNodes(self): |
... | ... | |
16040 | 16104 |
def BuildHooksEnv(self): |
16041 | 16105 |
ret = dict() |
16042 | 16106 |
ret["GROUP_NAME"] = self.group_name |
16043 |
ret["GROUP_NETWORK_NAME"] = self.network_name
|
|
16107 |
ret.update(_BuildNetworkHookEnvByObject(self, self.network))
|
|
16044 | 16108 |
return ret |
16045 | 16109 |
|
16046 | 16110 |
def BuildHooksNodes(self): |
Also available in: Unified diff