winterhazel opened a new pull request, #10363:
URL: https://github.com/apache/cloudstack/pull/10363

   
   ### Description
   
   After adding a new secondary storage, CloudStack will always try to download 
public templates/ISOs that have URLs from the source to the new secondary 
storage, even if it already exists on another one. Due to this behavior, if the 
URL does not exist anymore, the template will not become available at the new 
storage; and if the template has been updated at the source, it will not be 
installed because of checksum mismatch. This forces operators to manually 
copy/move templates to the new secondary storage.
   
   To solve this issue, this PR creates the zone-scoped setting 
`copy.public.templates.from.other.storages`. When enabled, CloudStack will try 
to copy templates/ISOs from other secondary storages in the same zone before 
attempting to downloading them from the source. It is enabled by default.
   
   ### Types of changes
   
   - [ ] Breaking change (fix or feature that would cause existing 
functionality to change)
   - [X] New feature (non-breaking change which adds functionality)
   - [ ] Bug fix (non-breaking change which fixes an issue)
   - [ ] Enhancement (improves an existing feature and functionality)
   - [ ] Cleanup (Code refactoring and cleanup, that may add test cases)
   
   ### Feature/Enhancement Scale or Bug Severity
   
   #### Feature/Enhancement Scale
   
   - [ ] Major
   - [X] Minor
   
   
   ### How Has This Been Tested?
   
   #### With the setting enabled
   
   1. I deleted all existing secondary storages, and registered an empty one 
(SS 1). I verified that the SSVM started to download the templates that were 
registered.
   
   2. I registered another template, and immediately also registered secondary 
storage 2. I verified that the templates available in SS 1 were copied to SS 2, 
and that the last registered template was being downloaded to both secondary 
storages.
   
   3. Inside SS 1, I deleted the first half of templates; inside SS 2, I 
deleted the other half of templates. Then, I added SS 3. I verified that all 
the templates were copied to SS 3. SS 1 and SS 2 were not synchronized yet, so 
they still had only half of the templates each.
   
   4. I restarted the SSVM's service. I verified that the first half of 
templates was copied from SS 1 to SS 2, and that the other half was copied from 
SS 2 to SS 1.
   
   5. I deleted SS 1 and SS 2. Then, I deployed a VM using each one of the 
templates, and verified that they were deployed successfully.
   
   #### With the setting disabled
   
   6. I disabled the setting and added SS 4. I verified that the SSVM started 
to download the templates to SS 4 from the source instead of copying them.
   
   7. Migration: I marked all templates as private so that they are not 
downloaded to new secondary storages. Then, I added SS 5 and called 
`migrateSecondaryStorageData` to migrate data from SS 4 to SS 5. I verified 
that the templates were migrated successfully.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to