242242import com .cloud .storage .S3 ;
243243import com .cloud .storage .Snapshot ;
244244import com .cloud .storage .SnapshotVO ;
245+ import com .cloud .storage .Upload ;
245246import com .cloud .storage .Storage .ImageFormat ;
246247import com .cloud .storage .Storage .StoragePoolType ;
247248import com .cloud .storage .Storage .TemplateType ;
@@ -1525,8 +1526,8 @@ public SecurityGroupResponse createSecurityGroupResponse(SecurityGroup group) {
15251526 }
15261527
15271528 @ Override
1528- public ExtractResponse createExtractResponse (Long uploadId , Long id , Long zoneId , Long accountId , String mode ) {
1529- UploadVO uploadInfo = ApiDBUtils . findUploadById ( uploadId );
1529+ public ExtractResponse createExtractResponse (Long uploadId , Long id , Long zoneId , Long accountId , String mode , String url ) {
1530+
15301531 ExtractResponse response = new ExtractResponse ();
15311532 response .setObjectName ("template" );
15321533 VMTemplateVO template = ApiDBUtils .findTemplateById (id );
@@ -1538,11 +1539,19 @@ public ExtractResponse createExtractResponse(Long uploadId, Long id, Long zoneId
15381539 response .setZoneName (zone .getName ());
15391540 }
15401541 response .setMode (mode );
1541- response .setUploadId (uploadInfo .getUuid ());
1542- response .setState (uploadInfo .getUploadState ().toString ());
1542+ if (uploadId == null ) {
1543+ // region-wide image store
1544+ response .setUrl (url );
1545+ response .setState (Upload .Status .DOWNLOAD_URL_CREATED .toString ());
1546+ } else {
1547+ UploadVO uploadInfo = ApiDBUtils .findUploadById (uploadId );
1548+ response .setUploadId (uploadInfo .getUuid ());
1549+ response .setState (uploadInfo .getUploadState ().toString ());
1550+ response .setUrl (uploadInfo .getUploadUrl ());
1551+ }
15431552 Account account = ApiDBUtils .findAccountById (accountId );
15441553 response .setAccountId (account .getUuid ());
1545- response . setUrl ( uploadInfo . getUploadUrl ());
1554+
15461555 return response ;
15471556
15481557 }
0 commit comments