Merge pull request #1424 from syed/create-template-api-bug [CLOUDSTACK-8973] Fix create template from snapshot returning null in case of region storeThis PR fixes a case where when we create a template from a snpashot in a region wide store, we don't set the cross zone flag which causes a null response to be returned Tests:
Before fix ``` (local) > create template snapshotid=33aa3f3b-5a47-4d2a-8d27-12952c01ebed displaytext=t2 ostypeid=20c8ead6-d750-11e5-9f8c-06524200007c name=t9 accountid = 1b13d7c2-d750-11e5-9f8c-06524200007c cmd = org.apache.cloudstack.api.command.admin.template.CreateTemplateCmdByAdmin created = 2016-02-23T16:09:24+0000 jobid = 4f9f5ff9-e7f0-4af6-999c-799431fd47de jobinstanceid = a08a9711-bd31-43bb-80a2-49cf9d722a19 jobinstancetype = Template jobprocstatus = 0 jobresult: null: crossZones = False isfeatured = False ispublic = False isready = False tags: jobresultcode = 0 jobresulttype = object jobstatus = 1 userid = 1b140f08-d750-11e5-9f8c-06524200007c ``` See the *null* in response After fix: ``` (local) > create template snapshotid=33aa3f3b-5a47-4d2a-8d27-12952c01ebed displaytext=t2 ostypeid=20c8ead6-d750-11e5-9f8c-06524200007c name=t11 accountid = 1b13d7c2-d750-11e5-9f8c-06524200007c cmd = org.apache.cloudstack.api.command.admin.template.CreateTemplateCmdByAdmin created = 2016-02-25T21:47:03+0000 jobid = 1b74209b-b3c1-4168-a243-f559aa0c081b jobinstanceid = 06ecee5a-b1f2-4e67-80fb-f0f44b0aa198 jobinstancetype = Template jobprocstatus = 0 jobresult: template: id = 06ecee5a-b1f2-4e67-80fb-f0f44b0aa198 name = t11 account = admin created = 2016-02-25T21:47:03+0000 crossZones = True displaytext = t2 domain = ROOT domainid = 1b13ab80-d750-11e5-9f8c-06524200007c format = VHD hypervisor = XenServer isdynamicallyscalable = False isextractable = True isfeatured = False ispublic = False isready = True ostypeid = 20c8ead6-d750-11e5-9f8c-06524200007c ostypename = CentOS 5 (64-bit) passwordenabled = False size = 21474836480 sourcetemplateid = 1af0f0cc-d750-11e5-9f8c-06524200007c sshkeyenabled = False status = Download Complete tags: templatetype = USER jobresultcode = 0 jobresulttype = object jobstatus = 1 userid = 1b140f08-d750-11e5-9f8c-06524200007c ``` Works correctly * pr/1424: Fix create template from snapshot returning null in case of region store Signed-off-by: Will Stevens <williamstev...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/978184bc Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/978184bc Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/978184bc Branch: refs/heads/master Commit: 978184bccbb48ae87d0d40e174847a34c53b94e9 Parents: 6a6e164 7b5d564 Author: Will Stevens <williamstev...@gmail.com> Authored: Wed May 25 23:04:30 2016 -0400 Committer: Will Stevens <williamstev...@gmail.com> Committed: Wed May 25 23:04:31 2016 -0400 ---------------------------------------------------------------------- server/src/com/cloud/api/ApiResponseHelper.java | 2 +- .../com/cloud/template/TemplateManagerImpl.java | 14 +++- .../cloud/template/TemplateManagerImplTest.java | 85 ++++++++++++++++++++ 3 files changed, 99 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/978184bc/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/978184bc/server/src/com/cloud/template/TemplateManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/template/TemplateManagerImpl.java index ceee616,17c103d..c03db35 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@@ -38,8 -38,10 +38,10 @@@ import com.google.gson.Gson import com.google.gson.GsonBuilder; import org.apache.cloudstack.api.command.user.template.GetUploadParamsForTemplateCmd; -import org.apache.cloudstack.api.response.GetUploadParamsResponse; +import org.apache.cloudstack.framework.async.AsyncCallFuture; import org.apache.cloudstack.storage.command.TemplateOrVolumePostUploadCommand; + import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; + import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; import org.apache.cloudstack.utils.imagestore.ImageStoreUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.log4j.Logger;