diff options
Diffstat (limited to 'cobbler/item_system.py')
-rw-r--r-- | cobbler/item_system.py | 100 |
1 files changed, 89 insertions, 11 deletions
diff --git a/cobbler/item_system.py b/cobbler/item_system.py index 419399af..f8a8747f 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -59,9 +59,12 @@ FIELDS = [ ["gateway","",0,"Gateway",True,"",0,"str"], ["name_servers",[],0,"Name Servers",True,"space delimited",0,"list"], ["name_servers_search",[],0,"Name Servers Search Path",True,"space delimited",0,"list"], + ["ipv6_default_device","",0,"IPv6 Default Device",True,"",0,"str"], + ["ipv6_autoconfiguration",False,0,"IPv6 Autoconfiguration",True,"",0,"bool"], ["network_widget_a","",0,"Add Interface",True,"",0,"str"], # not a real field, a marker for the web app ["network_widget_b","",0,"Edit Interface",True,"",0,"str"], # not a real field, a marker for the web app ["*mac_address","",0,"MAC Address",True,"",0,"str"], + ["*mtu","",0,"MTU",True,"",0,"str"], ["*ip_address","",0,"IP Address",True,"",0,"str"], ["*bonding","na",0,"Bonding Mode",True,"",["na","master","slave"],"str"], ["*bonding_master","",0,"Bonding Master",True,"",0,"str"], @@ -72,6 +75,11 @@ FIELDS = [ ["*dns_name","",0,"DNS Name",True,"",0,"str"], ["*static_routes",[],0,"Static Routes",True,"",0,"list"], ["*virt_bridge","",0,"Virt Bridge",True,"",0,"str"], + ["*ipv6_address","",0,"IPv6 Address",True,"",0,"str"], + ["*ipv6_secondaries",[],0,"IPv6 Secondaries",True,"space delimited",0,"list"], + ["*ipv6_mtu","",0,"IPv6 MTU",True,"",0,"str"], + ["*ipv6_static_routes",[],0,"IPv6 Static Routes",True,"",0,"list"], + ["*ipv6_default_gateway","",0,"IPv6 Default Gateway",True,"",0,"str"], ["mgmt_classes",[],0,"Management Classes",True,"For external config management",0,"list"], ["template_files",{},0,"Template Files",True,"File mappings for built-in configuration management",0,"dict"], ["redhat_management_key","<<inherit>>",0,"Red Hat Management Key",True,"Registration key for RHN, Satellite, or Spacewalk",0,"str"], @@ -113,6 +121,7 @@ class System(item.Item): if not self.interfaces.has_key(name): self.interfaces[name] = { "mac_address" : "", + "mtu" : "", "ip_address" : "", "dhcp_tag" : "", "subnet" : "", @@ -123,6 +132,11 @@ class System(item.Item): "bonding_opts" : "", "dns_name" : "", "static_routes" : [], + "ipv6_address" : "", + "ipv6_secondaries" : [], + "ipv6_mtu" : "", + "ipv6_static_routes" : [], + "ipv6_default_gateway" : "", } return self.interfaces[name] @@ -363,6 +377,63 @@ class System(item.Item): intf["bonding_opts"] = bonding_opts return True + def set_ipv6_autoconfiguration(self,truthiness): + self.ipv6_autoconfiguration = utils.input_boolean(truthiness) + return True + + def set_ipv6_default_device(self,interface_name): + if interface_name is None: + interface_name = "" + self.ipv6_default_device = interface_name + return True + + def set_ipv6_address(self,address,interface): + """ + Assign a IP or hostname in DHCP when this MAC boots. + Only works if manage_dhcp is set in /etc/cobbler/settings + """ + intf = self.__get_interface(interface) + if address == "" or utils.is_ip(address): + intf["ipv6_address"] = address.strip() + return True + raise CX(_("invalid format for IPv6 IP address (%s)") % address) + + def set_ipv6_secondaries(self,addresses,interface): + intf = self.__get_interface(interface) + data = utils.input_string_or_list(addresses) + secondaries = [] + for address in data: + if address == "" or utils.is_ip(address): + secondaries.append(address) + else: + raise CX(_("invalid format for IPv6 IP address (%s)") % address) + + intf["ipv6_secondaries"] = secondaries + return True + + def set_ipv6_default_gateway(self,address,interface): + intf = self.__get_interface(interface) + if address == "" or utils.is_ip(address): + intf["ipv6_default_gateway"] = address.strip() + return True + raise CX(_("invalid format for IPv6 IP address (%s)") % address) + + def set_ipv6_static_routes(self,routes,interface): + intf = self.__get_interface(interface) + data = utils.input_string_or_list(routes) + intf["ipv6_static_routes"] = data + return True + + def set_ipv6_mtu(self,mtu,interface): + intf = self.__get_interface(interface) + intf["ipv6_mtu"] = mtu + return True + + def set_mtu(self,mtu,interface): + intf = self.__get_interface(interface) + intf["mtu"] = mtu + return True + def set_profile(self,profile_name): """ Set the system to use a certain named profile. The profile @@ -503,17 +574,24 @@ class System(item.Item): for (key,value) in hash.iteritems(): (field,interface) = key.split("-") field = field.replace("_","").replace("-","") - if field == "macaddress" : self.set_mac_address(value, interface) - if field == "ipaddress" : self.set_ip_address(value, interface) - if field == "dnsname" : self.set_dns_name(value, interface) - if field == "static" : self.set_static(value, interface) - if field == "dhcptag" : self.set_dhcp_tag(value, interface) - if field == "subnet" : self.set_subnet(value, interface) - if field == "virtbridge" : self.set_virt_bridge(value, interface) - if field == "bonding" : self.set_bonding(value, interface) - if field == "bondingmaster" : self.set_bonding_master(value, interface) - if field == "bondingopts" : self.set_bonding_opts(value, interface) - if field == "staticroutes" : self.set_static_routes(value, interface) + if field == "macaddress" : self.set_mac_address(value, interface) + if field == "mtu" : self.set_mtu(value, interface) + if field == "ipaddress" : self.set_ip_address(value, interface) + if field == "dnsname" : self.set_dns_name(value, interface) + if field == "static" : self.set_static(value, interface) + if field == "dhcptag" : self.set_dhcp_tag(value, interface) + if field == "subnet" : self.set_subnet(value, interface) + if field == "virtbridge" : self.set_virt_bridge(value, interface) + if field == "bonding" : self.set_bonding(value, interface) + if field == "bondingmaster" : self.set_bonding_master(value, interface) + if field == "bondingopts" : self.set_bonding_opts(value, interface) + if field == "staticroutes" : self.set_static_routes(value, interface) + if field == "ipv6address" : self.set_ipv6_address(value, interface) + if field == "ipv6secondaries" : self.set_ipv6_secondaries(value, interface) + if field == "ipv6mtu" : self.set_ipv6_mtu(value, interface) + if field == "ipv6staticroutes" : self.set_ipv6_static_routes(value, interface) + if field == "ipv6defaultgateway" : self.set_ipv6_default_gateway(value, interface) + return True def check_if_valid(self): |