[04:20] hello anyone about? i'd like to figure out the best way to solve this situation. parent folder A contains N subfolders, B, C, D, ... [04:21] C and D are individually marked to be synced [04:21] i would simply like to sync A now, to get all the subfolders [04:21] but i can't, at least not via the nautilus interface [04:24] * achiang tries "stop synchronizing this folder" on the subfolders and then syncing the parent [07:37] hmm. I thought desktopcouch in Oneiric had been fixed? [07:37] I still get couchdb.http.Unauthorized: ('unauthorized', 'Authentication required.') when I try to connect to it. [07:51] ... or is it just me? I upgraded from Oneiric, and then it stopped working. [07:51] from Natty, to Oneiric, I mean. [08:37] morning all! [08:51] Morning all! [09:05] Hi everyone :) [09:26] hi everyone === teknico_ is now known as teknico [10:12] hi gatox \o [10:13] karni, hi!! this friday i'm receiving a phone with meego (i told you about a while ago), so i'll be doing (if i can :P) a port of ubuntu one mobile to that phone :D [10:15] gatox: wo-hooo \o/ sweet! [10:15] karni, so i'll be asking you some stuff if i have doubts :P [10:16] gatox: of course! :) [10:16] My pleasure to help. [10:22] gatox: when you think it and you can take it, let us know and we'll tweet about it so you get some extra hands on it :) [10:23] gatox: (from the Ubuntu One account, which has a bunch of followers) [10:24] Chipaca, awesome! thanks!! It also is going to appear in Qt pages, so more publicity there :D [10:25] :) [10:25] HLQP, etc :) [10:26] morning! [10:27] ralsina, morning! [10:34] hiya ralsina ! [10:37] hi karni, gatox [11:01] gatox, that is assuming I bring the phone with me buahahahahahaha [11:02] mandel, jejejejee pleaseeeeeeeeeeeee :P [11:03] :p [11:04] ralsina, ping [11:06] ralsina, can i have a quick review? :P https://code.launchpad.net/~diegosarmentero/ubuntu-sso-client/verification-code/+merge/75755 [11:07] mandel: pong [11:07] gatox: sure [11:07] ralsina, thanks [11:09] ralsina, I have a logistics question, shall I ask for conference days for the days I'm travelling to pyconar? aslo, has alecu mentioned the sprint of sugar labs? [11:11] mandel: conference days for travel, I don't know but I expect yes [11:11] And yes, I know about the sugar labs sprint. Why? [11:13] gotta take the kid to school, I'll be back in 1 hour or so [11:13] ralsina, 'cause I was going to take part :P [11:13] ralsina, ok, latars! [11:13] s/latars/laters [11:13] mandel: ok, you take part. So? ;-) [11:14] ok, really leaving now. See you guys in a bit [11:14] ralsina, I dont know, I though I had to let you know hehehe [11:29] gatox, can you do me a favour? [11:29] mandel, shoot [11:30] mandel, can you run the tests on windows for ubuntuone-windows-installer and tell me if you get any failures? [11:31] fuck, QEventReactor does not have defer to thread? what the fuck! [11:31] mandel, just the last u1 installer in trunk or any branch in particular? [11:31] that was no a ? it is a statement, stupid irc client :( [11:31] gatox, trunk please :) [11:32] mandel, ok...... on iit [11:33] mandel, everything is ok here [11:34] gatox, ok? I'll see what I screwed up [11:34] mandel, do you know where is located this ui?? https://launchpadlibrarian.net/79356411/Screenshot-Create%20Ubuntu%20One%20account.png (it is from gtk) [11:34] i can't find it [11:35] mandel, i'm trying to look for the strings but it's not working [11:37] gatox, let me take a look [11:37] gatox, in sso, right? [11:37] mandel, i think... [11:38] gatox, I'm pulling trunk, but I think I know where it is :) [11:39] gatox, ubuntu_sso/utils/ui.py [11:39] grep "I agree" ubuntu_sso/ -Rn [11:39] hehe [11:40] gatox, the app_name is a parameter, that is why you probably did not find it :) [11:41] mandel, thanks! [11:43] gatox, no worries :) [11:55] * mandel walking dog [12:05] can I get help with ubuntu one here? [12:06] When I try to create a new address book on my new natty machine, ubuntu one is not an option [12:11] hi all [12:12] i'm using python and oauth2 to upload files to the cloud but i have a problem when i create a file [12:15] i got "file upload conflicted with another transaction" [12:33] FxIII, hi! that's interesting, we've seen some of those spuriously [12:33] FxIII, those this happen consistently? [12:34] I think so [12:35] FxIII, are you uploading files in parallel or serially? [12:35] beuno: im on interactive interpreter but for now it will do it over and over [12:35] beuno: one at time [12:36] https://files.one.ubuntu.com/content/~/Ubuntu%20One/test.txt [12:37] i get /content/~/Ubuntu%20One by calling the api [12:37] https://one.ubuntu.com/api/file_storage/v1/~/Ubuntu One [12:37] https://one.ubuntu.com/api/file_storage/v1/~/Ubuntu%20One [12:38] mandel, alecu, gatox: after friday's mailing we are up to over 400 windows users connected [12:38] ralsina, wow! awesome! [12:38] FxIII, on a call, let me hand you over to vds [12:39] gatox: do you have 30 minutes free today so I can walk you through building an installer? [12:39] * ralsina wants the project to be bus-proof [12:39] ralsina, jejej yes! also.... i would like to ask you something about the network detection [12:39] gatox: cool [12:39] ralsina, and have another really quick review if you have the time cof cof jeje [12:40] gatox: in a few minutes, I haven't done the other one yet [12:40] ralsina, ok! [12:40] beuno: vds? [12:42] * mandel back [12:42] ralsina, how is the release being done? mean, we are sending emails etc... [12:43] ralsina, I've been ask by several people about the new client :) [12:43] mandel: joshua has a list of people who used the old beta, and we are mailing them in batches, we are up to 10K now [12:43] mandel: you can't give them the URL but I'd say "google for it" is not a bad advice, and it does work ;-) [12:44] FxIII, yes, but he may be at lunch [12:44] gatox: don't remove the blank line in line 88 of the diff. It's PEP-compliant. [12:45] * gatox looking.... [12:46] ralsina, really?? most of the classes don't have that line [12:46] ah ok beuno i didn't understand [12:46] beuno: if it can be usefull i saw the file are actually stored [12:46] gatox: because they are not PEP-compliant [12:47] ralsina, ok, changing it back [12:47] ralsina, ah, nice :) [12:48] mandel: quick mumble re: pyconar? [12:48] ralsina, so, the 400 uses, how many people are out of the number of email we have sent? [12:48] ralsina, ok [12:48] mandel: about 4% [12:48] ralsina, out of the sent emails or out of all users... [12:48] mandel: about 4% of the mails sent [12:49] mandel: OTOH, that was sent on friday so I expect it to raise fr a day or two more [12:49] ralsina, ok [12:49] OTOOH I ust noticed this is the public channel. OOPS. [12:59] me [12:59] me [13:00] alecu, gatox, dobey, standup [13:00] me === mandel is now known as standup [13:01] me === standup is now known as mandel [13:01] hehehe [13:01] jeje [13:01] ok, mandel, go [13:01] DONE: Improve tests and code for auto-updater. [13:01] TODO: Commit those ^ changes and ask for reviews. Create migration script from old beta to new [13:01] BLOCKED: no [13:01] COMMENTS QEventReactor those not implement deferToThread that is an utter crap [13:01] * ralsina sends dobey and alecu to the corner [13:01] s/those/does [13:01] ups [13:02] DONE: release, packaging, last-minute fixes, bug triaging, IRL testing. TODO: bug triaging, bugfixing, cleanup packaging for merge, reviews. BLOCKED: no [13:02] gatox? [13:02] DONE: [13:02] Bug #834152, and some fixes in friday branches. [13:02] TODO: [13:02] More UI bugs. [13:02] BLOCKED: [13:02] No [13:02] Launchpad bug 834152 in ubuntu-sso-client "The agreement checkbox shouldn't be checked by default (affects: 1) (heat: 6)" [High,In progress] https://launchpad.net/bugs/834152 [13:02] hello! [13:02] alecu, standup! :P [13:02] mandel: but but but we already are using deferToThread with qt4reactor in sso? [13:02] mandel: or is it something else? === teknico_ is now known as teknico [13:03] gatox: the agreement box is *not* checked by default! Or is it? [13:03] ralsina, not checked [13:03] we surely are using deferToThread with qt4reactor [13:03] gatox: can I throw bug #853794 to you as high? [13:03] Launchpad bug 853794 in ubuntuone-client "Password recovery on Windows client gives error (affects: 1) (heat: 6)" [Undecided,New] https://launchpad.net/bugs/853794 [13:03] ralsina, deferToThread, I think we are not? I got that error when trying to run u1trial with eactor=qt4 [13:03] reactor* sorry [13:03] gatox: at least triage it, i it's a server error, kick it to web+mobile [13:03] ralsina, ok! [13:04] ralsina, I'll take a look again, maybe I'm wrong (very possible) [13:04] mandel: let me check. We are using an equivalent at leasr :-) [13:04] ralsina, 'cause if it is then we do reactor.deferToThread(subprocess.call, args) [13:04] ralsina, that would make everything a lot nicer :D [13:04] DONE: worked on unicode fixes on sso and sd [13:04] TODO: finish that, and work on unicode fixes in control panel [13:04] BLOCKED: no [13:05] mandel: check ubuntu_sso/main/windows.py [13:05] λ DONE: bug #838778 [13:05] λ TODO: more bugs, freeze exceptions [13:05] λ BLCK: None. [13:05] Launchpad bug 838778 in ubuntuone-control-panel (Ubuntu Oneiric) (and 2 other projects) "After installing Ubuntu One, there are 2 Ubuntu One launchers in System Settings (affects: 51) (dups: 13) (heat: 228)" [High,Triaged] https://launchpad.net/bugs/838778 [13:05] ralsina, the worst thing is that I wrote that, hay que joderse! [13:05] ubuntu_sso/main/windows.py:from twisted.internet.threads import deferToThread [13:06] ubuntu_sso/keyring/windows.py:from twisted.internet.threads import deferToThread [13:06] but [13:06] mandel: you should take your morning pills [13:06] ubuntu_sso/networkstate/windows.py:from threading import Thread [13:06] so, we are using both twisted threads and standard python threads [13:06] alecu: ubuntu_sso is open minded and willing to try everything [13:06] ralsina, yeah, sometime it looks like it was coded in the 60's [13:07] alecu, I thin using the twisted thread is nicer, right? I think network was writen without knowing that we could use twisted threads [13:07] ralsina, hehe I should :P [13:07] mandel, yup, but I wouldn't worry too much about that [13:08] mandel, unless we are having some issue with it. [13:08] are we? [13:08] alecu, no, we are not [13:08] great [13:08] ok, I'm off to lunch and will finish that autoupdate no blocking code :) [13:10] mandel, "autoupdate non-blocking code"? [13:10] * alecu looks for the backlog [13:10] hmm [13:11] alecu, the auto-update.exe is the one that performs the check and since we use subprocess.call it blocks, which is crap, so I want to block in a thread and the get the retcode from a deferred [13:11] mandel, let's not use threads for that. There's something similar to subprocess in twisted, too. [13:11] mandel, let me find it [13:12] http://twistedmatrix.com/documents/current/core/howto/process.html [13:12] alecu, that I knowm but doing a process protocol just to check if the process returns 0 is a little to much, right? [13:12] is ubuntu one ever going to provide an app store like feature [13:13] REALLY small review: https://code.launchpad.net/~diegosarmentero/ubuntu-sso-client/834152/+merge/76026 [13:13] what I'd like to see is the ability to "save" certain apps to a list on ubuntu one [13:13] gatox: in verification-code branch, are there tests for the code in lines 48-50? [13:14] so you could install ubuntu, log into your ubuntu one account and automatically install your favorite apps with one click [13:14] nbf, I think onecon was for that, but I'm not sure [13:14] onecon? [13:14] oneconf [13:14] but it's not for that [13:15] http://www.omgubuntu.co.uk/2010/06/oneconf-wants-to-reinstall-your-applications-settings-on-a-fresh-ubuntu-install/ [13:15] actually it does look similar [13:15] awesome thanks guys :) [13:15] that's just for settings, won't install the apps themselves. Or maybe it will, haven't used it myself :-) [13:16] "Designed to save a list of installed programs, their settings, configurations and preferences; OneConf aims to synchronize this information with Ubuntu One - Canonical’s cloud storage service." [13:16] ralsina, i think not.... [13:16] sounds like what I'm asking for [13:16] nbf, I saw a lot of work was happening during the Oneiric on OneConf, so you should check it out [13:16] nbf: cool then :-) [13:16] oenierc is out in a few weeks isnt it [13:16] ralsina, done with the registration, or so I believe, I've used my @canoincal.com email for it === m_conley_away is now known as m_conley [13:16] mandel: cool [13:17] ralsina, i'll add test for that and fix the pep8 thing [13:17] ralsina, now i have to leave for a while....... brb! === gatox is now known as gatox_brb [13:17] mandel, from what I read, I would implement an empty class that inherits from ProcessProtocol, and that only redefines .processEnded(status): [13:18] how about using subprocess correctly and not doing anything with threads? ;-) [13:18] alecu, I'll give it a try to see if it works with the Qt reactor, should be very easy [13:18] mandel, sorry: twisted.internet.utils.getProcessValue [13:18] mandel, http://twistedmatrix.com/documents/current/core/howto/process.html#auto6 [13:19] mandel, "If you only need the final exit code (like commands.getstatusoutput(cmd)[0]), the twisted.internet.utils.getProcessValue function is useful" [13:19] also: if we start u1cp first, this is ust useless [13:19] s/ust/just/ [13:19] alecu, superb! [13:19] ralsina, and also true :) [13:19] * ralsina reminds people that while nice code is fun, moving lines around is cheap [13:19] ralsina, alecu I'll go for lunch and will make the code nicer, it should be very easy [13:21] ralsina, like "paehc si dnuora senil gnivom" ? [13:21] alecu: lines, not columns [13:21] doh [13:21] columns are expensive! [13:21] all the marble, the carved leafs [13:43] alecu: have 5' for a quick mumble? [13:44] ralsina, sure. give me a minute [13:44] alecu: cool. Talk loudly when you get there :-) [13:44] * mandel back [13:51] i saw that there is the need to have at least the DISPLAY environment variable to use ubuntuone at commandline [13:51] this is a problem if one does not have access to X or does it using SSH [13:53] FxIII: ubuntuone also uses dbus so it's not trivial to get it running over ssh [13:54] ralsina: in ssh an export DISPLAY=:0 works [13:54] FxIII: if you have a session on :0 sure :-) [13:54] the cli tools do not need DISPLAY [13:55] they need dbus [13:55] the problem arise when there is no session :D [13:58] so ubuntuone cant be used without X? [13:58] FxIII: it should be possible to create a dbus session without X, it's just very very annoying. [13:59] i see [13:59] FxIII: it cannot be used without dbus [13:59] the X requirement is quite strong [14:00] not really [14:00] You can use Xvfb [14:01] I'm on a arm w/o display at all :D === gatox_brb is now known as gatox [14:24] gatox: can you do some IRL testing of bug #851094 please? [14:24] Launchpad bug 851094 in ubuntu-sso-client (and 1 other project) "When reset password request fails, poor error message is shown (affects: 1) (heat: 6)" [Critical,Triaged] https://launchpad.net/bugs/851094 [14:25] gatox: I have a user reporting it as bug #853794 and he claims he pasted the code correctly and still failed [14:25] ralsina: Error: Bug #853794 not found. [14:26] ralsina, ok, on it [14:26] gatox: are you fixing bugs in gtk now? :-D [14:26] ralsina, about building the installer.... can it be before 3pm?? i have to study later [14:26] https://code.launchpad.net/~diegosarmentero/ubuntu-sso-client/834152/+merge/76008 [14:26] ralsina, just one :P [14:26] gatox: it can be now if you want [14:27] ralsina, let me do the IRL testing... and i'll let you now after that, ok? [14:27] gatox: get yourself bitrock installbuilder professional trial installed in the meantime, then ping me [14:29] gatox: +1 on the checkbox branch [14:30] ralsina, ok :P [14:39] ralsina, the irl testing...... should i do it with the installer.... or can i do it with the code in trunk? [14:40] gatox: trunk should be enough [14:40] ralsina, ok [14:42] mandel: can you take a quick pass through these old bugs when you have a minute? https://bugs.launchpad.net/ubuntuone-windows-installer/+bugs?field.assignee=&field.bug_reporter=&field.has_no_package=&field.has_patch=&field.omit_dupes=on&field.searchtext=&field.status%3Alist=CONFIRMED&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field. [14:42] status%3Alist=INPROGRESS&field.status%3Alist=NEW&field.status%3Alist=TRIAGED&orderby=-datecreated&search=Search&memo=150&start=150 [14:47] ralsina, bug reproduced :S [14:48] gatox: with correct code and everything? Please tell pindonga on #ids [14:48] ralsina, yep...... [14:48] and move the bug to "triaged" if it is not [14:48] and add a note about it in the bug [14:49] ralsina, of course, give me a few mins and I'll look into that [14:49] mandel: thanks [14:49] mandel: no rush, just some housecleaning when you have a bit of time to relax :-) [14:49] ralsina, what do you want me to do, double check that are fixed? [14:50] mandel: if they are for the old beta just say something like "please expect a new release in your email soon" [14:50] mandel: if they are for the new one, we should look into them :-) [14:51] ralsina, ok [14:58] we should start doing this: http://en.wikipedia.org/wiki/Uberman%27s_sleep_schedule#Uberman.27s_sleep_schedule [14:58] it would solve all the schedule problems we have, we just need to agree on when to sleep :P [15:03] ralsina, ping [15:03] mandel: pong [15:04] ralsina, when running the tests of ubuntuone-windows-installer it gets stuck 'til timeout in test_total_size_udf, do you experience this? [15:04] mandel: didn't last time I checked [15:05] mandel: let me re-check [15:05] stupid vm... [15:05] mandel: probably a timing issue on the tests. That code is tricky [15:06] is this for developers or users? [15:06] edinny: developers and users. If you need help with anything... we will help you [15:07] mandel: confirmed it's not timing out for me [15:07] I have 2 contact related issues [15:07] ralsina, dammed, can I push a branch for you to test? [15:07] first, I started using ubuntuone without opening an account by name [15:08] ralsina, I think it is due to the share_folders from vmware [15:08] later I openened and account and added that computer. [15:08] You are running it in one of those? Yes, that doesn't work. [15:08] I seem to have lost my addressbook [15:08] mandel: you have to set TMPDIR or something like that [15:09] did it replace my old account with the new one? [15:09] ralsina, yes, that I have done, you have to set the test_trial in the cmd vars? it happens just with that method in both my branch and trunk, so is the vm, its fucked [15:10] edinny: could be. You can only be logged into one account at a time [15:10] edinny: you could try logging in with the old account to see if things come back [15:11] there was no loging with the old site. [15:11] edinny: I am not sure I understand that [15:11] if I use ubuntuone and don't sign up for an account, does it get stored on U1? [15:12] edinny: no [15:12] edinny: if you are not signed in, you are not using ubuntu one at all [15:13] my other problem is my new natty install. Evo does not have an option for a new addressbook on U1 [15:14] edinny: yes, we have that bug reported and a fix was committed very recently [15:14] just "on this computer", ldap, and webdav and google [15:14] edinny: no, wait, I am confused with oneiric [15:14] yes? [15:15] edinny: if you don't have it in natty, you are probably missing a package, let me check the name [15:15] file>new>addressbook [15:15] dobey: do you remember the name of the package to provide evolution <-> u1 integration? [15:15] evolution-couchdb [15:16] installing now [15:17] ralsina: it's not installed by default since natty, as we pulled the couchdb stack off CD to save space [15:17] dobey: right [15:17] do I have to specify the remote couchdb server? [15:18] or just give it a name [15:18] edinny: if you restart evolution, it should create the Ubuntu One address book automatially [15:19] rodrigo_: ^ right? [15:19] did not do it [15:19] I shut evo, did apt-get, started evo [15:20] hrmm [15:20] edinny: quit evo, run evolution --force-shutdown from a terminal, then start evolution, perhaps [15:21] got it. thanks [15:21] Next I have to figure out how to move an old adressbook.db over [15:22] you mean inside couchdb? [15:22] ralsina, gatox, alecu can I get a review for https://code.launchpad.net/~mandel/ubuntuone-windows-installer/auto-update-python-only/+merge/76047 It just adds the python code so that we later add the xml once ralsina branch has been landed to trunk [15:22] mandel, on it [15:22] mandel: will check! [15:23] super! thx! [15:23] ralsina, shall I make a branch from your that contains just the xml? that way there won't be merge issues [15:24] mandel: yes [15:24] mandel: then I can merge that one with mine, cleanup, and merge to trunk [15:24] ralsina, that is the plan :) [15:25] ralsina, will do that, then some bug and next the update script, which I shall add in a similar way to the auto-update in the installer [15:26] mandel, alecu: either of you actually understands how oauth+lazr works on sso? [15:26] ralsina, I might add some ugly ui for that script [15:26] mandel: cool. You could also add a command to the setup.py t build it [15:26] dobey, yes, right [15:26] mandel, I'm reviewing your branch. Q: why the "+def start_control_panel(with_icon=False): [15:26] "? [15:27] alecu: That's mine! I need to file a bug and fix it! [15:27] OTOH, the fix is there ;-) [15:27] alecu, is that in the diff? I did not do that :P [15:27] ein? [15:27] mandel, that's what LP shows on the last line of the diff! [15:27] https://code.launchpad.net/~mandel/ubuntuone-windows-installer/auto-update-python-only/+merge/76047 [15:27] mandel: you got that because you branched from mine, and I did it there [15:28] ralsina, alecu ok, le me fix that, sorry [15:28] I wonder why you didn't get the rest of it, though [15:28] rodrigo_: it seems like if e-addressbook-backend is already running when it got installed, it doesn't just work though. :( [15:28] anyway, i need to get me some lunch [15:28] bbiab [15:29] dobey, the creation of the U1 addressbook is done on an evo plugin, so it's evo that needs to be restarted, not e-a-f [15:30] ralsina, 'cause I try to be smart with a diff so I did not base the code in your brache and failid :( [15:30] mandel: ja! [15:30] rodrigo_: but it only creates it if the address book is available in the backend right? [15:31] dobey, hmm, maybe [15:31] ARGH, oauth library supports changing timestamps but lazr hides it!!!!! [15:31] rodrigo_: in which case the backend also needs to be restarted :-/ [15:31] * ralsina SMASH [15:31] anyway lunch :) [15:35] bye [15:40] ralsina, alecu fixed :) [15:48] * ralsina is about to find who wrote lazr and send him a strongly worded email [15:50] ralsina, hahaha, add me in the signature of the email ;) [15:51] I just can't find where the frak it's calling the oauth method that adds the timestamp [15:52] it's like it's written using a damn obfuscator. It doesn't do a single import the straight way, everything is in namespaced packages and imported via __import__ [15:53] oauth = __import__('oauth.oauth', {}).oauth mis polainas! [15:53] hahahahaha [15:53] sorry, but I have to laught :P [15:53] I mean what the heck does that even DO [15:55] Haha! I *think* I found it by grepping for from_consumer_and_token [15:55] ralsina, I just did this for you: https://code.launchpad.net/~mandel/ubuntuone-windows-installer/add-updater-xml/+merge/76053 [15:55] mandel: cool, thx [15:55] * mandel is the first time that he proposes a merge to a branch that is not trunk [15:55] mandel: did you actually see the diff? ;-) [15:56] nop, let me see [15:57] ralsina, hahaha, mamon!!! [15:57] ralsina, why did you tell me to do it then ;-) [15:57] mandel: reject it, then :-) [15:57] I agree hehe [15:57] mandel: I thought you had other stuff in it [15:58] ralsina, nah, I'll do that later after bugs and the upgrade script witch is more urgent, right? [15:59] yes [16:01] ralsina, do you want to build the installer now?? or you are about to eat? [16:01] gatox: let's do it [16:01] gatox: mumble? [16:02] gatox: please branch lp:~ralsina/ubuntuone-windows-installer/fix_809873 [16:02] ok, EOD for me, catch you tom! [16:02] bye mandel! [16:02] have a good afternoon/evening! [16:02] ralsina, branching [16:10] mandel, we have a problem! :P [16:12] mandel, ohh...... eod....... sorry [16:14] ralsina, ping [16:14] gatox, dime! [16:14] mandel: pong [16:14] gatox, I'm 'merendand' I guess like is having tea in an eng version hehe [16:15] mandel, merendando :P...... your tests are failing: http://paste.ubuntu.com/693147/ [16:15] ralsina, this bug https://bugs.launchpad.net/ubuntuone-control-panel/+bug/845659 do they want me to implement this in control panel too? [16:15] Launchpad bug 845659 in ubuntuone-control-panel "Windows: implement the "there is a new version available" notifications (affects: 1) (heat: 6)" [High,Triaged] [16:15] mandel: the original plan was to do it on u1cp [16:15] gatox, hum, que raro, looking [16:15] mandel: since it seems to work well in -installer, I think you should just change the project [16:16] ralsina, I'll set it as a duplicate then [16:17] gatox, which revno do you have? [16:17] mandel, 70 [16:18] gatox, look at the diff, line 218 [16:18] mandel, yes? [16:19] 218 + def debug(self, message, *args, **kwargs): [16:19] gatox, and the owner is FakeLogger... [16:19] mandel, yes.... [16:20] gatox, can you try with Z:\Projects\ubuntuone-windows-installer\auto-update-python-only>python C:\Python [16:20] 27\Scripts\u1trial ubuntuone_installer\gui\qt\utils\tests\test_windows.py [16:20] gatox, no need to set the reactor in this case since there is no qt in that module [16:20] mandel, ahhhhhhhhh ok! [16:20] mandel, wait...... [16:21] mandel, but i'm running it with. run-tests.py [16:21] sorry [16:21] run-tests.bat [16:22] gatox, ah, I know the issue? let me try to fix it. Looks like a weird import somewhere [16:24] Any DROID3 users here? [16:27] Ok, so I found how to patch the timestamp. Alecu, can I show you something, and you tell me if it's a very bad idea? [16:29] ralsina: are you doing the hack to get the timestamp from the server? [16:30] dobey: yeah [16:30] I am wondering if I can block for a bit inside SSO or need to make it async [16:33] gatox, let me finish my food and I'll take a closer look, I'm getting issue with the defers now :( [16:33] mandel, obvio!! vaya! [16:46] ralsina, can you reproduce this bug? https://bugs.launchpad.net/ubuntuone-windows-installer/+bug/828938 (i can't) [16:46] Launchpad bug 828938 in ubuntuone-windows-installer "Error on test_forgotten_password_controller_error (affects: 1) (heat: 6)" [Medium,Triaged] [16:47] * ralsina looks [16:47] gatox: used to, since I reported it ;-) [16:47] gatox: anyway, that's not urgent, since it only affects tests [16:47] gatox: and doesn't even make the tests fail... [16:47] ralsina, ok..... but i think that maybe is fixed already [16:48] ralsina, i'll return to network detection [16:48] gatox: if you run the tests and is not there, mark as fix-committed [16:48] ralsina, ok [16:52] lunch....... brb in 20 min! === gatox is now known as gatox_lunch === beuno is now known as beuno-lunch [16:56] alecu: ping [16:57] Anyone with Samsung Galaxy SII ? [16:57] I suspect it's storing pictures in a folder rooted somewhere else than /mnt/sdcard [17:02] karni: some Android phones also use internal storage. My coworker's Droid Incredible is like that. [17:03] nhaines: is it DROID3 by any chance? (I don't know all the phones to be honest;) ) [17:03] nhaines: Yes, SII has internal 16GB [17:04] nhaines: it is a Droid Incredible. :) [17:04] karni: ^^ [17:04] karni: I can find out what folder that one stores pictures in internally, if you like. [17:04] nhaines: ah ok :) [17:04] nhaines: That would be great, yes please :) [17:05] nhaines: Eventually, we should simply let the users pick it. [17:05] karni: okay. It might have to wait a couple hours until lunch. :) [17:05] nhaines: Whoa, that's still pretty fast! [17:06] nhaines: I'll be away soon, but please leave me a message, I've got IRC session up. [17:06] karni: will do! [17:06] nhaines: Thank you :) [17:07] ralsina, pong [17:07] alecu: I have a fix for the timestamp problem [17:07] ralsina, nice! [17:07] alecu: BUT I don't know if I am doing it right :-) [17:07] alecu: basically, I am doing a blocking call in sso [17:08] alecu: care to take a look at the code and tell me if that's ust bad? [17:08] ralsina, sure === gatox_lunch is now known as gatox [17:08] alecu: http://pastebin.ubuntu.com/693185/ [17:09] alecu: the AutoStampAuthorizer class [17:09] AutoTimestampAuthorizer [17:10] authorizeRequest is basically the exact same thing as is in lazr, except I pass the oauth_timestamp parameter to the underlying oauth library. But the urllib stuff is blocking [17:15] ralsina, I like that solution. And since this is using lazr -which is blocking-, it is already being run in a thread. [17:15] ralsina, But I have a couple of questions: [17:15] cool [17:15] ask away :-) [17:16] * what about the file sync servers and api calls from the control panel? [17:17] AFAIK, they all sign their request through here [17:18] oh, wait, they don't. I may have to do something similar in ubuntu_sso.utils [17:18] * is this only used on is_validated and validate_email? if not, it can be really expensive to do this call each time. [17:19] alecu: I thought about doing a time diff and using that, but then it will break completely if the user *fixes* the time [17:19] I don't see it used elsewhere, though [17:21] ralsina, I like that approach. In any case we can cache the "time difference" for some given amount of time, and if the clock is adjusted we would discard the cached value. [17:22] alecu: it gets much more complex that way... [17:23] ralsina, right. But the control panel is already slow when doing webservice calls, and if we add a "time" call per each webservice call it would be insanely slow. [17:23] one compromise: we could, on start, use this to validate time.time() (check if there are less than, say, 300 seconds difference). If the difference is too high, we set a flag and use the slow version (and show a warning) [17:24] ralsina, sounds like an interesting hack [17:24] and on every call to figure out time, we re-validate the diff, and set/reset the flag [17:24] so, if the local time improves, we stop using the slow version [17:24] ralsina, also syncdaemon uses webservice calls to publish files and such... they are not so much time sensitive operations, but anyway [17:25] argh [17:27] ralsina, I see that those operations (publish, create shares) are oauth signed in ubuntuone/syncdaemon/action_queue.py [17:27] ralsina, but I don't see them using the timestamp [17:28] if they don't pass a timestamp it uses int(time.time()) [17:29] maybe we should monkeypatch oauth.pauth [17:30] oauth.oauth that is [17:30] instead of chasing everywhere we use it [17:30] ralsina, they are using oauth.OAuthRequest.from_consumer_and_token [17:30] alecu: yes, that's the one where everything happens :-) [17:30] alecu: and the only place where you can specify the timestamp [17:31] alecu: if we monkeypatch that we fix it for everyone [17:34] ralsina, hmmm... it seems oauth.oauth is also used *inside* the storage protocol code. [17:35] alecu: so, I think we can go for the minimalistic solution. On startup, validate time and warn the user that machines with bad time don't work with u1 [17:35] ralsina, yeah, and suggest installing http://www.timesynctool.com/ [17:35] alecu: on windows you don't need any tools [17:36] windows 7 has an embedded NTP client [17:36] ralsina, well, the default ntp client on windows updates daily [17:36] alecu: or when you click the button [17:36] ralsina, right [17:36] if your computer moves more than 15 minutes daily, it's broken :-) [17:37] ralsina, well that small tool updates every 15 minutes, and that's what I have running inside vbox, because vbox is so broken! [17:37] ralsina, but is the win7 ntp client enabled by default? [17:37] alecu: yes [17:37] ralsina, cool. in any case, we may recommend that tool when the user is on a previous version [17:39] right [17:39] I hate this solution though [17:39] ralsina, """The Windows Time Service in Windows 7 is also configured by default to not start automatically each time the system is started - the user interface reports that Windows is configured to automatically update the system time, but it doesn't unless the user manually starts the Windows Time Service either through the Services Control Panel applet, or by requesting a manual sync. Unless the user reconfigures the Windows Time Service [17:39] to start automatically, it will be effectively disabled every time the system is restarted""" [17:40] (from the homepage of that tool) [17:40] hahahahahahaha [17:40] snif snif snif [17:42] On the plus side, this timesynctool.exe is developed on sourceforge, and bsd licensed, so we may be able to include it in our installer. [17:44] alecu: how about implementing a subclass of oauth.OAuthRequest that does that whole "validate time / use slow version if it's broken" in ubuntu-sso-client and changing the rest to use that? [17:45] it only will be broken when the time is good at first and later diverges [17:45] but that happens already [17:45] and that fails silently already too [17:46] ralsina, afaict oauth.OAuthRequest is used by the storage protocol, and that's twisted code. [17:47] ubuntuone/storageprotocol/client.py -> oauth_authenticate() [17:47] oh, crap. How many different ways do we sign rquests? [17:47] ralsina, so we should not make oauth_authenticate block on the urllib call [17:48] ralsina, that seems to be the only place the storage protocol signs a request, when starting the connection. [17:48] so blocking there is bad? If it's only once... [17:52] and the other parts where it signs oauth request are the -dirty- bits where it makes webclient calls we found above: creating a share, publishing a file. [17:52] ralsina, it might not be *bad* to block there, but it certainly looks dirty [17:53] since all those fail currently, I would consider fixing it in sso and when starting the connection an improvement [17:53] ralsina, perhaps we should ask for facundobatista's input on how this issue may be fixed for SD [17:54] alecu: good idea [17:54] facundobatista: ping [17:54] ralsina, pong [17:54] facundobatista: I am trying to figure out what needs fixing to handle bad time in the client which makes SSO fail [17:54] or rather oauth fail [17:55] ralsina, what? [17:55] facundobatista: if the client's time is off by 15 minutes, oauth fails [17:55] facundobatista, the thing is that we are finding a lot of windows machines where the time is not set to the right gmt time, so the clocks are different from our servers [17:55] alecu, ralsina, ok [17:56] facundobatista: so, there are 3 places in u1-client where oauth requests are signed, and would need to be fixed [17:56] facundobatista, right now it fails on sso, so the user is not even to create a new account nor sign in with an existing one [17:56] alecu: you go on, you understand it better than I anyway :-() [17:56] :-) [17:57] ... [17:57] facundobatista, the fix that ralsina has found involves doing an http HEAD request to the webserver, and getting the server timestamp, and using that instead of the client's timestamp when signing oauth [17:58] alecu, ok [17:58] facundobatista, we can do it as a blocking url call in the sso and probably in control panel [17:58] alecu, ok [17:58] facundobatista, we might even do it as a blocking call in the webcalls inside syncdaemon (create new share, publish file) [17:59] facundobatista, but should we do it as a blocking call before the protocol authenticates? [17:59] my guess is "no" [17:59] alecu: to be precise, do one HEAD request and apply the server-client difference to all following request. [17:59] karni, ralsina had some concerns with that [18:00] ralsina: ↑ ? [18:00] alecu: you want a HEAD before every request? [18:00] karni, ralsina says " it will break completely if the user *fixes* the time" [18:00] alecu, I don't have a clue about authentication, but why not every time? [18:01] facundobatista, from a performance point, I don't like "every time" either. [18:01] facundobatista, my question was one of blocking or async web call [18:02] alecu, but if you don't do it, it will fail, right? [18:02] alecu: that's why we do HEAD just during every app launch [18:02] karni: difference is, our app runs all the time === beuno-lunch is now known as beuno [18:02] karni, that sounds bad :-) [18:03] karni, "doing head", I mean :-) [18:03] alecu: hahahh [18:03] ok... eod for me... i'll be back when i get bored from studying! bye [18:03] ralsina: I beleive (and I have no metrics) that it is minority of users who do not turn their computers off [18:04] gatox, have fun! [18:04] karni: agreed, but it may be 12 or 16 hours between starts [18:04] people turn computers off? [18:04] karni, what about suspend? [18:04] what is this, the 90s? [18:04] ralsina: Also, there's another solution. If you receive HTTP UNAUTHORIZED or such* (to be defined), only *then* you get server time, apply the difference, and try again. [18:04] ralsina: that won't give you 15+minutes of lag [18:05] karni, that sounds like the most reasonable solution. It also sounds like a complicated fix right now. [18:05] +1 on complicated, because I need to find every place where a request is done, and add an if [18:05] alecu: how about doing head (again.. ;D) every few hours then? [18:06] karni, that's my proposal: caching the time difference for an hour or so. [18:06] ralsina: Can't you override an OAuth library method that generates the timestmap? (somewhere "higher" than fixing all the places that sign?) [18:06] or, actually, lower [18:06] karni: yes, we can [18:06] alecu++ [18:07] karni: it's somewhat filthy though :-) [18:07] All your Anroids are belong to filthy karni! [18:07] androids as well ;d [18:08] also, on Linux we can't patch system libraries. It would have to be a monkeypatch [18:08] alecu: FYI if someone uses files REST API, they have to use the same fix. [18:08] or inherit that class, and replace it everywhere we use it [18:10] ralsina, you won't be put blocking code unless you do it in a separate thread, right? [18:10] facundobatista: the idea is not to add any blocking code except on some "initialization" somewhere [18:10] ralsina, you won't be put blocking code unless you do it in a separate thread, right? [18:10] facundobatista: the idea is not to add any blocking code except on some "initialization" somewhere [18:11] once more and it's a tie in chess :-) [18:11] ralsina, so, don't do it [18:11] ralsina, don't add blocking code in the main thread, doesn't matter the stage [18:11] ralsina: tie? i think you lost :) [18:12] facundobatista: don't write code that doesn't work for a % of users [18:12] ;-) [18:12] giving orders is fun! ;-) [18:13] Yes, I don't intend to make things block. I also intend to make it work. [18:14] facundobatista, ralsina: so, if we do it such as "oauth.OAuthRequest.from_consumer_and_token" will sometimes block, we should fix ubuntuone/storageprotocol/client.py->oauth_authenticate() so it calls "oauth.OAuthRequest.from_consumer_and_token" in a thread [18:14] alecu: if we do it by keeping an offset, it doesn't block [18:15] ralsina, that is only if the offset is calculated on startup. If we "cache" the offset, that function *may* block at some point. [18:15] alecu: no, it will fail, not block [18:15] then, we trigger a recalculation of the offset in a thread [18:16] ralsina, then it's a more complicated change, because we would be changing the signature of from_consumer_and_token [18:17] alecu: hmmm [18:17] ralsina, by adding a new possible exception to that function, that we would have to catch everywhere [18:18] from_consumer_and_token never sees the failures, it just creates headers [18:18] the failure would have to be caught when the request is actually sent [18:20] ralsina, probably most places are already handling those errors. I know SD retries on auth failures. But some other places may drop the credentials from the keyring or such [18:20] ralsina, because the error is the same [18:21] this is all, of course, much more complicated than expected. [18:22] ralsina, My proposal is to make a class that derives from OAuthRequest, where .from_consumer_and_token() or .sign_request() may block, and to make storageprotocol use it inside a thread. [18:23] facundobatista, ^ [18:23] ralsina, that way all the other places where oauth signatures are done won't need to be changed. [18:23] alecu: it's doable [18:23] * ralsina is scared to even think of sideeffects [18:24] I'll check the webclient in control panel. [18:24] alecu, why not issuing the thread inside .from_consumer_and_token ? [18:25] alecu, other question: are you doing this extra call always? or when you detect (somehow) that the machine's hour is wrong? [18:25] facundobatista, because .from_consumer_and_token is not async, so it does not return a deferred [18:25] alecu, ok [18:25] facundobatista, only when it's wrong on startup [18:26] alecu, ok [18:27] ralsina, also we should at some point publish this OAuthRequest derived class on the u1 developers api, because as karni pointed out it will be very useful for devs using our webservices. [18:27] alecu: agreed [18:28] alecu: we should fix python-oauth [18:31] dobey: python-oauth is doin the right thing [18:32] dobey: it even lets you pass it a timestamp if you don't want to use the system's [18:32] it's not doing the right thing on the server [18:33] dobey: it's within the spec [18:34] ralsina: the timeout isn't, is it? [18:34] dobey: yes it is [18:34] dobey: how the server processes the nonces is not spec'ed. Or at least it's not spec'd so much that this is out of spec :-/ [18:34] where? [18:36] the nonce is not particularly relevant to the issue at hand [18:37] dobey: yes it is. The time window is so that there is no need to keep track of all nonces ever received. [18:37] So, if the timestamp is too old, it just assumes it's a replay attack on an old nonce [18:38] that is a matter of convenience, rather than part of the spec though. it is not specified for the server to behave that way [18:38] it's not specified that they shouldn't [18:39] no, but python-oauth really shouldn't be implementing any unspecified behavior [18:40] anyway. Alecu: I agree that is the better solution. I will try to start implementing it tomorrow morning, but it's a much better idea if you do it instead :-/ [18:40] hello, i uploaded some *.m4a to U1Music yesterday. they appear in the web gui under "files" but not on the android music app [18:40] i have refreshed the android music app several times [18:41] ralsina, sure. I'll be bugging you with OAuth questions, though :-) [18:41] alecu: happy to help within my limited knowledge of it :-) [18:41] achiang: non-DRM files from iTunes? [18:41] achiang: or are they DRMed? :) [18:42] dobey: yes, aiui, *.m4p are DRM, and *.m4a are non-DRM [18:42] <- willing to be corrected, though [18:42] achiang: ok; beuno ^^ achiang is having some issues with m4a files too it seems :) [18:43] dobey: beuno: let me download a file from the web and make sure banshee can play it [18:45] dobey: beuno: verified that banshee can play it [18:45] achiang, thanks, this is already on my plate [18:46] beuno: sweet, thanks [18:46] if only i could sync from an external drive, all my U1 warts would be cured. ;) [18:46] as it is, it rocks more and more every day [18:57] duanedesign: Hey, around? [19:06] I have to do my evening school run [19:07] will work a bit more late tonight. Mail me if you need me [20:34] if anyone needs me, Im around :P [20:39] that's what she said [20:54] hehehe === m_conley is now known as m_conley_away [21:10] later all