=== CyberJacob is now known as CyberJacob|Away [01:50] morning ticking [01:50] errr [01:51] morning jtv [01:51] Hi bigjools [01:51] autocomplete? [01:55] no just incompetence [02:40] jtv1: why do we have a nodegroupinterface created in nodegroup.new()? === jtv1 is now known as jtv [02:40] Unpleasant, isn't it? Hysterical raisins. [02:40] it is responsible for the interface that has no name [02:40] I removed it and am running tests, there's a ton of failures [02:40] I hate it too. Complicates lots of tests, and the ones it simplifies, rely on the implicitness of it all. [02:41] blech [02:41] It would be very costly indeed to change. [02:41] Sheer number of tests that need updating... [02:42] Updating tests on autopilot would risk a lot of false negatives I think. [02:44] yes [02:44] but this empty interface is no use to man nor beast [02:46] Is it really empty though? I thought NodeGroup.new() took parameters that it passed on to the NGI? [02:48] but not the name [02:48] so it's useless [02:48] BTW: [02:48] File "/home/ubuntu/trunk/src/maasserver/preseed.py", line 99, in get_curtin_installer_url [02:48] node.architecture + "/" + series + [02:48] TypeError: coercing to Unicode: need string or buffer, NoneType found [02:48] not sure why I am getting those all of a sudden [02:49] I made changes there, though as far as I could tell, the None was always a risk there. [02:51] pick_cluster_controller_address() must be returning None. Which can happen. [02:52] Just not in any case where the old code didn't also return None. [02:53] yegads is that how deep this insanity goes... [02:53] Ahhhh, maybe the nodegroupinterface has a null IP address? [02:54] Ohhhh, what does NodeGroupInterface.get_network() do in that case? [02:54] Sorry, .network [02:55] I wonder why it uses the broadcast address. But no matter. [02:55] What may be happening is that your node is in the network defined by a nodegroupinterface whose ip field is None. [02:57] The ip field is not allowed to be null... so not that. [02:57] The only cases where pick_cluster_controller_address can return None AFAICS are: NodeGroupInterface.ip is None, or the NodeGroup has no NodeGroupInterfaces. [03:00] Whu!? NodeGroupInterface.network has some details that puzzle me. [03:02] Implicit conversions to bool, construction of an IPNetwork from another IPNetwork... [03:03] IPNetwork("%s/%s" % (IPNetwork("%s/%s" % (broadcast, netmask)), netmask) → why? [03:07] Ah, missed one: [03:08] IPNetwork("%s/%s" % (IPNetwork("%s/%s" % (broadcast, netmask)).network, netmask) [03:09] Looks like the intent is to strip the host bits off the network address. [03:41] doesn't IPNetwork have functions to do that? [03:41] Yes. [03:41] also should we remodel NGI to use a Network FK? [03:41] I've got a branch here that simplifies that, and provides a wrapper for the error-prone IPNetwork constructor. [03:43] You're right that a foreign key makes sense... Unfortunately the situation with the broadcast address gets a bit convoluted. [03:43] I don't see why we store the broadcast address at all. [03:43] You see what I mean? Weird to have a FK to Network, _and_ a broadcast IP. [03:44] Technically just the IP address might be enough — call it ip plus FK. [03:44] jtv: we are going to need a FK at some point because we need to track which NIC the network lives on [03:45] oh no we don't [03:45] sorry mixing up my ngi and node interfaces [03:46] jtv: anyway broadcast as a separate field becomes irrelevant [03:51] It'd be nice to ditch it... === CyberJacob|Away is now known as CyberJacob [08:31] jtv, rvba, allenap: Anyone know why bin/test.maas would be hanging after: [08:31] nosetests maasserver.tests.test_power_parameters --exclude=provisioningserver --exclude=maastesting --exclude=maascli --verbosity=3 [08:31] nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$'] [08:31] nose.config: INFO: Excluding tests matching ['provisioningserver', 'maastesting', 'maascli'] [08:31] ? [08:32] gmb: database in use? [08:32] e.g. if you have a "make harness" session open in another shell. [08:34] jtv: AAAAH. [08:34] jtv: Yep, thanks. [08:34] \o/ === CyberJacob is now known as CyberJacob|Away [09:56] rvba: from this log you pasted, http://paste.ubuntu.com/6890145/ — is there a corresponding GET on interfaces/eth0/ before the PUT? [09:56] If there is, there may be a client-side race condition. [09:57] I don't remember one. [09:57] (I don't have the full log) [09:57] But if there isn't, and we just do a PUT that updates a few attributes and leaves the others unchanged, then it would have to happen in a transaction. [09:57] I'll look at maas-test code again. [09:58] jtv: let's talk about this in a hangout if you don't mind. [10:23] Interesting, test tools doesn't appear to have a facility to say "always show the details of the test run, even on success." Well, isn't that wizard? [10:23] * gmb hacks. === freeflying is now known as freeflying_away [23:07] bigjools: around?