package com.microsoft.azure.management.containerregistry.implementation;
import com.microsoft.azure.Page;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.containerregistry.RegistryTaskRun;
import com.microsoft.azure.management.containerregistry.RegistryTaskRuns;
import com.microsoft.azure.management.resources.fluentcore.utils.PagedListConverter;
import rx.Completable;
import rx.Observable;
import rx.functions.Func1;
@LangDefinition
class RegistryTaskRunsImpl implements RegistryTaskRuns {
private ContainerRegistryManager registryManager;
RegistryTaskRunsImpl(ContainerRegistryManager registryManager) {
this.registryManager = registryManager;
}
@Override
public RegistryTaskRun.DefinitionStages.BlankFromRuns scheduleRun() {
return new RegistryTaskRunImpl(registryManager, new RunInner());
}
@Override
public Observable<RegistryTaskRun> listByRegistryAsync(String rgName, String acrName) {
return this.registryManager.inner().runs().listAsync(rgName, acrName)
.flatMapIterable(new Func1<Page<RunInner>, Iterable<RunInner>>() {
@Override
public Iterable<RunInner> call(Page<RunInner> page) {
return page.items();
}
})
.map(new Func1<RunInner, RegistryTaskRun>() {
@Override
public RegistryTaskRun call(RunInner inner) {
return wrapModel(inner);
}
});
}
@Override
public PagedList<RegistryTaskRun> listByRegistry(String rgName, String acrName) {
return (new PagedListConverter<RunInner, RegistryTaskRun>() {
@Override
public Observable<RegistryTaskRun> typeConvertAsync(final RunInner inner) {
return Observable.<RegistryTaskRun>just(wrapModel(inner));
}
}).convert(this.registryManager.inner().runs().list(rgName, acrName));
}
@Override
public Observable<String> getLogSasUrlAsync(String rgName, String acrName, String runId) {
return this.registryManager.inner().runs().getLogSasUrlAsync(rgName, acrName, runId).map(new Func1<RunGetLogResultInner, String>() {
@Override
public String call(RunGetLogResultInner runGetLogResultInner) {
return runGetLogResultInner.logLink();
}
});
}
@Override
public String getLogSasUrl(String rgName, String acrName, String runId) {
return this.getLogSasUrlAsync(rgName, acrName, runId).toBlocking().last();
}
@Override
public Completable cancelAsync(String rgName, String acrName, String runId) {
return this.registryManager.inner().runs().cancelAsync(rgName, acrName, runId).toCompletable();
}
@Override
public void cancel(String rgName, String acrName, String runId) {
this.cancelAsync(rgName, acrName, runId).await();
}
private RegistryTaskRunImpl wrapModel(RunInner innerModel) {
return new RegistryTaskRunImpl(registryManager, innerModel);
}
}