oneconf is only showing the pc you are on in raring and isn't sharing to other machines

Bug #1165104 reported by Dave Morley
190
This bug affects 47 people
Affects Status Importance Assigned to Milestone
One Hundred Papercuts
Fix Released
High
Unassigned
oneconf (Ubuntu)
Fix Released
High
Unassigned
Trusty
Fix Released
Undecided
Unassigned
Vivid
Fix Released
Undecided
Unassigned

Bug Description

[Impact]

The package synchronization in the Ubuntu Software Center doesn't work, and only the current machine is displayed.

[Test Case]

At least two computers (or virtual machines) are needed.

First, enable software sync in both computers, by opening the Ubuntu Software Center, then clicking "File > Sync Between Computers" in the menu in each computer. Enter your Ubuntu One credentials if asked.

Then either use both computers normally for some time (one or two days?) so the package sync occurs naturally, or force the sync to happen in both of them (faster) by running:
$ oneconf-query --stop
$ oneconf-service --debug
(The --debug flag is not necessary, but useful for debugging)
Do this for both computers, one at a time.

Then open the Software Center and click on the Installed Software tab, or "File > Sync Between Computers".
If all computer are listed, and if clicking on one of them (except the current one) bring up a package comparison, the bug is fixed.
If not, you may try to force a sync on both computers one last time and check again, just to be sure.

[Regression Potential]

Oneconf wasn't working as intended, so there's probably no regression potential. But it suppose it could impact the stability of Oneconf or the Software Center.

[Original Report]

In Raring I see only the machince I'm on. In the precise box beside it I see a couple of boxes but not this one. Please see the screenshots attached.

I have a feeling that some how the sync has broken but I'm not sure what technology it is use on the backend.

ProblemType: Bug
DistroRelease: Ubuntu 13.04
Package: oneconf 0.3.3
ProcVersionSignature: Ubuntu 3.8.0-16.26-generic 3.8.5
Uname: Linux 3.8.0-16-generic x86_64
ApportVersion: 2.9.2-0ubuntu5
Architecture: amd64
Date: Fri Apr 5 18:18:24 2013
InstallationDate: Installed on 2013-04-02 (3 days ago)
InstallationMedia: Ubuntu 13.04 "Raring Ringtail" - Alpha amd64 (20130402)
MarkForUpload: True
PackageArchitecture: all
SourcePackage: oneconf
UpgradeStatus: No upgrade log present (probably fresh install)

Related branches

