=== CyberJacob is now known as CyberJacob|Away | ||
bigjools | morning ticking | 01:50 |
---|---|---|
bigjools | errr | 01:50 |
bigjools | morning jtv | 01:51 |
jtv | Hi bigjools | 01:51 |
jtv | autocomplete? | 01:51 |
bigjools | no just incompetence | 01:55 |
bigjools | jtv1: why do we have a nodegroupinterface created in nodegroup.new()? | 02:40 |
=== jtv1 is now known as jtv | ||
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:40 |
bigjools | blech | 02:41 |
jtv | It would be very costly indeed to change. | 02:41 |
jtv | Sheer number of tests that need updating... | 02:41 |
jtv | Updating tests on autopilot would risk a lot of false negatives I think. | 02:42 |
bigjools | yes | 02:44 |
bigjools | but this empty interface is no use to man nor beast | 02:44 |
jtv | Is it really empty though? I thought NodeGroup.new() took parameters that it passed on to the NGI? | 02:46 |
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:48 |
jtv | I made changes there, though as far as I could tell, the None was always a risk there. | 02:49 |
jtv | pick_cluster_controller_address() must be returning None. Which can happen. | 02:51 |
jtv | Just not in any case where the old code didn't also return None. | 02:52 |
bigjools | yegads is that how deep this insanity goes... | 02:53 |
jtv | Ahhhh, maybe the nodegroupinterface has a null IP address? | 02:53 |
jtv | Ohhhh, what does NodeGroupInterface.get_network() do in that case? | 02:54 |
jtv | Sorry, .network | 02:54 |
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:55 |
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. | 02:57 |
jtv | Whu!? NodeGroupInterface.network has some details that puzzle me. | 03:00 |
jtv | Implicit conversions to bool, construction of an IPNetwork from another IPNetwork... | 03:02 |
jtv | IPNetwork("%s/%s" % (IPNetwork("%s/%s" % (broadcast, netmask)), netmask) → why? | 03:03 |
jtv | Ah, missed one: | 03:07 |
jtv | IPNetwork("%s/%s" % (IPNetwork("%s/%s" % (broadcast, netmask)).network, netmask) | 03:08 |
jtv | Looks like the intent is to strip the host bits off the network address. | 03:09 |
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:41 |
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:43 |
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:44 |
bigjools | oh no we don't | 03:45 |
bigjools | sorry mixing up my ngi and node interfaces | 03:45 |
bigjools | jtv: anyway broadcast as a separate field becomes irrelevant | 03:46 |
jtv | It'd be nice to ditch it... | 03:51 |
=== CyberJacob|Away is now known as CyberJacob | ||
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:31 |
jtv | gmb: database in use? | 08:32 |
jtv | e.g. if you have a "make harness" session open in another shell. | 08:32 |
gmb | jtv: AAAAH. | 08:34 |
gmb | jtv: Yep, thanks. | 08:34 |
jtv | \o/ | 08:34 |
=== CyberJacob is now known as CyberJacob|Away | ||
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:56 |
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:57 |
rvba | jtv: let's talk about this in a hangout if you don't mind. | 09:58 |
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. | 10:23 | |
=== freeflying is now known as freeflying_away | ||
roaksoax | bigjools: around? | 23:07 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!