/srv/irclogs.ubuntu.com/2012/09/20/#maas.txt

jtvbigjools: complication with the specify-nodegroup-when-creating-node story is that we don't give users a way to identify nodegroups apart from uuids.02:26
bigjoolsmorning jtv02:27
jtvAnd good morning02:27
bigjoolsyes, we briefly talked about that yesterday02:27
bigjoolswhich is why I said to use subnet02:27
jtvWhich didn't work for cases where we don't manage dhcp.02:27
bigjoolsit can, if the subnet is provided regardless02:28
bigjoolswhere provided means configured on nodegroup02:28
jtvYes, that'd help.02:28
bigjoolsdid you have any other ideas?02:28
jtvOnly things like “identify by uuid but show name and subnet in the UI.”  I still haven't found a way to identify objects _in the API call_ based on something other than id though.02:29
jtvThe form logic seems to mandate id as the key.02:30
jtvI'm trying to get around that.02:30
bigjoolsoh smeg02:31
jtvYeah.  The convenience of frameworks is like the beauty of a Potemkin village.02:31
jtvSkin deep.02:31
jtvAlso, always specifying the subnet feels like it's going to have widespread consequences.02:32
bigjoolsit would be worth asking for more opinions on this02:33
jtvI already had a pre-imp with Raphaël.  He said it was doable to use a different key for passing a nodegroup to the form, so I'm still searching.02:36
bigjoolsI need lunch02:38
bigjoolsback later02:38
bigjoolsjtv: btw I sorted the package build problem04:13
bigjoolsbranch up for review04:13
jtvbigjools: whoo04:14
bigjoolshttps://code.launchpad.net/~julian-edwards/maas/packaging/+merge/12539304:14
bigjoolsnot sure I like the tests themselves mind, they seem hard-coded to work in the qa lab04:15
jtvbigjools: reviewed04:15
jtvYes, they are hardcoded to work in the qa lab.  I think I reviewed that bit and said the same thing.  But couldn't hold the whole thing up for that, given the circumstances.04:16
jtvafk for a bit.04:25
jtvBack.04:53
bigjoolsme too05:01
jtvGreat, then we're both back.05:08
jtvWow, a quick round around the block can really clear the head.05:08
bigjoolsyes05:08
jtvI keep skipping that to get work done, and then when there's finally time, it's dark and raining.05:09
jtvMaking progress on select-nodegroup-for-node, thanks to postgres.05:30
jtvBut it's like trying to hack your way into a voodoo ritual.05:32
jtvWhich, in case you've never tried it, is mostly a matter of just trying things.05:33
jtvbigjools: currently working on getting the django form to do what I want; we'll also need to figure out what needs doing in order to get a subnet for every nodegroup.05:53
bigjoolsjtv: we'll make it part of cluster registration05:54
bigjoolsjtv: subnet will return many matches on NodeGroupInterface but fortunately one NodeGroup05:55
jtvMany, even?05:55
jtvBTW since it's easy, I'm making it accept any IP address within the nodegroup's subnet.  So you can pass the node's IP, or the cluster manager's IP within the subnet, or the base address, or the broadcast address, or…05:56
jtvAvoids confusion about the bits that just don't matter.05:56
bigjoolsbroadcast address?05:57
bigjoolsok might be ok05:57
jtvI notice for example that Raphaël likes to write addresses like 192.168.1.1/24 where I prefer 192.168.1.0/24.  The difference shouldn't matter.05:58
jtv\o/ I built a package!  Thank you again.05:59
bigjools:)05:59
jtvNow, one issue: how do I represent the nodegroups as labels in the UI, if the label is a subnet and the nodegroup may have multiple subnets?06:01
bigjoolslabels?06:01
jtvLabels for the selection of a node's nodegroup.06:01
jtvIn other words, what is the human-readable identification of a nodegroup?06:01
jtvI was thinking of showing subnet and name, but if there are multiple subnets…06:02
bigjoolshmmm06:04
bigjoolsI'd just show first subnet/name06:05
jtvI could probably just show all, but I don't know how many subnets there might be per nodegroup.06:06
jtvI guess right now it's still just one.06:06
jtvget_managed_interface() is singular.06:06
bigjoolsyer06:06
jtvI wonder why the lovely nodegroup field I added shows up when editing an existing node (when I don't want it) but not when creating a new one (when I do want it).06:09
bigjoolsgrar06:10
bigjoolsjtv: I know a man who will know06:10
* bigjools wonders why the maas-dhcp package depends on the maas package06:10
jtv!?06:11
jtvShouldn't that be the other way around?06:11
jtvAnd then maas-dhcp can depend on maas-common?06:11
bigjoolsno, there should be no dependency at all06:11
jtvAh, right.  Not if we want to be able to run appservers without master workers.06:12
jammgz: ping me when you are back from lunch, I decided to reverse the many-to-many to have node.tags rather than tag.nodes.13:02
jamIt felt more natural to say node.tags.add(tag) rather than tag.nodes.add(node)13:02
mgzjam: okay, will update my copy of your branch13:03
jammgz: I'm happy to review or just preliminary look over (and fix up) a branch that you have13:03
mgzjam: ta, will post things13:07
mgzallenap or rvba: can you take a look at jam's tag-tables mp and see if there's anything that you're not happy with?13:12
mgzthis is the main bit of interface we'll actually be sticking with, everything else is more temporary13:12
rvbamgz: ok, I'll have a look.13:13
allenapmgz, jam: It looked good to me a day or two ago. rvba, any Django-expert reservations about tag-tables?13:20
smoserrvba, so did we decide what '--ip=' is supposed to do to mean when given to 'maas config_master_dhcp'13:22
rvbamgz: jam allenap, that change looks good to me.13:22
mgzace, thanks guys13:24
jammgz, rvba: thanks, submitted.13:25
mgzhm, for migrations, should they be strictly linear? so, I should base my branch off any existing migration branches so we don't get two 0026-s?13:25
jammgz: i think allenap is the one to ask, but it does look that way to me13:26
rvbamgz: it's very important that you merge trunk first and regenerate the migration if necessary.13:26
mgzI'll pull and rebase then, thanks.13:26
rvbaSouth puts the complete state of the models in every migration.  It uses the last migration to compute diffs when you change a model.13:27
rvbaI suppose you can see how wrong this can go :)13:27
mgzyeah, just looking at that, why record all models, even the completely unrelated ones?13:28
rvbaYeah, it's a bit stupid but even if South was smarter that would not solve all the potential problems.13:29
rvbamgz: the rule of thumb is that if you see someone created a migration while you were working on yours, you have to merge and *recreate the migration*.  Rebasing won't be enough.13:31
jammgz: you have to change your needsfixing to approve13:31
jamrvba: isn't it possible to rm *my_migration, 'bzr merge theirs/trunk', bin/... --auto ?13:32
rvbamgz: because if the other migration added a field, your new migration (if you simply rebase) won't have that field and so the state in the latest migration will be wrong (that new field will be missing).13:32
rvbajam: absolutely.13:32
rvbaThat's what I meant by 'recreate the migration'13:32
mgzjam: didit.13:33
jamallenap, rvba, mgz: I'm looking at adding an API equivalent to Nodes.list() for Tag.list()13:50
jamI'm noticing that nodes have some NODE_PERMISSION.VIEW etc stuff.13:50
jamshould we be setting ownership for tags similarly?13:50
mgzhm, I'd say not13:51
=== cmagina_ is now known as cmagina
mgztags are an adminny thing, but don't really have ownership, whereas nodes may need to be queried by non-admin users13:51
rvbaI think this will complicate things for little added benefit.13:51
jamrvba: I definitely agree it will complicate things. I just don't know the Maas users model very well.13:54
jamIf it would be a problem that user A created a tag, and user B would have access to change it.13:54
rvbajam: is tag editing something that is accessible to all users?13:56
mgzrvba, I think not.13:56
jamrvba: is tag editing something that should be restricted to specific users? If so, which ones?13:56
jamI can give answers, but I don't have the depth of background to know for sure that they are good ones. :)13:57
jamwe can certainly say must be superuser or somehow marked as admin?13:57
rvbaThat sounds reasonable to me to restrict that to admin users.13:57
rvbaBut I can't say I have looked at the use case in great detail.13:58
jamrvba: so there seems to be 'User.is_superuser' and 'User.is_staff'14:01
rvbajam: 'is_staff' means 'can access the admin site'.14:02
rvbajam: in MAAS, we only use 'is_superuser'.14:02
jamright, which sounded like an admin to me14:02
jamk14:02
rvbaroaksoax: Hi Andres.  It turns out we can land the branch we discussed yesterday which creates the rabbitmq user used for celery communications.  Right now, both the celery worker and the MAAS server use the same file to get the broker credentials.  So the change I'm proposing in https://code.launchpad.net/~rvb/maas/packaging.set-rabbitmq-creds/+merge/125248 can be applied right now.14:07
rvbaroaksoax: I've added (upsteam) a file named contrib/maas_local_celeryconfig.py.  That file is loaded from celeryconfig and should contain the location-specific BROKER_URL.  It's that file that my change in the packaging modifies.14:09
roaksoaxrvba: alright, I'll look at it later today14:10
rvbaroaksoax: this works exactly as contrib/maas_local_settings.py works but of course I'll need you to help me out with the packaging branch and the testing as I might have missed some things.14:10
rvbaroaksoax: cool, thanks a lot.14:10
roaksoaxrvba: hold on14:12
roaksoaxrvba: we are shipping a celeryconfig.py and now a maas_local_celeryconfig.py?14:12
roaksoaxrvba: and that file is symlinked to usr/share/maas/celeryconfig.py14:13
rvbaroaksoax: yes, I'm ok to change that it you can think of a better way, but this is exactly the same as what we've done with src/maas/settings.py and contrib/maas_local_config.py.14:13
roaksoaxrvba: cant it just be the same file ? celeryconfig.py and maas_local_celeryconfig.py?14:13
rvbaroaksoax: well, one is part of the package and the other one is populated at install time.14:14
rvbaI thought this was the right way to do it.  But I'm happy to do that differently if you think that's better.14:14
rvbaroaksoax: maas_local_celeryconfig.py only contains the things that are specific to each installation, right now only the BROKER_URL param.14:15
roaksoaxrvba: i'll take a look first, and then will let oytu know14:15
rvbaroaksoax: all right.14:15
roaksoaxrvba: so celeryconfig.py will be installed in usr/share/maas/ and maas_local_celeryconfig.py installed in /etc/maas and symlinked to usr/share/maas right?14:15
rvbaroaksoax: yes.14:16
rvbaroaksoax: celeryconfig.py is not meant to be changed by a user.14:16
roaksoaxrvba: alright14:16
roaksoaxallenap: ping14:17
=== matsubara-afk is now known as matsubara
mgzurk, datamigration hiccough, I need to transfer stuff from metadataserver to maasserver... which are managed seperately by south14:28
mgzis there something magic I need?14:28
mgz...the south docs seem to cover it at least14:32
jamanyone know a way to get nose to only run the tests associated with one test class?14:38
jamI want to add my tests into test_api, but that is 200+ tests that I don't need to run every time.14:38
mgzthe first arg should extend down from modules into test classes as per -s on bzrlib, no?14:39
jammgz: when I do it (as I think it would look) I get 0 tests run14:40
jamit seems to only match at the Module leve14:40
jamlevel14:40
jammgz: bin/test.maas --exclude=Node maasserver.tests.test_api.TestNodesAPI14:41
jamfor example14:41
jamwell, remove the --exclude, just a sec14:41
jamyeah, still 014:41
jambin/test.maas maasserver.tests.test_api.TestNodesAPI14:41
jamnote that if you have a typo14:42
jamsuch as14:42
jambin/test.maas maasserver.tests.test_api.TestNodesAPIXXXX14:42
jamthen it tells you no-such-attribute14:42
mgz...that's no fun14:42
jammgz: http://nose.readthedocs.org/en/latest/usage.html looks like you need to use a :14:43
jam bin/test.maas maasserver.tests.test_api:TestNodesAPI14:43
rvbajam: mgz: you can use ./bin/maas test src/maasserver/tests/test_api.py:TestNodeGroupAPI14:49
rvbaor even, to run a particular test: ./bin/maas test src/maasserver/tests/test_api.py:TestNodeGroupAPI.test_method14:49
jamrvba: yeah, you can use the python path, or the filename path, and then a :Class, it just took me a while to find the ':' magic.14:49
rvbajam: there is a note about that in HACKING.txt ;)14:50
mgzrvba: I don't suppose you know the exact form of the filenames in NodeCommissionResult14:51
allenaproaksoax: pong14:51
mgzI'm reading etc/maas/commissioning-user-data but my bash is not good enough to be confident that I understand the exact form14:52
mgzit looks like it should be 01-lshw.out, but will it be absolute including /tmp or does one of the bash magic things make it relative?14:52
jammgz:       fargs="$fargs --file=${file##*/}"14:54
jamI think that means strip all the beginning14:54
jameverything up to a '/'14:54
jammgz: see man bash, and /##14:55
jam(grep for ##)14:55
mgzthanks, and it's greedy with the double hash14:56
jammgz: also see the python code, which does files[os.path.basename(fpath)] = ...14:56
jamthat leaves a lot of open file handles lying around.14:57
jammgz: should I expose tag URIs by their tag name? or by their tag.id?14:57
jam(nodes are expose by their system_id14:57
jamwhich is probably closer to name than DB id)14:58
mgzthe name seems preferable14:58
rvbamgz: no, sorry, my bash-fu is not strong enough for me to be really confident with that script ;)14:59
rvbamgz: using the name seems much better to me too.14:59
roaksoaxallenap: apiclient needs only python-oauth or httplib2 too?15:01
mgz"The model 'nodecommissionresult' from the app 'metadataserver' is not available in this migration."15:07
mgzthat is not encouraging...15:07
allenaproaksoax: I'll check15:08
allenaproaksoax: Only python-oauth right now, but it will soon require python-httplib2.15:09
roaksoaxallenap: ok will update the package when that happesn15:10
roaksoaxallenap: i separated apiclient from maascli15:10
roaksoaxallenap: it *is* required by provisioningserver15:10
allenaproaksoax: Cool.15:10
mgzhopefully --freeze metadataserver is not harmful...15:10
jammgz: if you are curious: lp:~jameinel/maas/tag-list-api now has exposed a '/tags/' api and a '/tags/<name>/' api. They don't really do much yet, but it is a start.15:11
jami'll poke at it a bit more later, but it is time for dinner now.15:11
mgzjam: ace, will have a look15:12
mgzthe sampledata doesn't include anything from metadataserver though, so I'm not sure how confident I am of this migration code15:13
mgzand migrations don't seem very testable...15:13
roaksoaxallenap: cna we already start nodes from your cli?15:14
roaksoaxrvba: around?15:26
roaksoaxjtv: around15:26
roaksoax?15:26
roaksoaxallenap: around?15:26
rvbaroaksoax: yep.15:26
mgzI take it no one minds if I add more sample data15:26
roaksoaxrvba: were there any recent changes with the PXE templates? I'm getting   AssertionError: No PXE template found in '/usr/lib/python2.7/dist-packages/provisioningserver/pxe'!15:27
rvbaroaksoax: not that I know of… let me have a look at the commit history.15:28
rvbaroaksoax: looks like this might be a side effect of the changes introduced in revision 1025. allenap, can you help us out here, I see you've reviewed that change…?15:30
roaksoaxrvba: ok I figured it out, it seems due to the fact that when you start a node and the node is not allocated to anybody15:32
roaksoaxthe node still pxeboots15:32
roaksoaxand before we had a poweroff thing i think15:32
roaksoaxmatsubara: the issue that you were seeing when booting and getting stuck, was on commissioning right?15:35
matsubararoaksoax, enlisting15:36
matsubararoaksoax, oh wait, you mean the ipmi thing? or the image issue?15:36
roaksoaxmatsubara: the image issue. I'm getting a similar issue with quantal images15:37
matsubararoaksoax, the image issue happened during enlisting. It was due to some changes to kernel options passed on that smoser knows more about15:40
roaksoaxmatsubara: kyeah15:41
roaksoaxalright15:41
roaksoaxmine seems unrelated after all15:41
smoserroaksoax, what are you seeing ?15:42
smoseri am close to being able to have quantal images produced as 'daily'15:42
smoserall the changes are into archive except for 1 (mountall bug 643289)15:43
ubot5Launchpad bug 643289 in nfs-utils (Ubuntu Precise) "idmapd does not starts to work after system reboot" [High,Triaged] https://launchpad.net/bugs/64328915:43
roaksoaxsmoser: nothing really, my own dumbness i guess15:43
roaksoaxsmoser: your change to the console output made me think there was an error on quantal installer15:43
smoserah. yeah. i can see that.15:45
smoserso we need to make that easily configurable.15:45
smoseras your usecase is not unreasonable15:45
smoserbut in "hyperscale", i surely dont think anyone is going to be watching video consoles15:45
roaksoaxindeed15:45
smoserand serial console is very likely to be loggable15:45
roaksoaxsmoser: do you know why libvirt might not be be serving DNS anymore?15:49
smoserwhat do you mean.15:50
roaksoaxsmoser: for some reason, the machines I deploy on libvirt, i.r.       <host mac='00:16:3e:3e:aa:01' name='node01' ip='192.168.123.101' />15:50
roaksoaxno longer resolve15:50
roaksoaxto the dns name15:50
smoseroh. you mean in vdenv ?15:57
roaksoaxsmoser: Yep15:57
smoseri'm not sure. i've not used in a long time.15:57
smoserit*should* work :)15:57
roaksoaxyeah it was working16:03
roaksoaxfor some reason it no longer does16:03
roaksoaxoh well16:03
roaksoaxsmoser: could you please? https://code.launchpad.net/~andreserl/maas/packaging_maas_client_improvements/+merge/12550716:15
smoserroaksoax, can you clarify for me?16:23
smoserpython -c 'import apiclient'16:23
smoseris that how you'd use this "apiclient" ?16:23
smoserbecause that is a flat out broken name.16:23
roaksoaxsmoser: that's how upstream has it16:24
smoserie, 'python -c import maas_apiclient'16:24
smoseryeah, thats broken.16:24
roaksoaxsmoser: unless, that all gets installed as a private module16:25
smoserwhat do you mean ?16:26
roaksoaxsmoser: install it in /usr/share/maas16:26
smoseri'll open a bug on it.16:27
smoserits just bad though.16:27
roaksoaxi agree, but that's what private modules in packaging terms are for I guess16:28
roaksoaxthough that isn't really that private16:28
smoserupstream maas has essentially claimed the names 'provisioningsever', 'metadataserver' 'maasserver' and now 'apiclient'16:28
smoseri'm perfectly fine with16:28
smoserpython -c 'import maas.provisioningsever'16:28
roaksoaxsmoser: right, thought that's why we can change the installation path to be a private module rather than a public one16:30
roaksoaxi don't know, however, how things will be affected16:30
roaksoaxwe'll definitely have things broken16:30
smoserhttps://bugs.launchpad.net/maas/+bug/105350716:31
ubot5Ubuntu bug 1053507 in MAAS "maas installs python modules with out any namespacing" [Undecided,New]16:31
roaksoaxsmoser: but I agree with you, it should be maas.XYZ16:31
roaksoaxmaas.apiclient maas.provisioningserver etc etc16:31
* roaksoax lunch16:33
=== matsubara is now known as matsubara-lunch
=== matsubara-lunch is now known as matsubara

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!