Revision history for this message
Dave Morley (davmor2) wrote :
Revision history for this message
Dave Morley (davmor2) wrote :
Dave Morley (davmor2)
Changed in oneconf (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium
tags: added: u1-by-qa u1-on-production
Revision history for this message
Nishan Singh Mann (nishan-singh-mann) wrote :

I also have this problem. I just did a clean install of 13.04 on 3 machines on my LAN. Yet on each of them I only see the local machine. I am a newbie so please tell me what to do. I would be glad to help.

Revision history for this message
Rob Hills (rhills) wrote :

I too have this problem.
I am very new to oneconf and thought I'd use it to migrate installed apps from my wife's old computer to her new one.

After finding the problem described by this bug in the GUI, I thought I'd try the command line to link the two computers.

Firstly, each computer seems to have its own oneconf inventory (using the same Ubuntu One login). If I execute:

oneconf-query --list --hosts

on each computer, it returns a single unique ID and the correct host name for that computer - I believe it should return both??

If I look at the One Google Account Apps information (https://login.ubuntu.com/+applications), I see both computers listed.

However, I tried to execute the following on the old computer:

kaye@kayes-old-computer:~$ oneconf-query --share-inventory --hostid=<ID-of-new-computer>

and it threw an exception - see attached traceback.

Revision history for this message
Rob Hills (rhills) wrote :

Sorry, should have attached this to the previous comment.

Revision history for this message
Kevin C. (kedoc) wrote :

Hello,

I got exactly the same behavior on my personal (i386) and professional (amd64) computers, both running Ubuntu 13.04 and connected on the same Ubuntu One account.

If it can help, here is what I get when I start oneconf-service in debug mode (the log shown here is from Ubuntu 13.04 i386, you will find bug.apport file for oneconf attached to this comment):
$ /usr/share/oneconf/oneconf-service --debug
DEBUG:oneconf.hosts:LOGO 0ed271f4b7404458c65d173ff692aa0fa9554d05c3bae85f1400e7571370986465.4888024: /home/kevin/Images/wallpaper-1085004.jpg
DEBUG:oneconf.hosts:Save current host to disk
DEBUG:oneconf.utils:Saving updated /home/kevin/.cache/oneconf/94c7f53ef51c0cf6aecd5eff517da29e/host to disk
WARNING:oneconf.hosts:Error in loading other_hosts file: [Errno 2] No such file or directory: '/home/kevin/.cache/oneconf/94c7f53ef51c0cf6aecd5eff517da29e/other_hosts'
DEBUG:__main__:daemon up and running
DEBUG:__main__:Setting loop quit ping: 300s
DEBUG:__main__:Create a sync handler with infra
DEBUG:oneconf.distributor:get_distro: 'Ubuntu'
DEBUG:oneconf.networksync.netstatus:network status changed to 70
DEBUG:oneconf.networksync.ssohandler:Try to get a proxy
DEBUG:oneconf.networksync.ssohandler:look for credential
DEBUG:oneconf.networksync.netstatus:Connectivity state changed to: True
DEBUG:oneconf.networksync.ssohandler:credential found
DEBUG:oneconf.networksync:Start processing sync
ERROR:oneconf.networksync:WebClient server answering but not available
DEBUG:__main__:No more activity, go to sleep

Please let me know if I can provide any other useful information.

Revision history for this message
Bruno Nova (brunonova) wrote :

I think the debug message "ERROR:oneconf.networksync:WebClient server answering but not available" is important.

I've been looking at the code (or trying to) and, at around line 171 of oneconf/networksync/__init__.py, the call self.infraclient.server_status() is returning <b'"ok"'> instead of <ok>, at least for me.
If I "hack" the if in that line to give True, an error occurs next:

Traceback (most recent call last):
  File "/home/bruno/src/oneconf/oneconf/networksync/__init__.py", line 112, in _network_state_changed
    self._refresh_can_sync()
  File "/home/bruno/src/oneconf/oneconf/networksync/__init__.py", line 81, in _refresh_can_sync
    self.process_sync()
  File "/home/bruno/src/oneconf/oneconf/networksync/__init__.py", line 231, in process_sync
    full_hosts_list = self.infraclient.list_machines()
  File "/usr/lib/python3/dist-packages/piston_mini_client/validators.py", line 120, in wrapper
    return func(self, *args, **kwargs)
  File "/home/bruno/src/oneconf/oneconf/networksync/infraclient_pristine.py", line 41, in list_machines
    return ast.literal_eval(self._get('list-machines/', scheme=AUTHENTICATED_API_SCHEME))
  File "/usr/lib/python3.3/ast.py", line 86, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python3.3/ast.py", line 85, in _convert
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: b'[\n {\n "hostname": "XXXXX", \n "logo_checksum": "X", \n "uuid": "XXXXX", \n "packages_checksum": "XXXXX"\n }\n]'

Notice the <b'...'> in the last line. Why is that? Maybe something wrong in the self._get() method? (where is that one defined?)
Sorry if I'm completely wrong.

Revision history for this message
Bruno Nova (brunonova) wrote :

I'm not very fluent in Python, but it seems that <b'something'> is of type "bytes" and not of type "str".
I tried running the oneconf-service released in Precise and it seemed to work.
It is strange, because the method server_status() in oneconf/networksync/infraclient_pristine.py is exactly the same.

So, I modified the _get() method in that file (that is inherited from the Piston API, I suppose) to convert the return value from bytes to str if necessary.
oneconf-service then seems to sync with the server correctly in my laptop.
I haven't tested with multiple computers, so I have no idea if it actually works.

I have the patch attached. For the developers: please check/test the patch carefully.

Revision history for this message
Bruno Nova (brunonova) wrote :

Oops, forgot to attach the patch. Here it goes.
Also note that fixing this bug could also fix bug #1179903.

Changed in oneconf (Ubuntu):
importance: Medium → High
Changed in hundredpapercuts:
status: New → Triaged
importance: Undecided → High
Changed in oneconf (Ubuntu):
status: Confirmed → Triaged
Changed in hundredpapercuts:
assignee: nobody → Papercuts Ninja (papercuts-ninja)
Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "infraclient_pristine_get.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Revision history for this message
Bruno Nova (brunonova) wrote :

I've install Ubuntu Saucy in Virtualbox to try this, but failed. Always saying in debug something like "credential not found".
Tried to understand why, and found out that it's because, in Saucy, the name of the app (for authentication) was changed from "Ubuntu Software Center" to "Ubuntu One", but the code wasn't updated.

A patch that fixes this is attached (FOR SAUCY and next ONLY! Not for Raring)
Again developers, check this carefully.
The change in the oneconf/networksync/ssohandler.py file seemed to be enough, but I updated another file as well.

However, this doesn't fix the bug yet.
It seems the package list of the "other hosts" isn't downloaded.

Revision history for this message
Mike Cole (mikecole) wrote :

I'd dearly like to see a fix for raring. I am blocked from upgrading to saucy because of openconnect being non-functional for a VPN that is imperative that I have for work. If anyone can tell me a workaround, or a fix that I can implement locally, I'm perfectly fine with that as well. I just don't have the knowledge to root cause this issue and implement a fix myself.

Revision history for this message
Bruno Nova (brunonova) wrote :

(With the patches) it seems that the "other hosts" package lists are downloaded, but not saved.
There is this error:

ERROR:oneconf.networksync:Invalid package data from server: Package list invalid: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

Maybe due to an encoding problem in the (JSON) package list.
The received JSON file is of the sort:
"{u'libjson-glib-1.0-0': {u'auto': False}, ...}"

Revision history for this message
Kósa Lajos (lajos-p) wrote :

...and now the same with saucy... 3.11.0-12 generic kernel, if it matters. On two computers I have tried, both are unable to sync the same way as described above.

Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

I guess that's linked to barry port to python3 which can't talk with the server anymore. Barry, do you mind having a look? I thought that you tested oneconf with your port, right?

Changed in oneconf (Ubuntu):
assignee: nobody → Barry Warsaw (barry)
Revision history for this message
Barry Warsaw (barry) wrote : Re: [Bug 1165104] Re: oneconf is only showing the pc you are on in raring and isn't sharing to other machines

On Nov 06, 2013, at 05:46 PM, Didier Roche wrote:

>I guess that's linked to barry port to python3 which can't talk with the
>server anymore. Barry, do you mind having a look? I thought that you
>tested oneconf with your port, right?

I probably didn't test oneconf in the wild much, but the test suite did and
still does pass for me. I guess the test suite doesn't have enough
coverage. ;)

The tracebacks do look like they're making some additional assumptions about
object reprs that don't hold true in Python 3. I'll take a closer look.

Revision history for this message
Barry Warsaw (barry) wrote :

I tried applying Bruno's patches, but then all I get in oneconf-service is a 401 on 'list-machines/' (in infraclient_pristine.py's list-machines() method).

