First, an announcement: on Tuesday, the 20th of January, I’ll be doing an IRC chat on the Launchpad web service as part of Ubuntu Developer Week. See the schedule for details.
Newly published objects
The Bugs team has published CVEs through the web service. There’s a
cves collection associated with every bug, and you can link and unlink CVEs from bugs.
The Soyuz team has published archives. You can use the web service to inspect a distribution archive or PPA, copy packages from one archive to another, and manage the permissions of who’s allowed to upload to an archive.
Merge proposals have also been published, but they’re read-only for now, so not very useful yet. But pretty soon you should be able to integrate them into an external code review tool.
Modify fields directly instead of through named operations
Consider the bug task object. Up to this point it’s had a number of read-only fields like ‘status’, ‘importance’, and ‘assignee’. These fields aren’t really read-only: you can modify them, but you have to know the secret. Each has a corresponding named operation:
transitionToAssignee. To modify ‘status’ you need to invoke
So you can’t modify a bug task’s status the way you can modify a bug’s description. This launchpadlib code works:
>>> bug.description = "A new description"
But this code doesn’t (except now, on staging):
>>> task.status = "New"
You have to do this instead:
I’ve long felt that this
transitionTo stuff is an internal detail you shouldn’t have to worry about, and judging from the bugs you’re filing, some of you agree. So I’ve made ‘status’, ‘importance’, and ‘assignee’ look like regular read-write fields.
transitionTo methods are still available, so your old code will still work. In fact, the new code just calls the server-side
transitionTo methods behind the scenes. The validation errors you used to get from passing a bad value into
transitionToStatus will happen the same way if you set ‘status’ to a bad value.
There are other named operations that could be replaced by making the read-only field they modify into a read-write field, but I only changed those three bug task fields. I’ve talked to other Launchpad programmers about this new tool, and they’ll start using it according to their own schedules.
http_etag field now associated with entry objects such as people and bugs. It’s the same information provided in the HTTP header “ETag” when you get the entry object. So why send it again?
Well, imagine that you get a whole collection of bugtasks, and then decide you want to edit one of them. Ideally you’d use the value of “ETag” to make a conditional PUT or PATCH request, so that you wouldn’t accidentally overwrite someone else’s changes.
But you never got the ETag for that bugtask, because you got it as part of a collection. The
http_etag field comes to the rescue here, allowing you to make a conditional PUT or PATCH without having to send a separate GET just to get the bugtask’s ETag.