Project

Profile

Help

Task #5837

closed

Story #3821: As a user, I can migrate from Pulp 2 to Pulp 3

Specify pulp2_distributor_repository_ids instead of distributor_ids

Added by ipanova@redhat.com over 4 years ago. Updated almost 4 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Sprint/Milestone:
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
Yes
Sprint Candidate:
No
Tags:
Sprint:
Sprint 64
Quarter:

Description

Motivation

Distributor can't be identified by distributor_id, the uniqueness constraint for pulp2 distributor is `distributor_id` + `repo_id`.
pulp-admin creates a distributor with distributor_id=distributor_type_id, so we can't rely on distributor_id at all. It can be the same for many repositories.

Solution

Migration plan will accept pulp2_distributor_repository_ids( repo_id of the distributor associated to it). If repo has 2 distributors, we will migrate both of them.

Update Migration plan parsing: fetch distributors from the mentioned repos, filter only those distributors type that are specified in the Migrator, create a namedtuple that will contain pulp2repo _id( we want to migrate) and distributor Object ID( distributor we want to use to create Distribution)

Example of a plan


 {
    "plugins": [
       { 
         "type": "iso",  # it should be a pulp2 type
         "repositories" :  [
           {
             "name": "foo",
             "pulp2_importer_repository_id":  "my_repo_id to use to find an importer to migrate"
             "repository_versions": [
                 {
                   "pulp2_repository_id": "idA",
                   "distributor_ids":  ["pulp2_distributor_repository_id1", "pulp2_distributor_repository_id2"] 

                  },                
                  {
                    "pulp2_repository_id": "idB",
                    "distributor_ids":  ["pulp2_distributor_repository_id3"]
                  },
               ]
            }
        ]
     },
     {
       "type": "docker",
     }
  ]
}

Example of parsed plan


repodistribution = namedtuple('repodistribution', ['repo_id', 'dist_ids'])

 pulp3_repo_setup = {'foo': {'pulp2_importer_repository_id': 'my_repo_id', 'versions': [repodistribution('idA', [ObjectId("5de97a32c998ac5dffb0d6a4"), ObjectId("5de97a33c998ac5dffb0d6aa")]), repodistribution('idB', [ ObjectId("5de97a33c998ac5dffb0d6ad")])]}}

Also available in: Atom PDF