diff options
-rwxr-xr-x | cobbler/cobbler.py | 105 | ||||
-rw-r--r-- | cobbler/item_system.py | 26 |
2 files changed, 91 insertions, 40 deletions
diff --git a/cobbler/cobbler.py b/cobbler/cobbler.py index e1d36a3..2921150 100755 --- a/cobbler/cobbler.py +++ b/cobbler/cobbler.py @@ -494,39 +494,88 @@ class BootCLI: """ Create/Edit a system: 'cobbler system edit --name='foo' ... """ + # This copy/paste is heinous evil, please forgive me. + # there was a loop here but the python optimizers seemed to do wierd + # things with the lambda handling. To be resolved when this + # command line gets refactored to use optparse. + commands = { - '--name' : lambda(a) : sys.set_name(a), - '--newname' : lambda(a) : True, - '--system' : lambda(a) : sys.set_name(a), - '--profile' : lambda(a) : sys.set_profile(a), - '--kopts' : lambda(a) : sys.set_kernel_options(a), - '--ksmeta' : lambda(a) : sys.set_ksmeta(a), - '--hostname' : lambda(a) : sys.set_hostname(a,interface="intf0"), - '--ip' : lambda(a) : sys.set_ip_address(a,interface="intf0"), - '--mac' : lambda(a) : sys.set_mac_address(a,interface="intf0"), - '--gateway' : lambda(a) : sys.set_gateway(a,interface="intf0"), - '--subnet' : lambda(a) : sys.set_subnet(a,interface="intf0"), - '--virt-bridge' : lambda(a) : sys.set_virt_bridge(a,interface="intf0"), - '--kickstart' : lambda(a) : sys.set_kickstart(a), + '--name' : lambda(a) : sys.set_name(a), + '--newname' : lambda(a) : True, + '--system' : lambda(a) : sys.set_name(a), + '--profile' : lambda(a) : sys.set_profile(a), + '--kopts' : lambda(a) : sys.set_kernel_options(a), + '--ksmeta' : lambda(a) : sys.set_ksmeta(a), + '--hostname' : lambda(a) : sys.set_hostname(a,"intf0"), + '--hostname0' : lambda(a) : sys.set_hostname(a,"intf0"), + '--hostname1' : lambda(a) : sys.set_hostname(a,"intf1"), + '--hostname2' : lambda(a) : sys.set_hostname(a,"intf2"), + '--hostname3' : lambda(a) : sys.set_hostname(a,"intf3"), + '--hostname4' : lambda(a) : sys.set_hostname(a,"intf4"), + '--hostname5' : lambda(a) : sys.set_hostname(a,"intf5"), + '--hostname6' : lambda(a) : sys.set_hostname(a,"intf6"), + '--hostname7' : lambda(a) : sys.set_hostname(a,"intf7"), + '--ip' : lambda(a) : sys.set_ip_address(a,"intf0"), + '--ip0' : lambda(a) : sys.set_ip_address(a,"intf0"), + '--ip1' : lambda(a) : sys.set_ip_address(a,"intf1"), + '--ip2' : lambda(a) : sys.set_ip_address(a,"intf2"), + '--ip3' : lambda(a) : sys.set_ip_address(a,"intf3"), + '--ip4' : lambda(a) : sys.set_ip_address(a,"intf4"), + '--ip5' : lambda(a) : sys.set_ip_address(a,"intf5"), + '--ip6' : lambda(a) : sys.set_ip_address(a,"intf6"), + '--ip7' : lambda(a) : sys.set_ip_address(a,"intf7"), + '--mac' : lambda(a) : sys.set_mac_address(a,"intf0"), + '--mac0' : lambda(a) : sys.set_mac_address(a,"intf0"), + '--mac1' : lambda(a) : sys.set_mac_address(a,"intf1"), + '--mac2' : lambda(a) : sys.set_mac_address(a,"intf2"), + '--mac3' : lambda(a) : sys.set_mac_address(a,"intf3"), + '--mac4' : lambda(a) : sys.set_mac_address(a,"intf4"), + '--mac5' : lambda(a) : sys.set_mac_address(a,"intf5"), + '--mac6' : lambda(a) : sys.set_mac_address(a,"intf6"), + '--mac7' : lambda(a) : sys.set_mac_address(a,"intf7"), + '--gateway' : lambda(a) : sys.set_gateway(a,"intf0"), + '--gateway0' : lambda(a) : sys.set_gateway(a,"intf0"), + '--gateway1' : lambda(a) : sys.set_gateway(a,"intf1"), + '--gateway2' : lambda(a) : sys.set_gateway(a,"intf2"), + '--gateway3' : lambda(a) : sys.set_gateway(a,"intf3"), + '--gateway4' : lambda(a) : sys.set_gateway(a,"intf4"), + '--gateway5' : lambda(a) : sys.set_gateway(a,"intf5"), + '--gateway6' : lambda(a) : sys.set_gateway(a,"intf6"), + '--gateway7' : lambda(a) : sys.set_gateway(a,"intf7"), + '--subnet' : lambda(a) : sys.set_subnet(a,"intf0"), + '--subnet0' : lambda(a) : sys.set_subnet(a,"intf1"), + '--subnet1' : lambda(a) : sys.set_subnet(a,"intf2"), + '--subnet2' : lambda(a) : sys.set_subnet(a,"intf3"), + '--subnet3' : lambda(a) : sys.set_subnet(a,"intf4"), + '--subnet4' : lambda(a) : sys.set_subnet(a,"intf5"), + '--subnet5' : lambda(a) : sys.set_subnet(a,"intf6"), + '--subnet6' : lambda(a) : sys.set_subnet(a,"intf7"), + '--subnet7' : lambda(a) : sys.set_subnet(a,"intf8"), + '--virt-bridge' : lambda(a) : sys.set_virt_bridge(a,"intf0"), + '--virt-bridge0' : lambda(a) : sys.set_virt_bridge(a,"intf0"), + '--virt-bridge1' : lambda(a) : sys.set_virt_bridge(a,"intf1"), + '--virt-bridge2' : lambda(a) : sys.set_virt_bridge(a,"intf2"), + '--virt-bridge3' : lambda(a) : sys.set_virt_bridge(a,"intf3"), + '--virt-bridge4' : lambda(a) : sys.set_virt_bridge(a,"intf4"), + '--virt-bridge5' : lambda(a) : sys.set_virt_bridge(a,"intf5"), + '--virt-bridge6' : lambda(a) : sys.set_virt_bridge(a,"intf6"), + '--virt-bridge7' : lambda(a) : sys.set_virt_bridge(a,"intf7"), + '--dhcp-tag' : lambda(a) : sys.set_dhcp_tag(a,"intf0"), + '--dhcp-tag0' : lambda(a) : sys.set_dhcp_tag(a,"intf0"), + '--dhcp-tag1' : lambda(a) : sys.set_dhcp_tag(a,"intf1"), + '--dhcp-tag2' : lambda(a) : sys.set_dhcp_tag(a,"intf2"), + '--dhcp-tag3' : lambda(a) : sys.set_dhcp_tag(a,"intf3"), + '--dhcp-tag4' : lambda(a) : sys.set_dhcp_tag(a,"intf4"), + '--dhcp-tag5' : lambda(a) : sys.set_dhcp_tag(a,"intf5"), + '--dhcp-tag6' : lambda(a) : sys.set_dhcp_tag(a,"intf6"), + '--dhcp-tag7' : lambda(a) : sys.set_dhcp_tag(a,"intf7"), + '--kickstart' : lambda(a) : sys.set_kickstart(a), '--netboot-enabled' : lambda(a) : sys.set_netboot_enabled(a), - '--virt-path' : lambda(a) : sys.set_virt_path(a), - '--virt-type' : lambda(a) : sys.set_virt_type(a), - '--dhcp-tag' : lambda(a) : sys.set_dhcp_tag(a,interface="intf0") + '--virt-path' : lambda(a) : sys.set_virt_path(a), + '--virt-type' : lambda(a) : sys.set_virt_type(a) } - # add some command aliases for additional interfaces. The default commands - # only operate on the first, which are all many folks will need. - for count in range(0,7): - commands["--hostname%d" % count] = lambda(a) : sys.set_hostname(a,interface="intf%s" % count) - commands["--ip%d" % count] = lambda(a) : sys.set_ip_address(a,interface="intf%s" % count) - commands["--mac%d" % count] = lambda(a) : sys.set_mac_address(a,interface="intf%s" % count) - commands["--gateway%d" % count] = lambda(a) : sys.set_gateway(a,interface="intf%s" % count) - commands["--subnet%d" % count] = lambda(a) : sys.set_subnet(a,interface="intf%s" % count) - commands["--virt-bridge%d" % count] = lambda(a) : sys.set_virt_bridge(a,interface="intf%s" % count) - commands["--dhcp-tag%d" % count] = lambda(a) : sys.set_dhcp_tag(a,interface="intf%s" % count) - - def on_ok(): self.api.systems().add(sys, with_copy=True) return self.apply_args(args,commands,on_ok) diff --git a/cobbler/item_system.py b/cobbler/item_system.py index d8412b3..9f29095 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -90,14 +90,15 @@ class System(item.Item): # now backfill the interface structure with any old values from # before the upgrade - if __hostname != "": - self.set_hostname(__hostname, "intf0") - if __mac_address != "": - self.set_mac_address(__mac_address, "intf0") - if __ip_address != "": - self.set_ip_address(__ip_address, "intf0") - if __dhcp_tag != "": - self.set_dhcp_tag(__dhcp_tag, "intf0") + if not self.interfaces.has_key("intf0"): + if __hostname != "": + self.set_hostname(__hostname, "intf0") + if __mac_address != "": + self.set_mac_address(__mac_address, "intf0") + if __ip_address != "": + self.set_ip_address(__ip_address, "intf0") + if __dhcp_tag != "": + self.set_dhcp_tag(__dhcp_tag, "intf0") # backwards compatibility -- convert string entries to dicts for storage # this allows for better usage from the API. @@ -148,8 +149,9 @@ class System(item.Item): intf = self.__get_interface(interface) if intf["mac_address"] != "": return intf["mac_address"] - elif utils.is_mac(self.name) and interface == "intf0": - return self.name + # obsolete, because we should have updated the mac field already with set_name (?) + # elif utils.is_mac(self.name) and interface == "intf0": + # return self.name else: return None @@ -162,8 +164,8 @@ class System(item.Item): intf = self.__get_interface(interface) if intf["ip_address"] != "": return intf["ip_address"] - elif utils.is_ip(self.name) and interface == "intf0": - return self.name + #elif utils.is_ip(self.name) and interface == "intf0": + # return self.name else: return None |