Revision history for this message
Bruno Nova (brunonova) wrote :

I've tried the patches now, and I don't get that error. (I've installed Saucy now)

401 is Unauthorized, right? Are you using Ubuntu 13.10 Saucy?
The second patch (fix_sso_app_name) is only for Saucy. If I'm not wrong, the name of the credential used in the authentication was renamed, in Saucy, from "Ubuntu Software Center" to "Ubuntu One".

Revision history for this message
Barry Warsaw (barry) wrote :

On Nov 06, 2013, at 08:01 PM, Bruno Nova wrote:

>I've tried the patches now, and I don't get that error. (I've installed
>Saucy now)
>
>401 is Unauthorized, right? Are you using Ubuntu 13.10 Saucy?

14.04 Trusty.

>The second patch (fix_sso_app_name) is only for Saucy. If I'm not wrong, the
>name of the credential used in the authentication was renamed, in Saucy, from
>"Ubuntu Software Center" to "Ubuntu One".

That patch should also be relevant for Trusty, right?

Revision history for this message
Bruno Nova (brunonova) wrote :

Oh, no idea about Trusty, but I suppose it should be relevant.
It should be something else then.

Revision history for this message
Bruno Nova (brunonova) wrote :

Ok, I've looked at the code again and made a workaround (an ugly one) for the problem I said in comment #13.
I've attached that workaround as a patch.

Now, the package lists of the other hosts appear to be correctly downloaded and interpreted.
And when I go to the Software Center, I can see a comparison between the packages I have now and the packages I had in Raring in my laptop.
I don't think the comparison is completely correct. For example, it says that I didn't have Shotwell installed in Raring (and I had).
But this seems to be an improvement.

I've tested this in Saucy.
I have no idea about Trusty. The server is accepting requests from computers running Trusty, right?

Revision history for this message
caprico (caprico4) wrote :

Also have this problem. Doesn't work on all my Ubuntu setups: 1x 13.10 64bit, 1x 13.10 32bit, 1x 12.04 64bit. Ubuntu store only displays local machine - synching isn't possible. It seems as if that feature isn't even available.

Revision history for this message
Bart (bart2pub) wrote :

I have been poking a bit in the code. In the file '/usr/share/pyshared/oneconf/networksync/infraclient_pristine.py' there is a methode 'list_machines' that is called at the start of the oneconf-query service to return the list of machines that are synced by the USC. The list is retrieved by calling the URL 'https://apps.staging.ubuntu.com/cat/api/1.0/list-machines/' (needs authentication).

On my machine, the above call only returns 1 machine (the local one), although when checking Ubuntu One (locally from within Settings Manager > Ubuntu One, or from the web page https://one.ubuntu.com/account/) I find my other device also listed as Ubuntu One @ ... and Ubuntu Software Center @ ...

So, big question is: why is the call to https://apps.staging.ubuntu.com/cat/api/1.0/list-machines/ only returning my local machine ???

I traced this by adding a way to log some information from the code in the file infraclient_pristine.py (as root):
I added on
    line 04: import logging
    line 21: LOG = logging.getLogger(__name__)
    line 45: LOG.debug(self._get('list-machines/', scheme=AUTHENTICATED_API_SCHEME))

then in a terminal on the command line I stopped the service with
    $ oneconf-query --stop
and restarted it again with
    $ oneconf-query --debug
I got some debugging log (give it some time), and after the lines
    DEBUG:oneconf.networksync:Start processing sync
    DEBUG:oneconf.networksync.infraclient_pristine:
it showed me what ubuntu.com was returning, i.e. only the information of the local device.

I hope this bug can be solved rapidly. It's such a usefull feature, but without this aspect running well, it becomes really crippled.

PS. working with Ubuntu 12.10 and 13.10. I did not use the patches attached in previous comments. I don't think they can resolve my problem as to me, there seems to be a bug with the API on the server ubuntu.com.

Revision history for this message
Bruno Nova (brunonova) wrote :

If you can. get the code of oneconf in both computers (latest version), apply the patches (I used quilt to create them; only apply "fix_sso_app_name.patch" in Ubuntu 13.10), then run "./oneconf-service --debug" right from the code directory (if oneconf is already running, stop the service).
Watch the debug messages, open the Software Center and make sure both computers are set to sync, and see if it works.
If not, stop oneconf and the Software Center and try just one more time.

I haven't tested this in Ubuntu 12.10, so I don't know if it should work.

Revision history for this message
Bart (bart2pub) wrote :

So I did more testing, the conclusion so far:
- From my Ubuntu 12.10, the app list was synced on the ubuntu.com server.
- From my Ubuntu 13.10, I presume the app list was only on the machine itself, although the device was listed on Ubuntu One.

I applied the fix_sso_app_name.patch to both machines (on the Ubuntu 12.10 I did the modification manually because the lines differ). It didn't solve anything, but it also did not get worse.

I checked the Ubuntu 13.10 machine and found the same error as mentioned in comment 7. On the other machine the same code worked well. So maby there is something wrong the way python3 resolves the self._get() in Ubuntu 13.10, where in Ubuntu 12.10 python2.7 does it well .

So I applied the infraclient_pristine_get.patch only to the 13.10 machine.

When I then restarted the service (/usr/share/oneconf/oneconf-service --debug), I found my other machine in the list returned bij the ubuntu.com server. See comment 23 for the the extra log code I added to infraclient_pristine.py .

And returning to the 12.10 machine, restarting the service returned both machines.

Conclusions so far:
- In Ubuntu 13.10 there is defenitly something wrong with that self._get() routine. the 'infraclient_pristine_get.patch' is a temporary solution.
- There is no easy way to check what is on the ubuntu.com servers. The device lists only (I presume) show if there has been a authentication, NOT if there really has been a transfer of data.
- The 'last used' dates on the https://one.ubuntu.com/account/ page don't seem to be updated of Ubuntu One and Ubuntu Software Center. So they can't be used as check if data has been transfered well.
- More specific debug log lines in the onconf code could make tracing errors easier.
- Not sure if fix_sso_app_name.patch is necessary, but i doesn't seem to harm.

Revision history for this message
Bruno Nova (brunonova) wrote :

If oneconf in Ubuntu 12.10 is using python2, then the patches are probably irrelevant (and the bug report was for 13.04, so oneconf may be working correctly in 12.10).

The fix_sso_app_name.patch was because, in 13.10, it would complain about "credential not found" (USC's credential was renamed in this release, it seems).

You can check (sort of) what was downloaded in the directory ~/.cache/oneconf/<long hex name>/.
I've only tested all the patches in Ubuntu 13.10 (and, since I only have 1 working computer right now, I used Virtualbox as a second computer to sync with), and I executed the oneconf service right from the source code directory without installing it.

Revision history for this message
Bruno Nova (brunonova) wrote :

Some time passed without activity.

Like I said, I've tried running the patched oneconf-service (right from the source code directory) in my laptop and in Virtualbox (including in a Live DVD), and the sync seems to be working fine for me. I'm running Saucy.
I haven't tested in Trusty, but Barry says it's not working there. Maybe the server is not accepting requests from Trusty yet?

Since there hasn't been any (apparent) activity, I'm going to add the patches (with some changes) to a commit and propose a merge (for Saucy).
Then it would be great if it was tested by other people (and the developers).
If it's working, great! I'll then create the fix for Raring and propose a merge for raring-proposed.
I'm assuming this bug doesn't exist in older releases.

Revision history for this message
Barry Warsaw (barry) wrote :

I'm sorry, I just haven't had time to follow up on this yet.

Revision history for this message
Bruno Nova (brunonova) wrote :

No problem. I'll push the commits and propose a merge shortly.

Revision history for this message
Bruno Nova (brunonova) wrote :

Done. Merge proposed.
If this does fix the issue, I'll later add the fix to Raring.

Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

Commented on the MP. It seems that we are getting the creds from another file, not sure which one.

Revision history for this message
Axel Pospischil (apos) wrote :

Hi Bruno,

I tested this like in comment #25 in ubuntu 13.10:
But there are two problems:

fix_sso_app_name.patch:

- There is no "oauth" statement anymore

Restarting oneconf delivers two errors:

A. WARNING:oneconf.hosts:Error in loading other_hosts file: [Errno 2] No such file or directory: '/home/apos/.cache/oneconf/d0ed9abeeda25ba1055cb76552c582f6/other_hosts'

B: DEBUG:oneconf.networksync.ssohandler:credential not found

FULL:

   /usr/share/oneconf/oneconf-service --debug
   DEBUG:oneconf.hosts:LOGO 6ae90f8247b56ee0d9b84f21540e3706aa02ed8300bf46426522ed2f1380060387.0: /usr/share/backgrounds/Grass_by_Jeremy_Hill.jpg
   DEBUG:oneconf.hosts:Save current host to disk
   DEBUG:oneconf.utils:Saving updated /home/apos/.cache/oneconf/d0ed9abeeda25ba1055cb76552c582f6/host to disk
   WARNING:oneconf.hosts:Error in loading other_hosts file: [Errno 2] No such file or directory: '/home/apos/.cache/oneconf/d0ed9abeeda25ba1055cb76552c582f6/other_hosts'
   DEBUG:__main__:daemon up and running
   DEBUG:__main__:Setting loop quit ping: 300s
   DEBUG:__main__:Create a sync handler with infra
   DEBUG:oneconf.distributor:get_distro: 'Ubuntu'
   DEBUG:oneconf.networksync.netstatus:network status changed to 70
   DEBUG:oneconf.networksync.ssohandler:Try to get a proxy
   DEBUG:oneconf.networksync.ssohandler:look for credential
   DEBUG:oneconf.networksync.ssohandler:credential not found
   DEBUG:oneconf.networksync.netstatus:Connectivity state changed to: True

Hmmm. Probably there had been some changes upload?

Another thing: The Thread is not very easy to read and reproduce your steps isn't easy either.
Probably in an extra comment, you could some up a step by step guide for your tasks to reporduce easier:

e.g for 13:10:

1. Stop SoftwareCenter
2. patch file x with patch x in working_dir x (full path)
2. patch file y with patch y in working_dir x (full path)
3. oneconf stop and start do with ...

Returning everything back with:
   apt-get install --reinstall oneconf oneconf-common python-oneconf python3-oneconf

Revision history for this message
Bruno Nova (brunonova) wrote :

I don't have time to write a big comment now, but I'll make a comment with those steps in a few days.

For now, if you know how to use bazaar (or if you don't mind learning how to use it from the Internet), the patches are in this bazaar branch: lp:~brunonova/oneconf/lp1165104 (the branch's page is: https://code.launchpad.net/~brunonova/oneconf/lp1165104).
If you get the code from that branch, you can run the oneconf-service directly from there without installing anything.

Revision history for this message
Bruno Nova (brunonova) wrote :

Ok. Steps to test the patched oneconf in Ubuntu 13.10 Saucy:

1. If you haven't enabled software sync yet, do it first: open Ubuntu Software Center (USC) and choose "File > Sync Between Computers" in the menu (you'll be prompted for your Ubuntu One credentials if sync wasn't enabled yet).
Then close USC.

2. Download the patched oneconf code from http://bazaar.launchpad.net/~brunonova/oneconf/lp1165104/tarball/275?start_revid=275 , then extract it (it's an archive; this link was not very easy to find).

3. Open a terminal inside the extracted oneconf source directory (the folder "lp1165104", containing several folders and files like "oneconf-service").

4. Start the oneconf-service with the command "./oneconf-service --debug", and
watch the debug messages.
If it reports that oneconf is already running, execute "oneconf-query --stop" then run the previous command again.
Keep an eye out for WARNING and ERROR messages, and messages like "credential not found".
The "Error in loading other_hosts file" warning is perfectly fine if this is the first sync.

5. Wait for the sync to finish (wait for half a minute or so).
Then open USC, go to the installed software "tab" (or "File > Sync Between Computers").
See if USC "says" something like "Last sync DATE/TIME" at the bottom (below the list of computers).
If yes, then it seems the software list was successfully synced to the server.
Then close USC.

---

Repeat the previous steps in another computer(s) (you can use Virtualbox as another computer).

---

6. Now to see if the software list is synced between computers (through the server).
Stop the oneconf-service ("oneconf-query --stop") in both computers.
Then start it again ("./oneconf-service --debug") in one computer.
After the sync finishes, do the same for the other computer.
Then open USC in both computers and go to the installed software "tab". Check if all computers are listed and if, when you select another computer, if USC displays the differences between the computers (what is installed in both/what is only installed in one/what is only installed in the other).
If yes, it works! If not, repeat this step one or two more times.

Also, the synced data is stored in the directory "~/.cache/oneconf/RANDOM_NAME".
The files "other_hosts" and "package_list_*" are of particular interest.
If you want to clear the oneconf cache (and start from fresh), delete (or move) the RANDOM_NAME directory.

Changed in hundredpapercuts:
assignee: Papercuts Ninjas (papercuts-ninja) → nobody
Revision history for this message
Kósa Lajos (lajos-p) wrote :

Tested on two computers, both's sync running smoothly again.

Revision history for this message
Alberto Salvia Novella (es20490446e) wrote :

If you find that the bug is still there for you, please change its status back to 'confirmed' again.

Changed in oneconf (Ubuntu):
status: Triaged → Fix Released
Changed in hundredpapercuts:
status: Triaged → Fix Released
Revision history for this message
Bruno Nova (brunonova) wrote :

No new package was released to fix this issue.
Kósa's comment was referring to the proposed fix (branch), I think.
Also, it seems the fix doesn't work for Trusty.

I would change the status back to Triaged, if I could, but I can't.

Changed in hundredpapercuts:
status: Fix Released → Triaged
Changed in oneconf (Ubuntu):
status: Fix Released → Triaged
Revision history for this message
Kósa Lajos (lajos-p) wrote :

Yes Bruno, I meant the patch you described.

Revision history for this message
Robert J. Schulz (robert-rosaschulz) wrote :

#34 works fine!

But still misses "installing" into the system... so i tried:

sudo apt-get install python-setuptools python-distutils-extra
python setup.py build
sudo python setup.py install
rm -rf ~/.cache/oneconf/*

afterwards tried to test with:

/usr/share/oneconf/oneconf-service --debug

which fails:
robert@asus:~$ /usr/share/oneconf/oneconf-service --debug
DEBUGneconf.hosts:LOGO ea9c95113e155fa5db96bc64fedd2ef9d62cff22592b34bb2c6982311380060387.0: /usr/share/backgrounds/contest/raring.xml
DEBUGneconf.hostsave current host to disk
DEBUGneconf.utilsaving updated /home/robert/.cache/oneconf/1bb87b82060b00e07f90a92a51a67db3/host to disk
WARNINGneconf.hosts:Error in loading other_hosts file: [Errno 2] No such file or directory: '/home/robert/.cache/oneconf/1bb87b82060b00e07f90a92a51a67db3/other_hosts'
DEBUG:__main__:daemon up and running
DEBUG:__main__etting loop quit ping: 300s
DEBUG:__main__:Create a sync handler with infra
DEBUGneconf.distributor:get_distro: 'Ubuntu'
DEBUGneconf.networksync.netstatus:network status changed to 70
DEBUGneconf.networksync.ssohandler:Try to get a proxy
DEBUGneconf.networksync.ssohandler:look for credential
DEBUGneconf.networksync.ssohandler:credential found
DEBUGneconf.networksync.netstatus:Connectivity state changed to: True
DEBUGneconf.networksynctart processing sync
ERRORneconf.networksync:WebClient server answering but not available

then waiting... i finally killed it here:

^CTraceback (most recent call last):
  File "/usr/share/oneconf/oneconf-service", line 115, in <module>
    loop.run()
  File "/usr/lib/python3/dist-packages/gi/overrides/GLib.py", line 523, in run
    raise KeyboardInterrupt
KeyboardInterrupt

Run from the local directory it works fine logging:

robert@asus:~/projekte/~brunonova/oneconf/lp1165104$ ./oneconf-service --debug
DEBUGneconf.hosts:LOGO ea9c95113e155fa5db96bc64fedd2ef9d62cff22592b34bb2c6982311380060387.0: /usr/share/backgrounds/contest/raring.xml
DEBUGneconf.hostsave current host to disk
DEBUGneconf.utilsaving updated /home/robert/.cache/oneconf/1bb87b82060b00e07f90a92a51a67db3/host to disk
WARNINGneconf.hosts:Error in loading other_hosts file: [Errno 2] No such file or directory: '/home/robert/.cache/oneconf/1bb87b82060b00e07f90a92a51a67db3/other_hosts'
DEBUG:__main__:daemon up and running
DEBUG:__main__etting loop quit ping: 300s
DEBUG:__main__:Create a sync handler with infra
DEBUGneconf.distributor:get_distro: 'Ubuntu'
DEBUGneconf.networksync.netstatus:network status changed to 70
DEBUGneconf.networksync.ssohandler:Try to get a proxy
DEBUGneconf.networksync.ssohandler:look for credential
DEBUGneconf.networksync.ssohandler:credential found
DEBUGneconf.networksync.netstatus:Connectivity state changed to: True
DEBUGneconf.networksynctart processing sync
DEBUGneconf.networksync:Check if packages needs to be refreshed for aebbf169c428397ff95b44a100000009
...

By the way: an old host still pops up, which i deleted on the Ubuntu one web page.

Revision history for this message
Robert J. Schulz (robert-rosaschulz) wrote :

oh sorry: its an 13.10 box

Revision history for this message
Bruno Nova (brunonova) wrote :

@Robert, I followed your steps to install the patched oneconf on a Live session inside Virtualbox.
I got the "credential not found" error, so it didn't work.

Then I tried using "python3" instead of "python" to build/install, and it started working.
Maybe the files weren't being installed to the right place.
So, try using python3 instead in the 2 commands where you used python.

Revision history for this message
Robert J. Schulz (robert-rosaschulz) wrote :

 sudo apt-get install python3-setuptools python3-distutils-extra
 chmod a+x setup.py
 ./setup.py build
 sudo ./setup.py install

looks fine ! :-)

Revision history for this message
quina (kowalik-krzysztof) wrote :

hello!
I have had the same problem (oneconf/USC shows only PC you are on). I used method described in #34, which solves problem. But the old hosts still pop ups (like in #39). Is there any solving of this problem?

Platform: 13.10

tags: added: saucy
Revision history for this message
Simon Lynch (simon-lynch) wrote :

Looks like this is still broken in 14.04 (trying to sync with a box on 13.10) - neither see each other.

Guess I will just get a package list from the command line and paste it over into apt-get... having this not work just makes me think how far it still is away from a normal user... This is something users will really appreciate to have working.

[In the middle of the worst install of Ubuntu for about 6 years - wtf, guess it's my fault for getting machine with newish HW... - one dead W8 install, much messing around in BIOS, and I guess whatever else I didn't find yet... ouch]

tags: added: trusty
Revision history for this message
m (dummfikk) wrote :

On my machine (Ubuntu 12.04 with enablement stack) I could trace the error

oneconf.networksync:Invalid package data from server

This comes from:

/usr/lib/python2.7/dist-packages/oneconf/networksync

starting in line 89

    def list_packages(self, machine_uuid):
        """List all packages for that machine"""
        package_list = self._get('packages/%s/' % machine_uuid, scheme=AUTHENTICATED_API_SCHEME)
        if not package_list:
            raise APIError('Package list empty')
        # FIXME: need to do this hack to transform the http request to a json format content
        try:
            package_list = json.loads(package_list[1:-1].replace("'", '"').replace("True", "true").replace("False", 'false'))
        except ValueError, e:
            raise APIError('Package list invalid: %s' % e)
        return package_list

The #FIXME is not enough, because the server delivers a kind of unicode string.
json.loads(package_list[1:-1].replace("u'", "'").replace("'", '"').replace("True", "true").replace("False", 'false')

does it for me

Revision history for this message
m (dummfikk) wrote :
Revision history for this message
Bruno Nova (brunonova) wrote :

This bug is marked with High importance and has a fix (of mine) waiting to be merged. Why does it seem to have been forgotten?

Meanwhile, to make it easier to install the fixes that I provided in the linked branch, I've uploaded a working version of Oneconf for Saucy and Trusty to this PPA here: https://launchpad.net/~brunonova/+archive/oneconf
This is the version that is in Saucy and Trusty, but with those fixes.
If you want to update to this version, run the following commands in a terminal:
(this could also be done graphically with "Software & Updates" and "Software Updater" programs)

    sudo add-apt-repository ppa:brunonova/oneconf
    sudo apt-get update
    sudo apt-get upgrade

If an official update is released for Oneconf by Ubuntu, it should take precedence over the version in the PPA.
I've tested this briefly in Saucy and Trusty (live session), and it seems to be working.
If it doesn't work, it may be due to an invalid Ubuntu One OAuth token, as mentioned in the merge proposal of the linked branch.

It would be great to see this officially fixed in Ubuntu!

Revision history for this message
dan the person (dantheperson) wrote :

wow, can't believe 14.04 shipped with this feature broken. At least hide it from the software centre GUI if you are not going to fix it!

Barry Warsaw (barry)
Changed in oneconf (Ubuntu):
assignee: Barry Warsaw (barry) → nobody
Revision history for this message
Axel Pospischil (apos) wrote :

Is there any progress in this?

It would be an excellent feature, of working. I am using 3 three business machines and a laptop at different places and I would like to synchronise the installations this way. In the moment i am doing this manually with dpkg --get-selecitons and apt-clone. But this would be the best!

I am really thinking about scripting this task in bash / ssh, if this has not future (probably due to ubuntu ones down?).

Sadly it is not working in Ubuntu 14.04 LTS (64 bit).

Greets Axel

Revision history for this message
Bruno Nova (brunonova) wrote :

Hello...?
Ubuntu developers, the merge proposal to fix this issue is still waiting... Please, someone check it and merge it, then backport it to Trusty.

Revision history for this message
Paul (pf+) wrote :

Broken in 14.10 too - brunonova: your fix still works!

Revision history for this message
Iain Lane (laney) wrote :

Fixed in bzr, will upload to 'wily' once that is opened.

Changed in oneconf (Ubuntu):
status: Triaged → Fix Committed
Changed in hundredpapercuts:
status: Triaged → Fix Committed
Bruno Nova (brunonova)
description: updated
Revision history for this message
Bruno Nova (brunonova) wrote :

@Ian, the bug is still "Fix Commited". Hasn't the fix been uploaded to Wily yet?

And then, could this be backported into Trusty and Saucy?

Revision history for this message
Bruno Nova (brunonova) wrote :

Sorry, I meant @Iain.

description: updated
Revision history for this message
Bruno Nova (brunonova) wrote :

Damn, I also meant Vivid instead of Saucy.
(Launchpad comments need an edit button)

Revision history for this message
Iain Lane (laney) wrote :

oh yes, thanks for reminding

Changed in oneconf (Ubuntu):
status: Fix Committed → Fix Released
Changed in hundredpapercuts:
status: Fix Committed → Fix Released
Iain Lane (laney)
Changed in oneconf (Ubuntu Trusty):
status: New → In Progress
Changed in oneconf (Ubuntu Vivid):
status: New → In Progress
Revision history for this message
Iain Lane (laney) wrote :

wily was already uploaded but I forgot to close this bug then, sorry

Uploading SRUs now.

Revision history for this message
Chris J Arges (arges) wrote : Please test proposed package

Hello Dave, or anyone else affected,

Accepted oneconf into trusty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/oneconf/0.3.7.14.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in oneconf (Ubuntu Trusty):
status: In Progress → Fix Committed
tags: added: verification-needed
Changed in oneconf (Ubuntu Vivid):
status: In Progress → Fix Committed
Revision history for this message
Chris J Arges (arges) wrote :

Hello Dave, or anyone else affected,

Accepted oneconf into vivid-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/oneconf/0.3.7.15.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Revision history for this message
Bruno Nova (brunonova) wrote :

I've updated the oneconf, oneconf-common, python-oneconf and python3-oneconf packages to the version in -proposed both in my Trusty machine and in a Vivid virtual machine.

Then, in each one, I opened the Software Center and clicked "File > Sync Between Computers", logging in to Ubuntu One if necessary.

After that, I could see my Trusty machine in Vivid's Software Center, plus another one (probably a previous installation).

In Trusty, however, the list of computers wasn't being displayed, for some reason. I had to remove the Ubuntu One credential from the Gnome Keyring and then re-login in the Software Center for it to work (some temporary problem in USC?).
The package sync was working though, as I tested by listing the contents of "~/.cache/oneconf/*/", and using "oneconf-query".

So, the update fixes the problem in oneconf, for both Trusty and Vivid.

tags: added: verification-done verification-done-trusty verification-done-vivid
removed: verification-needed
Revision history for this message
Adam Conrad (adconrad) wrote : Update Released

The verification of the Stable Release Update for oneconf has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package oneconf - 0.3.7.14.04.1

---------------
oneconf (0.3.7.14.04.1) trusty; urgency=medium

  * Decode the data received from the server if necessary. Use
    ast.literal_eval() to parse it. Thanks to Bruno Nova for the patch. (LP:
    #1165104)
  * Hostnames can contain '.' characters - fix the regex.

 -- Iain Lane <email address hidden> Mon, 06 Jul 2015 09:44:53 +0100

Changed in oneconf (Ubuntu Trusty):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package oneconf - 0.3.7.15.04.1

---------------
oneconf (0.3.7.15.04.1) vivid; urgency=medium

  * Decode the data received from the server if necessary. Use
    ast.literal_eval() to parse it. Thanks to Bruno Nova for the patch. (LP:
    #1165104)
  * Hostnames can contain '.' characters - fix the regex.

 -- Iain Lane <email address hidden> Mon, 06 Jul 2015 09:49:57 +0100

Changed in oneconf (Ubuntu Vivid):
status: Fix Committed → Fix Released
Revision history for this message
Bruno Nova (brunonova) wrote :

Since this bug has been officially fixed, the PPA I created (https://launchpad.net/~brunonova/+archive/oneconf) is no longer useful.
Therefore, I WILL DELETE THIS PPA SOON! If you are using it, please remove it.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.