Distributions definitely do not need to be migrated (i see them more as configuration similar to importers, than i do as something that can be exported/imported).

Publications i think would be a nice to have, but can be re-generated on the other side based on the repository version. While the publication won't be 100% exact (due to timestamps and ordering differences), i'm not sure that it matters.  The biggest drawback will just be that the importing side needs to be smarter, and it will take a little longer.    I could see import/export of publications being an optimization or extension later on, but not necessary for a first pass.  If i'm missing some issue or use case, please do speak up!

Justin

On 2/17/20 1:05 PM, David Davis wrote:
The user stories that Katello gave us (which I've entered into redmine here[0]) don't mention publications or distributions. I will follow up with Katello though.

[0] https://pulp.plan.io/issues/6134

David


On Mon, Feb 17, 2020 at 12:49 PM Dennis Kliban <dkli...@redhat.com <mailto:dkli...@redhat.com>> wrote:

    On Fri, Feb 14, 2020 at 1:11 PM David Davis <davidda...@redhat.com
    <mailto:davidda...@redhat.com>> wrote:

        Grant and I met today to discuss importers and exporters[0]
        and we'd like some feedback before we proceed with the design.
        To sum up this feature briefly: users can export a repository
        version from one Pulp instance and import it to another.


    Exporting just repository versions is not sufficient for
    reproducing a Pulp instance in an air gapped environment. Users
    need to be able to use the "export" to populate a Pulp instance
    without needing to create any publications and/or distributions
    afterwards. What about letting users specify a repository to
    export and then have pulpcore figure out which repository
    versions, publications, distributions, content, metadata, and
    artifacts need to be exported?


        # Master/Detail vs Core

        So one fundamental question is whether we should use a
        Master/Detail approach or just have core control the flow but
        call out to plugins to get export formats.

        To give some background: we currently define Exporters (ie
        FileSystemExporter) in core as Master models. Plugins extend
        this model which allows them to configure or customize the
        Exporter. This was necessary because some plugins need to
        export Publications (along with repository metadata) while
        other plugins who don't have Publications or metadata export
        RepositoryVersions.

        The other option is to have core handle the workflow. The user
        would call a core endpoint and provide a RepositoryVersion.
        This would work because for importing/exporting, you wouldn't
        ever use Publications because metadata won't be used for
        importing back into Pulp. If needed, core could provide a way
        for plugin writers to write custom handlers/exporters for
        content types.

        If we go with the second option, the question then becomes
        whether we should divorce the concept of Exporters and
        import/export. Or do we also switch Exporters from
        Master/Detail to core only?

        # Foreign Keys

        Content can be distributed across multiple tables (eg
        UpdateRecord has UpdateCollection, etc). In our export, we
        could either use primary keys (UUIDs) or natural keys to
        relate records. The former assumes that UUIDs are unique
        across Pulp instances. The safer but more complex alternative
        is to use natural keys. This would involve storing a set of
        fields on a record that would be used to identify a related
        record.

        # Incremental Exports

        There are two big pieces of data contained in an export: the
        dataset of Content from the database and the artifact files.
        An incremental export cuts down on the size of an export by
        only exporting the differences. However, when performing an
        incremental export, we could still export the complete dataset
        instead of just a set of differences
        (additions/removals/updates). This approach would be simpler
        and it would allow us to ensure that the new repo version
        matches the exported repo version exactly. It would however
        increase the export size but not by much I think--probably
        some number of megabytes at most.

        [0] https://pulp.plan.io/issues/6134

        David
        _______________________________________________
        Pulp-dev mailing list
        Pulp-dev@redhat.com <mailto:Pulp-dev@redhat.com>
        https://www.redhat.com/mailman/listinfo/pulp-dev


_______________________________________________
Pulp-dev mailing list
Pulp-dev@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev
_______________________________________________
Pulp-dev mailing list
Pulp-dev@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev

Reply via email to