Skip to content

Commit 5376d2a

Browse files
authored
mgmt appplatform support enterprise tier build and configuration service (Azure#28356)
* build service & configuration service java docs * changelog and session records * checkstyle * git config bug fix git repository config bug fix * session records * add protection * rename git repository config in spring service * nit * nit, remove codegen header * nit
1 parent 9c1e235 commit 5376d2a

20 files changed

+18341
-1204
lines changed

sdk/resourcemanager/api-specs.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"dir": "azure-resourcemanager-appplatform",
44
"source": "specification/appplatform/resource-manager/readme.md",
55
"package": "com.azure.resourcemanager.appplatform",
6-
"args": "--tag=package-preview-2022-01 --remove-inner=TestKeys,ResourceSku,ResourceUploadDefinition,CustomDomainValidateResult,NameAvailability --preserve-model=UserSourceType,RuntimeVersion"
6+
"args": "--tag=package-preview-2022-01 --remove-inner=TestKeys,ResourceSku,ResourceUploadDefinition,CustomDomainValidateResult,NameAvailability"
77
},
88
"appservice": {
99
"dir": "azure-resourcemanager-appservice",

sdk/resourcemanager/azure-resourcemanager-appplatform/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## 2.15.0-beta.1 (Unreleased)
44

5+
### Features Added
6+
7+
- Supported Enterprise Tier `Configuration Service`.
8+
- Supported Enterprise Tier `Build Service`.
9+
510
### Breaking Changes
611

712
- Removed `createdTime` from `AppResourceProperties` and `DeploymentResourceProperties`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.azure.resourcemanager.appplatform.implementation;
5+
6+
/** (internal use) Implementation-shared constants. */
7+
class Constants {
8+
public static final String DEFAULT_TANZU_COMPONENT_NAME = "default";
9+
}

sdk/resourcemanager/azure-resourcemanager-appplatform/src/main/java/com/azure/resourcemanager/appplatform/implementation/SpringAppDeploymentImpl.java

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.azure.resourcemanager.appplatform.AppPlatformManager;
77
import com.azure.resourcemanager.appplatform.fluent.models.DeploymentResourceInner;
88
import com.azure.resourcemanager.appplatform.fluent.models.LogFileUrlResponseInner;
9+
import com.azure.resourcemanager.appplatform.models.BuildResultUserSourceInfo;
910
import com.azure.resourcemanager.appplatform.models.DeploymentInstance;
1011
import com.azure.resourcemanager.appplatform.models.DeploymentResourceProperties;
1112
import com.azure.resourcemanager.appplatform.models.DeploymentResourceStatus;
@@ -155,6 +156,8 @@ private void ensureSource(UserSourceType type) {
155156
innerModel().properties().withSource(new SourceUploadedUserSourceInfo());
156157
} else if (type == UserSourceType.NET_CORE_ZIP) {
157158
innerModel().properties().withSource(new NetCoreZipUploadedUserSourceInfo());
159+
} else if (type == UserSourceType.BUILD_RESULT) {
160+
innerModel().properties().withSource(new BuildResultUserSourceInfo());
158161
} else {
159162
innerModel().properties().withSource(new UserSourceInfo());
160163
}
@@ -213,12 +216,20 @@ private Mono<Void> uploadToStorage(File source, ResourceUploadDefinition option)
213216

214217
@Override
215218
public SpringAppDeploymentImpl withJarFile(File jar) {
216-
ensureSource(UserSourceType.JAR);
217-
this.addDependency(
218-
context -> parent().getResourceUploadUrlAsync()
219-
.flatMap(option -> uploadToStorage(jar, option)
220-
.then(context.voidMono()))
221-
);
219+
if (service().isEnterpriseTier()) {
220+
throw new UnsupportedOperationException("Enterprise tier artifact deployment not supported yet.");
221+
} else {
222+
ensureSource(UserSourceType.JAR);
223+
this.addDependency(
224+
context -> parent().getResourceUploadUrlAsync()
225+
.flatMap(option -> {
226+
UploadedUserSourceInfo uploadedUserSourceInfo = (UploadedUserSourceInfo) innerModel().properties().source();
227+
uploadedUserSourceInfo.withRelativePath(option.relativePath());
228+
return uploadToStorage(jar, option)
229+
.then(context.voidMono());
230+
})
231+
);
232+
}
222233
return this;
223234
}
224235

@@ -242,15 +253,28 @@ public SpringAppDeploymentImpl withJarFile(File jar) {
242253

243254
@Override
244255
public SpringAppDeploymentImpl withExistingSource(UserSourceType type, String relativePath) {
245-
ensureSource(type);
246-
UserSourceInfo userSourceInfo = innerModel().properties().source();
247-
if (userSourceInfo instanceof UploadedUserSourceInfo) {
248-
UploadedUserSourceInfo uploadedUserSourceInfo = (UploadedUserSourceInfo) userSourceInfo;
249-
uploadedUserSourceInfo.withRelativePath(relativePath);
256+
if (isEnterpriseTier()) {
257+
ensureSource(UserSourceType.BUILD_RESULT);
258+
UserSourceInfo sourceInfo = innerModel().properties().source();
259+
if (sourceInfo instanceof BuildResultUserSourceInfo) {
260+
BuildResultUserSourceInfo userSourceInfo = (BuildResultUserSourceInfo) sourceInfo;
261+
userSourceInfo.withBuildResultId(relativePath);
262+
}
263+
} else {
264+
ensureSource(type);
265+
UserSourceInfo userSourceInfo = innerModel().properties().source();
266+
if (userSourceInfo instanceof UploadedUserSourceInfo) {
267+
UploadedUserSourceInfo uploadedUserSourceInfo = (UploadedUserSourceInfo) userSourceInfo;
268+
uploadedUserSourceInfo.withRelativePath(relativePath);
269+
}
250270
}
251271
return this;
252272
}
253273

274+
private boolean isEnterpriseTier() {
275+
return service().isEnterpriseTier();
276+
}
277+
254278
@Override
255279
public SpringAppDeploymentImpl withSourceCodeTarGzFile(File sourceCodeTarGz) {
256280
ensureSource(UserSourceType.SOURCE);
@@ -437,4 +461,8 @@ private AppPlatformManager manager() {
437461
public SpringAppImpl attach() {
438462
return parent().addActiveDeployment(this);
439463
}
464+
465+
private SpringServiceImpl service() {
466+
return parent().parent();
467+
}
440468
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.azure.resourcemanager.appplatform.implementation;
5+
6+
import com.azure.resourcemanager.appplatform.AppPlatformManager;
7+
import com.azure.resourcemanager.appplatform.fluent.models.ConfigurationServiceResourceInner;
8+
import com.azure.resourcemanager.appplatform.models.ConfigurationServiceGitProperty;
9+
import com.azure.resourcemanager.appplatform.models.ConfigurationServiceGitRepository;
10+
import com.azure.resourcemanager.appplatform.models.SpringConfigurationService;
11+
import com.azure.resourcemanager.appplatform.models.SpringService;
12+
import com.azure.resourcemanager.resources.fluentcore.arm.models.implementation.ExternalChildResourceImpl;
13+
import reactor.core.publisher.Mono;
14+
15+
import java.util.Collections;
16+
import java.util.List;
17+
import java.util.Optional;
18+
19+
public class SpringConfigurationServiceImpl
20+
extends ExternalChildResourceImpl<SpringConfigurationService, ConfigurationServiceResourceInner, SpringServiceImpl, SpringService>
21+
implements SpringConfigurationService {
22+
protected SpringConfigurationServiceImpl(String name, SpringServiceImpl parent, ConfigurationServiceResourceInner innerObject) {
23+
super(name, parent, innerObject);
24+
}
25+
26+
@Override
27+
public String cpu() {
28+
return innerModel().properties().resourceRequests().cpu();
29+
}
30+
31+
@Override
32+
public String memory() {
33+
return innerModel().properties().resourceRequests().memory();
34+
}
35+
36+
@Override
37+
public String gitUri() {
38+
return findDefaultRepository()
39+
.map(ConfigurationServiceGitRepository::uri)
40+
.orElse(null);
41+
}
42+
43+
@Override
44+
public List<String> filePatterns() {
45+
return findDefaultRepository()
46+
.map(ConfigurationServiceGitRepository::patterns)
47+
.orElse(Collections.emptyList());
48+
}
49+
50+
public String branch() {
51+
return findDefaultRepository()
52+
.map(ConfigurationServiceGitRepository::label)
53+
.orElse(null);
54+
}
55+
56+
@Override
57+
public ConfigurationServiceGitRepository getGitRepository(String name) {
58+
return findRepository(name).orElse(null);
59+
}
60+
61+
private Optional<ConfigurationServiceGitRepository> findDefaultRepository() {
62+
return findRepository(Constants.DEFAULT_TANZU_COMPONENT_NAME);
63+
}
64+
65+
private Optional<ConfigurationServiceGitRepository> findRepository(String name) {
66+
if (name == null || innerModel().properties() == null || innerModel().properties().settings() == null) {
67+
return Optional.empty();
68+
}
69+
ConfigurationServiceGitProperty property = innerModel().properties().settings().gitProperty();
70+
if (property != null && property.repositories() != null) {
71+
return property.repositories()
72+
.stream()
73+
.filter(repository -> name.equals(repository.name()))
74+
.findFirst();
75+
} else {
76+
return Optional.empty();
77+
}
78+
}
79+
80+
@Override
81+
public String id() {
82+
return innerModel().id();
83+
}
84+
85+
@Override
86+
public Mono<SpringConfigurationService> createResourceAsync() {
87+
return manager().serviceClient().getConfigurationServices()
88+
.createOrUpdateAsync(parent().resourceGroupName(), parent().name(), name(), innerModel())
89+
.map(inner -> {
90+
setInner(inner);
91+
return this;
92+
});
93+
}
94+
95+
@Override
96+
public Mono<SpringConfigurationService> updateResourceAsync() {
97+
return createResourceAsync();
98+
}
99+
100+
@Override
101+
public Mono<Void> deleteResourceAsync() {
102+
return manager().serviceClient().getConfigurationServices().deleteAsync(parent().resourceGroupName(), parent().name(), name());
103+
}
104+
105+
@Override
106+
protected Mono<ConfigurationServiceResourceInner> getInnerAsync() {
107+
return manager().serviceClient().getConfigurationServices().getAsync(parent().resourceGroupName(), parent().name(), name());
108+
}
109+
110+
public AppPlatformManager manager() {
111+
return parent().manager();
112+
}
113+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.azure.resourcemanager.appplatform.implementation;
5+
6+
import com.azure.resourcemanager.appplatform.AppPlatformManager;
7+
import com.azure.resourcemanager.appplatform.fluent.models.ConfigurationServiceResourceInner;
8+
import com.azure.resourcemanager.appplatform.models.ConfigurationServiceGitProperty;
9+
import com.azure.resourcemanager.appplatform.models.ConfigurationServiceProperties;
10+
import com.azure.resourcemanager.appplatform.models.ConfigurationServiceSettings;
11+
import com.azure.resourcemanager.appplatform.models.SpringConfigurationService;
12+
import com.azure.resourcemanager.appplatform.models.SpringConfigurationServices;
13+
import com.azure.resourcemanager.appplatform.models.SpringService;
14+
import com.azure.resourcemanager.resources.fluentcore.arm.collection.implementation.ExternalChildResourcesNonCachedImpl;
15+
16+
public class SpringConfigurationServicesImpl
17+
extends ExternalChildResourcesNonCachedImpl
18+
<SpringConfigurationServiceImpl, SpringConfigurationService, ConfigurationServiceResourceInner, SpringServiceImpl, SpringService>
19+
implements SpringConfigurationServices {
20+
21+
public SpringConfigurationServicesImpl(SpringServiceImpl parentImpl) {
22+
super(parentImpl, parentImpl.taskGroup(), "SpringConfigurationService");
23+
}
24+
25+
void prepareCreateOrUpdate(ConfigurationServiceGitProperty property) {
26+
prepareInlineDefine(
27+
new SpringConfigurationServiceImpl(
28+
Constants.DEFAULT_TANZU_COMPONENT_NAME,
29+
parent(),
30+
new ConfigurationServiceResourceInner()
31+
.withProperties(
32+
new ConfigurationServiceProperties()
33+
.withSettings(
34+
new ConfigurationServiceSettings()
35+
.withGitProperty(property))
36+
)
37+
)
38+
);
39+
}
40+
41+
@Override
42+
public AppPlatformManager manager() {
43+
return parent().manager();
44+
}
45+
46+
@Override
47+
public SpringServiceImpl parent() {
48+
return getParent();
49+
}
50+
}

0 commit comments

Comments
 (0)