canonical-ci-engineering team mailing list archive
-
canonical-ci-engineering team
-
Mailing list archive
-
Message #00829
Imagebuilder + touch
As discussed, we'd like to modify the imagebuilder so that we can request
builds of touch images, cloud images, or both. The cloud image building
doesn't change really from what we did in mthood, but for touch images it
will need to submit a request on a new rabbit queue for the system-image
server to handle, so that a single request can be made to build image(s).
Given that the options would differ depending on the type of image(s) being
requested, we'll need to change what image builder expects to get. In the
beginning, we assumed that additional image build requests, once supported,
would come in as additional requests. So, the current implementation looks
for something a bit like:
{
'image': 'url_to_base_image',
'ppa_list': [...],
'package_list': [...],
'series': 'ubuntu series',
'trigger': 'progress-trigger'
}
This looks like it changed when we moved away from rest, we used to also
encode the image type of 'cloud' in the image.
For UCE, I think we should allow passing a list here, even if it's just one
item. So the new one could look something like:
[
{
'image_type': 'cloud',
'image': 'url_to_base_image',
'ppa_list': [...],
'package_list': [...],
'series': 'ubuntu series',
'trigger': 'progress-trigger'
},
{
'image_type': 'touch',
'system-image-server': 'url_to_server_for_base_image',
'system-image-channel': 'channel for base image',
'ppa_list': [...],
'package_list': [...],
'series': 'ubuntu series',
'trigger': 'progress-trigger'
}
]
The system image server and channel in the example would be used to
configure a channel that builds its own rootfs with the given ppa/packages,
and pulls the unchanged android bits from the remote system image
server/channel specified. It would mirror those, and then host a new
channel that we could install from. Don't get too caught up in the details
here, they may change a bit, but I'm mostly suggesting a structural change
to make this a list. We could then just iterate the list and send the
request to the proper method to handle each type of image(s).
Does this sound reasonable? Any better ideas?
Follow ups