Skip to content

Commit 1907997

Browse files
authored
add sample for cloning vm to new region (#31912)
* add sample for cloning vm to new region * refine awaitCopyStartCompletion implementation * remove extension config * println to printf
1 parent 3f3889e commit 1907997

6 files changed

Lines changed: 4232 additions & 435 deletions

File tree

sdk/resourcemanager/azure-resourcemanager-compute/src/main/java/com/azure/resourcemanager/compute/implementation/SnapshotImpl.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.azure.resourcemanager.resources.fluentcore.arm.ResourceUtils;
2222
import com.azure.resourcemanager.resources.fluentcore.arm.models.implementation.GroupableResourceImpl;
2323
import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils;
24+
import reactor.core.publisher.Flux;
2425
import reactor.core.publisher.Mono;
2526

2627
import java.time.Duration;
@@ -136,19 +137,19 @@ public Mono<Void> awaitCopyStartCompletionAsync() {
136137
Mono<SnapshotInner> result = Mono.just(inner);
137138
if (inner.copyCompletionError() != null) { // service error
138139
result = Mono.error(new ManagementException(inner.copyCompletionError().errorMessage(), null));
139-
} else if (inner.completionPercent() == null || inner.completionPercent() != 100) { // in progress
140+
}
141+
return result;
142+
})
143+
.repeatWhen(longFlux -> Flux.interval(manager().serviceClient().getDefaultPollInterval()))
144+
.takeUntil(inner -> {
145+
if (Float.valueOf(100).equals(inner.completionPercent())) {
146+
return true;
147+
} else { // in progress
140148
logger.info("Wait for CopyStart complete for snapshot: {}. Complete percent: {}.",
141149
inner.name(), inner.completionPercent());
142-
result = Mono.empty();
150+
return false;
143151
}
144-
return result;
145152
})
146-
.repeatWhenEmpty(longFlux ->
147-
longFlux
148-
.flatMap(
149-
index ->
150-
Mono.delay(ResourceManagerUtils.InternalRuntimeContext.getDelayDuration(
151-
manager().serviceClient().getDefaultPollInterval()))))
152153
.then();
153154
}
154155

0 commit comments

Comments
 (0)