/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */ package com.microsoft.azure.management.containerregistry.implementation; import com.microsoft.azure.management.apigeneration.LangDefinition; import com.microsoft.azure.management.containerregistry.Registry; import com.microsoft.azure.management.containerregistry.Sku; import com.microsoft.azure.management.containerregistry.StorageAccountParameters; import com.microsoft.azure.management.containerregistry.StorageAccountProperties; import com.microsoft.azure.management.containerregistry.PasswordName; import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.GroupableResourceImpl; import org.joda.time.DateTime; import rx.Observable; import rx.functions.Func1; /** * Implementation for Registry and its create and update interfaces. */ @LangDefinition public class RegistryImpl extends GroupableResourceImpl< Registry, RegistryInner, RegistryImpl, ContainerRegistryManager> implements Registry, Registry.Definition, Registry.Update { private RegistryCreateParametersInner createParameters; private RegistryUpdateParametersInner updateParameters; protected RegistryImpl(String name, RegistryInner innerObject, ContainerRegistryManager manager) { super(name, innerObject, manager); this.createParameters = new RegistryCreateParametersInner(); Sku sku = new Sku(); sku.withName("Basic"); this.createParameters.withSku(sku); } @Override public Sku sku() { return this.inner().sku(); } @Override public String loginServer() { return this.inner().loginServer(); } @Override public DateTime creationDate() { return this.inner().creationDate(); } @Override public boolean adminUserEnabled() { return this.inner().adminUserEnabled(); } @Override public StorageAccountProperties storageAccount() { return this.inner().storageAccount(); } @Override public RegistryImpl withAdminUserEnabled() { if (this.isInCreateMode()) { this.createParameters.withAdminUserEnabled(true); } else { this.updateParameters.withAdminUserEnabled(true); } return this; } @Override public RegistryImpl withoutAdminUserEnabled() { if (this.isInCreateMode()) { this.createParameters.withAdminUserEnabled(false); } else { this.updateParameters.withAdminUserEnabled(false); } return this; } @Override public RegistryImpl withExistingStorageAccount(String name, String accessKey) { StorageAccountParameters storageAccountParameters = new StorageAccountParameters(); storageAccountParameters.withName(name); storageAccountParameters.withAccessKey(accessKey); this.createParameters.withStorageAccount(storageAccountParameters); return this; } @Override protected Observable<RegistryInner> getInnerAsync() { return this.manager().inner().registries().getByResourceGroupAsync(this.resourceGroupName(), this.name()); } @Override public RegistryImpl update() { updateParameters = new RegistryUpdateParametersInner(); return super.update(); } @Override public Observable<Registry> createResourceAsync() { final RegistryImpl self = this; if (this.isInCreateMode()) { createParameters.withLocation(this.regionName().toLowerCase()); createParameters.withTags(this.inner().getTags()); return this.manager().inner().registries().createAsync(resourceGroupName(), name(), this.createParameters) .map(new Func1<RegistryInner, Registry>() { @Override public Registry call(RegistryInner containerServiceInner) { self.setInner(containerServiceInner); return self; } }); } else { this.updateParameters.withTags(this.inner().getTags()); return this.manager().inner().registries().updateAsync(resourceGroupName(), name(), this.updateParameters) .map(new Func1<RegistryInner, Registry>() { @Override public Registry call(RegistryInner containerServiceInner) { self.setInner(containerServiceInner); return self; } }); } } @Override public RegistryListCredentialsResultInner regenerateCredential(PasswordName passwordName) { return this.regenerateCredentialAsync(passwordName).toBlocking().last(); } @Override public Observable<RegistryListCredentialsResultInner> regenerateCredentialAsync(PasswordName passwordName) { return this.manager().inner().registries().regenerateCredentialAsync(this.resourceGroupName(), this.name(), passwordName); } @Override public RegistryListCredentialsResultInner listCredentials() { return this.listCredentialsAsync().toBlocking().last(); } @Override public Observable<RegistryListCredentialsResultInner> listCredentialsAsync() { return this.manager().inner().registries().listCredentialsAsync(this.resourceGroupName(), this.name()); } }