<div dir="ltr"><div><div><div><div>If I understand the conversations (in email and #pulp-dev), the issue is that there is a desire (requirement?) that repository formats are exported and imported natively by the format handler.<br><br></div>For example, I may export yum repositories which I can in turn sync back into a different pulp when those repos are served via http. Similarly for container images, I need to export them in a way that crane can serve them so crane can sync them.<br><br></div>What I'm really asking for, and I think this would apply to all repo types, is a pulp-native export and import. Pulp has information about a repository of type X and that the X files (*chuckle*) reside on disk. Is there no way to just have pulp slurp these files in and process the info in a way that the repo is recreated? <br><br></div>Why is it important that pulp be limited by the crane/docker api for export/import? Is it a "it's hard and we don't want to support it" argument, or is there a real technical aspect?<br><br></div>Inter-Server Sync (ISS) is very important for foreman, especially in disconnected scenarios. All the repo types are equally important: yum, container, ostree, iso, file, whatever.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 3, 2017 at 8:33 AM, Tom McKay <span dir="ltr"><<a href="mailto:thomasmckay@redhat.com" target="_blank">thomasmckay@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>The problem: Container images need to be delivered to another pulp in a disconnected manner. Specifically I need to "save" something to disk from pulp-1, walk that disk to another server, then import that saved content into pulp-2.<br><br></div>Quoting @mhrivnak from another email:<br><br><div style="margin-left:40px">The supported way to move docker content around is via the registry
 API, so we will need to do a "sync" on the disconnected capsule of a 
local crane instance that is serving walked-in content. It probably 
shouldn't be the same crane instance that's already running on the 
capsule, to avoid repo name collisions.</div><div style="margin-left:40px"><br></div><div style="margin-left:40px">You also need to have the docker content (blobs, manifests, etc) served locally.<br><div><br></div><div>httpd
 on the capsule could certainly be configured to run a second instance 
of crane on a different port, and to serve the walked-in content from 
some designated location.</div><div><br></div><div>1. Satellite 
publishes a docker repo. Its "redirect-url" needs to match whatever the 
URL will look like from the capsule when the content is being served 
there. Here are details on where the data gets written to disk by pulp: <a href="http://docs.pulpproject.org/plugins/pulp_docker/tech-reference/distributor.html#web-distributor" target="_blank">http://docs.pulpproject.<wbr>org/plugins/pulp_docker/tech-r<wbr>eference/distributor.html#web-<wbr>distributor</a></div><div><br></div><div>2. the json blob, plus the rest of the repo data, gets walked to the disconnected capsule.</div></div><div style="margin-left:40px"><br></div><div style="margin-left:40px">3. The walked-in content is put in the right place so that a local crane and web server makes it available.</div><div style="margin-left:40px"><br></div><div style="margin-left:40px">4. Pulp on the capsule syncs the walked-in repos.</div><br></div>This has me wondering a few things:<br><br></div>Could a single crane support serving up multiple registries on different ports that are serving up different pulp repos? docker pull mycrane:5001/image:tag<br><br></div>Could a single crane support serving up multiple registries on different paths? docker pull mycrane:5000/some/path/image:<wbr>tag<br><br></div>The context for my questions is foreman[1] where the disconnected use case is useful. Being able to also serve multiple registries for different organizations (scoping) would also be useful.<br><br></div>Creative ideas welcome!<br><div><br>[1] <a href="https://theforeman.org/plugins/katello/" target="_blank">https://theforeman.org/<wbr>plugins/katello/</a><br></div></div>
</blockquote></div><br></div>