Network management ================== :: gnt-network add --network=192.0.2.0/24 --gateway=192.0.2.1 \ --v6-network=2001:648:2ffc::/64 --v6-gateway=2001:648:2ffc::1 \ public gnt-network reserve-ips public 192.0.2.2 192.0.2.10-192.0.2.20 gnt-network connect public nodegroup1 link100 gnt-network connect public nodegroup2 link200 gnt-network disconnect public nodegroup1 (only permitted if no instances are currently using this network in the group) gnt-network list Name IPv4 Network IPv4 Gateway IPv6 Network IPv6Gateway public 192.0.2.0/24 192.0.2.1 2001:db8:dead:beef::/64 2001:db8:dead:beef::1 private 10.0.1.0/24 - - - gnt-network list-connected Network Node Group Link public nodegroup1 link100 public nodegroup2 link200 private nodegroup1 link50 gnt-network list-connected private Network Node Group Link private nodegroup1 link50 gnt-network info public Name: public IPv4 Network: 192.0.2.0/24 IPv4 Gateway: 192.0.2.1 IPv6 Network: 2001:db8:dead:beef::/64 IPv6 Gateway: 2001:db8:dead:beef::1 Connected to: nodegroup1 (link100), nodegroup2 (link200) Total IPv4 count: 256 Free address count: 201 (80% free) IPv4 pool status: XXX.........XXXXXXXXXXXXXX...XX............. XXX..........XXX...........................X ....XXX..........XXX.....................XXX X: occupied .: free Used by 22 instances: inst1 inst2 inst32 .. NIC "network" parameter ----------------------- 1. "network" takes precedence over "link" 2. manually setting "link" on a nic with existing "network" is not permitted 3. as a safety guard, setting a "network" parameter on a nic with a "link" is only permitted if the network's link on the instance's node group is the same as the current nic's link 4. "link" is updated on startup according to the network -> nodegroup mapping Default nic "network" parameter add default "network" argument? How do we deal with transitions? -> network and link may not be set at the same time -> setting network will unset link and vice-versa -> setting network is only permitted iff: all NICs with a "default" link would result in having the same link right after setting "network". i.e.: for instance in all_instances: for nic in instance.nics: if nic.link == instance.primary_node.group.networks[network]: ... else: raise errors.OpPrereqError IAllocator changes ------------------ - Make it network-aware, same as storage-aware - Both, network and storage will act as *constraints*, i.e. "place me a node that has access to network x and storage pool y on the cluster". The iallocator will thus rule out node groups based on these constraints. Helper methods in lib/config.py ------------------------------- - ConfigWriter.GetInstancesByNodeGroup(group_uuid) - ConfigWriter.GetInstancesInfoByNodeGroup(group_uuid)