@@ -665,6 +665,11 @@ protected TemplateObject findUsableTemplate(VMTemplateVO tmplt, List<DataStore>
665665 continue ;
666666 }
667667
668+ Map <String , TemplateProp > templates = listTemplate (store );
669+ if (templates == null || !templates .containsKey (tmplt .getUniqueName ())) {
670+ continue ;
671+ }
672+
668673 if (tmpl .getInstallPath () == null ) {
669674 logger .debug ("Template [{}] found in image store [{}] but install path is null. Skipping." ,
670675 tmplt .getUniqueName (), store .getName ());
@@ -678,24 +683,14 @@ protected TemplateObject findUsableTemplate(VMTemplateVO tmplt, List<DataStore>
678683 private boolean searchAndCopyWithinZone (VMTemplateVO tmplt , DataStore destStore ) {
679684 Long destZoneId = destStore .getScope ().getScopeId ();
680685 List <DataStore > storesInSameZone = _storeMgr .getImageStoresByZoneIds (destZoneId );
681- for (DataStore sourceStore : storesInSameZone ) {
682- Map <String , TemplateProp > existingTemplatesInSourceStore = listTemplate (sourceStore );
683- if (existingTemplatesInSourceStore == null ||
684- !existingTemplatesInSourceStore .containsKey (tmplt .getUniqueName ())) {
685- logger .debug ("Template [{}] does not exist on image store [{}]; searching another." , tmplt .getUniqueName (), sourceStore .getName ());
686- continue ;
687- }
688686
689- TemplateObject sourceTmpl = (TemplateObject ) _templateFactory .getTemplate (tmplt .getId (), sourceStore );
690- if (sourceTmpl .getInstallPath () == null ) {
691- logger .warn ("Cannot copy template [{}] from image store [{}]; install path is null." , tmplt .getUniqueName (), sourceStore .getName ());
692- continue ;
693- }
694-
695- storageOrchestrator .orchestrateTemplateCopyToImageStore (sourceTmpl , destStore );
696- return true ;
687+ TemplateObject sourceTmpl = findUsableTemplate (tmplt , storesInSameZone );
688+ if (sourceTmpl == null ) {
689+ return false ;
697690 }
698- return false ;
691+
692+ storageOrchestrator .orchestrateTemplateCopyToImageStore (sourceTmpl , destStore );
693+ return true ;
699694 }
700695
701696 private boolean copyTemplateAcrossZones (DataStore destStore , TemplateObject sourceTmpl ) {
0 commit comments