| === 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!