Project

Profile

Help

Story #6376

Updated by dalley over 4 years ago

## Motivation 

 Currently, Publications/Distributions are recreated on every run.  
 It means that on every run, even if there were no changes all the metadata (for some plugins) needs to be regenerated and Publication and Distribution needs to be created. 

 ## Proposal 

 Track If there were any changes in pulp2 distributors. 
 Check if there were any changes to repositories. 
 Based on that information decide whether to recreate the Publications and Distributions or not 


 ##### Track If there were any changes in pulp2 distributors 

 Similar to importers, [this commit](https://github.com/pulp/pulp-2to3-migration/commit/809715843fe093b614e9b0cef9a09a60e7a47ebc) removed some initial attempts to track the distrubutors, see the deletion in `mark_removed_resources` and `pre_migrate_*`. 

 It's very important to delete all irrelevant Distributions, otherwise it's possible to have an overlapping base_paths which will fail migration. 

  - Pulp2Distributor model for pre-migration needs a new field `not_in_plan` 
  - Update `not_in_plan` `not_in_plan accordingly in the `mark_removed_resources` step 
  - Remove Publications and Distributions from Pulp 3 if their Pulp 2 counterpart is marked as `not_in_plan` 
  - When pre-migrating a distributor, determine if there were any changes and mark it by setting `is_migrated` to False 
  - When pre-migrating a distributor, if there are changes affected a publication or a distribution, remove a Publication or A Distribution associated with it. 


 ##### Check if there were any changes to repositories 

  - If a repository had any changes to the content, distributors distributor for such repository needs to be marked as    `is_migrated=False` and corresponding Publication/Distribution should be removed from Pulp 3. 

 ##### Based on that information decide whether to recreate Publications and Distributions or not 
  - At the migration step, create a Publication and/or a Distribution for each Pulp2Distributor    has `is_migrated=False`

Back