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