I recently changed rhnServerNetwork due IPv6 and it was quite straight. Now I focused on rhnServerInterface and I want to give you chance to argue with me, before I do the change. :)
Today the table looks like: http://spacewalk.redhat.com/documentation/schema-doc/table-RHNSERVERNETINTERFACE.html It has columns: * SERVER_ID NUMBER(38) * NAME VARCHAR2(32) IP_ADDR VARCHAR2(64) NETMASK VARCHAR2(64) BROADCAST VARCHAR2(64) HW_ADDR VARCHAR2(18) MODULE VARCHAR2(128) CREATED DATE MODIFIED DATE "*" marks primary key Previusly clients send over XMLRPC this data: intDict[interface] = {'hwaddr':hwaddr, 'ipaddr':ipaddr, 'netmask':netmask, 'broadcast':broadcast, 'module': module } for some time (since 2010-11-20) it send: intDict[interface] = {'hwaddr':hwaddr, 'ipaddr':ipaddr, 'netmask':netmask, 'broadcast':broadcast, 'module': module, 'ipv6': ip6_list} where ip6_list is: ip6_list.append({ 'scope': ip6.scope, 'addr': ip6.address, 'netmask': ip6.netmask }) The ipv6 key/value pair is ignored by server for now. The IPv6 stuff will not fit into current table so I come with following solution: Simplify table rhnServerInterface to columns: * SERVER_ID NUMBER(38) * NAME VARCHAR2(32) HW_ADDR VARCHAR2(18) MODULE VARCHAR2(128) CREATED DATE MODIFIED DATE Create new table rhnServerInterfaceIPv4 with columns: * SERVER_ID NUMBER(38) * NAME VARCHAR2(32) IP_ADDR VARCHAR2(64) NETMASK VARCHAR2(64) BROADCAST VARCHAR2(64) CREATED DATE MODIFIED DATE Migration of existing data from rhnServerInterface to this new table is easy and should not be problem. Create new table rhnServerInterfaceIPv6 with columns: * SERVER_ID NUMBER(38) * NAME VARCHAR2(32) SCOPE VARCHAR2(19) ADDR VARCHAR2(45) NETMASK VARCHAR2(49) CREATED DATE MODIFIED DATE SCOPE can be (according rfc2373): scop is a 4-bit multicast scope value used to limit the scope of the multicast group. The values are: 0 reserved 1 node-local scope 2 link-local scope 3 (unassigned) 4 (unassigned) 5 site-local scope 6 (unassigned) 7 (unassigned) 8 organization-local scope 9 (unassigned) A (unassigned) B (unassigned) C (unassigned) longest is organization-local with 19 chars, but I seen more different strings already ("local", "universe" etc.). So I tend to think that more general VARCHAR(128) would be better here. ADDR - longest IPv6 address can be 45 character wide. While we may normalize the address and make it shorter. Question is whether we want it normalize here or exactly as we get it over wire. NETMASK - it is addr plus "/128" as longest prefix. Comments? -- Miroslav Suchy Red Hat Satellite Engineering _______________________________________________ Spacewalk-devel mailing list Spacewalk-devel@redhat.com https://www.redhat.com/mailman/listinfo/spacewalk-devel