@@ -428,6 +428,19 @@ private String createResource(VolumeInfo vol, StoragePoolVO storagePoolVO)
428428 }
429429 }
430430
431+ private void resizeResource (DevelopersApi api , String resourceName , long sizeByte ) throws ApiException {
432+ VolumeDefinitionModify dfm = new VolumeDefinitionModify ();
433+ dfm .setSizeKib (sizeByte / 1024 );
434+
435+ ApiCallRcList answers = api .volumeDefinitionModify (resourceName , 0 , dfm );
436+ if (answers .hasError ()) {
437+ s_logger .error ("Resize error: " + answers .get (0 ).getMessage ());
438+ throw new CloudRuntimeException (answers .get (0 ).getMessage ());
439+ } else {
440+ s_logger .info (String .format ("Successfully resized %s to %d kib" , resourceName , dfm .getSizeKib ()));
441+ }
442+ }
443+
431444 private String cloneResource (long csCloneId , VolumeInfo volumeInfo , StoragePoolVO storagePoolVO ) {
432445 // get the cached template on this storage
433446 VMTemplateStoragePoolVO tmplPoolRef = _vmTemplatePoolDao .findByPoolTemplate (
@@ -452,6 +465,11 @@ private String cloneResource(long csCloneId, VolumeInfo volumeInfo, StoragePoolV
452465 }
453466
454467 s_logger .info ("Clone resource definition " + cloneRes + " to " + rscName + " finished" );
468+
469+ if (volumeInfo .getSize () != null && volumeInfo .getSize () > 0 ) {
470+ resizeResource (linstorApi , rscName , volumeInfo .getSize ());
471+ }
472+
455473 applyAuxProps (linstorApi , rscName , volumeInfo .getName (), volumeInfo .getAttachedVmName ());
456474 applyQoSSettings (storagePoolVO , linstorApi , rscName , volumeInfo .getMaxIops ());
457475
@@ -738,39 +756,27 @@ public void resize(DataObject data, AsyncCompletionCallback<CreateCmdResult> cal
738756 dfm .setSizeKib (resizeParameter .newSize / 1024 );
739757 try
740758 {
759+ resizeResource (api , rscName , resizeParameter .newSize );
760+
741761 applyQoSSettings (pool , api , rscName , resizeParameter .newMaxIops );
742762 {
743763 final VolumeVO volume = _volumeDao .findById (vol .getId ());
744764 volume .setMinIops (resizeParameter .newMinIops );
745765 volume .setMaxIops (resizeParameter .newMaxIops );
766+ volume .setSize (resizeParameter .newSize );
746767 _volumeDao .update (volume .getId (), volume );
747768 }
748-
749- ApiCallRcList answers = api .volumeDefinitionModify (rscName , 0 , dfm );
750- if (answers .hasError ())
751- {
752- s_logger .error ("Resize error: " + answers .get (0 ).getMessage ());
753- errMsg = answers .get (0 ).getMessage ();
754- } else
755- {
756- s_logger .info (String .format ("Successfully resized %s to %d kib" , rscName , dfm .getSizeKib ()));
757- vol .setSize (resizeParameter .newSize );
758- vol .update ();
759- }
760-
761769 } catch (ApiException apiExc )
762770 {
763771 s_logger .error (apiExc );
764772 errMsg = apiExc .getBestMessage ();
765773 }
766774
767775 CreateCmdResult result ;
768- if (errMsg != null )
769- {
776+ if (errMsg != null ) {
770777 result = new CreateCmdResult (null , new Answer (null , false , errMsg ));
771778 result .setResult (errMsg );
772- } else
773- {
779+ } else {
774780 // notify guests
775781 result = notifyResize (vol , oldSize , resizeParameter );
776782 }
0 commit comments