Skip to content

Commit 36e6f96

Browse files
author
SDKAuto
committed
CodeGen from PR 12815 in Azure/azure-rest-api-specs
Merge 9e3ee0b43d245e86f3aa9a0fdad0abb38fac1a10 into fbd281068937dcf905cb4a87a1c1a40646819bb4
1 parent eac0402 commit 36e6f96

28 files changed

+5300
-16
lines changed

eng/versioning/version_client.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ com.azure.resourcemanager:azure-resourcemanager-loganalytics;1.0.0-beta.1;1.0.0-
200200
com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.0.0-beta.1;1.0.0-beta.2
201201
com.azure.resourcemanager:azure-resourcemanager-healthbot;1.0.0-beta.1;1.0.0-beta.1
202202
com.azure.resourcemanager:azure-resourcemanager-confluent;1.0.0-beta.1;1.0.0-beta.2
203+
com.azure.resourcemanager:azure-resourcemanager-authorization-generated;1.0.0-beta.1;1.0.0-beta.1
203204

204205
# Unreleased dependencies: Copy the entry from above, prepend "unreleased_" and remove the current
205206
# version. Unreleased dependencies are only valid for dependency versions.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Release History
2+
3+
## 1.0.0-beta.1 (2021-02-03)
4+
5+
- Azure Resource Manager Authorization client library for Java. This package contains Microsoft Azure SDK for Authorization Management SDK. Role based access control provides you a way to apply granular level policy administration down to individual resources or resource groups. These operations enable you to manage role assignments. A role assignment grants access to Azure Active Directory users. Package tag package-2020-04-01-preview-only. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Azure Resource Manager Authorization client library for Java
2+
3+
Azure Resource Manager Authorization client library for Java.
4+
5+
This package contains Microsoft Azure SDK for Authorization Management SDK. Role based access control provides you a way to apply granular level policy administration down to individual resources or resource groups. These operations enable you to manage role assignments. A role assignment grants access to Azure Active Directory users. Package tag package-2020-04-01-preview-only. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
6+
7+
## We'd love to hear your feedback
8+
9+
We're always working on improving our products and the way we communicate with our users. So we'd love to learn what's working and how we can do better.
10+
11+
If you haven't already, please take a few minutes to [complete this short survey][survey] we have put together.
12+
13+
Thank you in advance for your collaboration. We really appreciate your time!
14+
15+
## Documentation
16+
17+
Various documentation is available to help you get started
18+
19+
- [API reference documentation][docs]
20+
21+
## Getting started
22+
23+
### Prerequisites
24+
25+
- [Java Development Kit (JDK)][jdk] with version 8 or above
26+
- [Azure Subscription][azure_subscription]
27+
28+
### Adding the package to your product
29+
30+
[//]: # ({x-version-update-start;com.azure.resourcemanager:azure-resourcemanager-authorization-generated;current})
31+
```xml
32+
<dependency>
33+
<groupId>com.azure.resourcemanager</groupId>
34+
<artifactId>azure-resourcemanager-authorization-generated</artifactId>
35+
<version>1.0.0-beta.1</version>
36+
</dependency>
37+
```
38+
[//]: # ({x-version-update-end})
39+
40+
### Include the recommended packages
41+
42+
Azure Management Libraries require a `TokenCredential` implementation for authentication and an `HttpClient` implementation for HTTP client.
43+
44+
[Azure Identity][azure_identity] package and [Azure Core Netty HTTP][azure_core_http_netty] package provide the default implementation.
45+
46+
### Authentication
47+
48+
By default, Azure Active Directory token authentication depends on correct configure of following environment variables.
49+
50+
- `AZURE_CLIENT_ID` for Azure client ID.
51+
- `AZURE_TENANT_ID` for Azure tenant ID.
52+
- `AZURE_CLIENT_SECRET` or `AZURE_CLIENT_CERTIFICATE_PATH` for client secret or client certificate.
53+
54+
In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`.
55+
56+
With above configuration, `azure` client can be authenticated by following code:
57+
58+
```java
59+
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
60+
TokenCredential credential = new DefaultAzureCredentialBuilder()
61+
.authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
62+
.build();
63+
AuthorizationManager manager = AuthorizationManager
64+
.authenticate(credential, profile);
65+
```
66+
67+
The sample code assumes global Azure. Please change `AzureEnvironment.AZURE` variable if otherwise.
68+
69+
See [Authentication][authenticate] for more options.
70+
71+
## Key concepts
72+
73+
See [API design][design] for general introduction on design and key concepts on Azure Management Libraries.
74+
75+
## Examples
76+
77+
## Troubleshooting
78+
79+
## Next steps
80+
81+
## Contributing
82+
83+
For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-java/blob/master/CONTRIBUTING.md).
84+
85+
1. Fork it
86+
1. Create your feature branch (`git checkout -b my-new-feature`)
87+
1. Commit your changes (`git commit -am 'Add some feature'`)
88+
1. Push to the branch (`git push origin my-new-feature`)
89+
1. Create new Pull Request
90+
91+
<!-- LINKS -->
92+
[survey]: https://microsoft.qualtrics.com/jfe/form/SV_ehN0lIk2FKEBkwd?Q_CHL=DOCS
93+
[docs]: https://azure.github.io/azure-sdk-for-java/
94+
[jdk]: https://docs.microsoft.com/java/azure/jdk/
95+
[azure_subscription]: https://azure.microsoft.com/free/
96+
[azure_identity]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/identity/azure-identity
97+
[azure_core_http_netty]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/core/azure-core-http-netty
98+
[authenticate]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/AUTH.md
99+
[design]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/DESIGN.md
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2+
<modelVersion>4.0.0</modelVersion>
3+
<parent>
4+
<groupId>com.azure</groupId>
5+
<artifactId>azure-client-sdk-parent</artifactId>
6+
<version>1.7.0</version> <!-- {x-version-update;com.azure:azure-client-sdk-parent;current} -->
7+
<relativePath>../../parents/azure-client-sdk-parent</relativePath>
8+
</parent>
9+
10+
<groupId>com.azure.resourcemanager</groupId>
11+
<artifactId>azure-resourcemanager-authorization-generated</artifactId>
12+
<version>1.0.0-beta.1</version> <!-- {x-version-update;com.azure.resourcemanager:azure-resourcemanager-authorization-generated;current} -->
13+
<packaging>jar</packaging>
14+
15+
<name>Microsoft Azure SDK for Authorization Management</name>
16+
<description>This package contains Microsoft Azure SDK for Authorization Management SDK. Role based access control provides you a way to apply granular level policy administration down to individual resources or resource groups. These operations enable you to manage role assignments. A role assignment grants access to Azure Active Directory users. Package tag package-2020-04-01-preview-only. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt</description>
17+
<url>https://github.com/Azure/azure-sdk-for-java</url>
18+
19+
<licenses>
20+
<license>
21+
<name>The MIT License (MIT)</name>
22+
<url>http://opensource.org/licenses/MIT</url>
23+
<distribution>repo</distribution>
24+
</license>
25+
</licenses>
26+
27+
<scm>
28+
<url>https://github.com/Azure/azure-sdk-for-java</url>
29+
<connection>scm:git:git@github.com:Azure/azure-sdk-for-java.git</connection>
30+
<developerConnection>scm:git:git@github.com:Azure/azure-sdk-for-java.git</developerConnection>
31+
<tag>HEAD</tag>
32+
</scm>
33+
<developers>
34+
<developer>
35+
<id>microsoft</id>
36+
<name>Microsoft</name>
37+
</developer>
38+
</developers>
39+
<properties>
40+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
41+
<legal><![CDATA[[INFO] Any downloads listed may be third party software. Microsoft grants you no rights for third party software.]]></legal>
42+
</properties>
43+
<dependencies>
44+
<dependency>
45+
<groupId>com.azure</groupId>
46+
<artifactId>azure-core-management</artifactId>
47+
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-core-management;dependency} -->
48+
</dependency>
49+
</dependencies>
50+
<build>
51+
<plugins>
52+
<plugin>
53+
<groupId>org.jacoco</groupId>
54+
<artifactId>jacoco-maven-plugin</artifactId>
55+
<version>0.8.5</version> <!-- {x-version-update;org.jacoco:jacoco-maven-plugin;external_dependency} -->
56+
<configuration>
57+
<skip>true</skip>
58+
</configuration>
59+
</plugin>
60+
</plugins>
61+
</build>
62+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
// Code generated by Microsoft (R) AutoRest Code Generator.
4+
5+
package com.azure.resourcemanager.authorization.generated;
6+
7+
import com.azure.core.credential.TokenCredential;
8+
import com.azure.core.http.HttpClient;
9+
import com.azure.core.http.HttpPipeline;
10+
import com.azure.core.http.HttpPipelineBuilder;
11+
import com.azure.core.http.policy.AddDatePolicy;
12+
import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
13+
import com.azure.core.http.policy.HttpLogOptions;
14+
import com.azure.core.http.policy.HttpLoggingPolicy;
15+
import com.azure.core.http.policy.HttpPipelinePolicy;
16+
import com.azure.core.http.policy.HttpPolicyProviders;
17+
import com.azure.core.http.policy.RequestIdPolicy;
18+
import com.azure.core.http.policy.RetryPolicy;
19+
import com.azure.core.http.policy.UserAgentPolicy;
20+
import com.azure.core.management.profile.AzureProfile;
21+
import com.azure.core.util.Configuration;
22+
import com.azure.core.util.logging.ClientLogger;
23+
import com.azure.resourcemanager.authorization.generated.fluent.AuthorizationManagementClient;
24+
import com.azure.resourcemanager.authorization.generated.implementation.AuthorizationManagementClientBuilder;
25+
import com.azure.resourcemanager.authorization.generated.implementation.RoleAssignmentsImpl;
26+
import com.azure.resourcemanager.authorization.generated.models.RoleAssignments;
27+
import java.time.Duration;
28+
import java.time.temporal.ChronoUnit;
29+
import java.util.ArrayList;
30+
import java.util.List;
31+
import java.util.Objects;
32+
33+
/**
34+
* Entry point to AuthorizationManager. Role based access control provides you a way to apply granular level policy
35+
* administration down to individual resources or resource groups. These operations enable you to manage role
36+
* assignments. A role assignment grants access to Azure Active Directory users.
37+
*/
38+
public final class AuthorizationManager {
39+
private RoleAssignments roleAssignments;
40+
41+
private final AuthorizationManagementClient clientObject;
42+
43+
private AuthorizationManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
44+
Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null.");
45+
Objects.requireNonNull(profile, "'profile' cannot be null.");
46+
this.clientObject =
47+
new AuthorizationManagementClientBuilder()
48+
.pipeline(httpPipeline)
49+
.endpoint(profile.getEnvironment().getResourceManagerEndpoint())
50+
.subscriptionId(profile.getSubscriptionId())
51+
.defaultPollInterval(defaultPollInterval)
52+
.buildClient();
53+
}
54+
55+
/**
56+
* Creates an instance of Authorization service API entry point.
57+
*
58+
* @param credential the credential to use.
59+
* @param profile the Azure profile for client.
60+
* @return the Authorization service API instance.
61+
*/
62+
public static AuthorizationManager authenticate(TokenCredential credential, AzureProfile profile) {
63+
Objects.requireNonNull(credential, "'credential' cannot be null.");
64+
Objects.requireNonNull(profile, "'profile' cannot be null.");
65+
return configure().authenticate(credential, profile);
66+
}
67+
68+
/**
69+
* Gets a Configurable instance that can be used to create AuthorizationManager with optional configuration.
70+
*
71+
* @return the Configurable instance allowing configurations.
72+
*/
73+
public static Configurable configure() {
74+
return new AuthorizationManager.Configurable();
75+
}
76+
77+
/** The Configurable allowing configurations to be set. */
78+
public static final class Configurable {
79+
private final ClientLogger logger = new ClientLogger(Configurable.class);
80+
81+
private HttpClient httpClient;
82+
private HttpLogOptions httpLogOptions;
83+
private final List<HttpPipelinePolicy> policies = new ArrayList<>();
84+
private RetryPolicy retryPolicy;
85+
private Duration defaultPollInterval;
86+
87+
private Configurable() {
88+
}
89+
90+
/**
91+
* Sets the http client.
92+
*
93+
* @param httpClient the HTTP client.
94+
* @return the configurable object itself.
95+
*/
96+
public Configurable withHttpClient(HttpClient httpClient) {
97+
this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null.");
98+
return this;
99+
}
100+
101+
/**
102+
* Sets the logging options to the HTTP pipeline.
103+
*
104+
* @param httpLogOptions the HTTP log options.
105+
* @return the configurable object itself.
106+
*/
107+
public Configurable withLogOptions(HttpLogOptions httpLogOptions) {
108+
this.httpLogOptions = Objects.requireNonNull(httpLogOptions, "'httpLogOptions' cannot be null.");
109+
return this;
110+
}
111+
112+
/**
113+
* Adds the pipeline policy to the HTTP pipeline.
114+
*
115+
* @param policy the HTTP pipeline policy.
116+
* @return the configurable object itself.
117+
*/
118+
public Configurable withPolicy(HttpPipelinePolicy policy) {
119+
this.policies.add(Objects.requireNonNull(policy, "'policy' cannot be null."));
120+
return this;
121+
}
122+
123+
/**
124+
* Sets the retry policy to the HTTP pipeline.
125+
*
126+
* @param retryPolicy the HTTP pipeline retry policy.
127+
* @return the configurable object itself.
128+
*/
129+
public Configurable withRetryPolicy(RetryPolicy retryPolicy) {
130+
this.retryPolicy = Objects.requireNonNull(retryPolicy, "'retryPolicy' cannot be null.");
131+
return this;
132+
}
133+
134+
/**
135+
* Sets the default poll interval, used when service does not provide "Retry-After" header.
136+
*
137+
* @param defaultPollInterval the default poll interval.
138+
* @return the configurable object itself.
139+
*/
140+
public Configurable withDefaultPollInterval(Duration defaultPollInterval) {
141+
this.defaultPollInterval = Objects.requireNonNull(defaultPollInterval, "'retryPolicy' cannot be null.");
142+
if (this.defaultPollInterval.isNegative()) {
143+
throw logger.logExceptionAsError(new IllegalArgumentException("'httpPipeline' cannot be negative"));
144+
}
145+
return this;
146+
}
147+
148+
/**
149+
* Creates an instance of Authorization service API entry point.
150+
*
151+
* @param credential the credential to use.
152+
* @param profile the Azure profile for client.
153+
* @return the Authorization service API instance.
154+
*/
155+
public AuthorizationManager authenticate(TokenCredential credential, AzureProfile profile) {
156+
Objects.requireNonNull(credential, "'credential' cannot be null.");
157+
Objects.requireNonNull(profile, "'profile' cannot be null.");
158+
159+
StringBuilder userAgentBuilder = new StringBuilder();
160+
userAgentBuilder
161+
.append("azsdk-java")
162+
.append("-")
163+
.append("com.azure.resourcemanager.authorization.generated")
164+
.append("/")
165+
.append("1.0.0-beta.1");
166+
if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) {
167+
userAgentBuilder
168+
.append(" (")
169+
.append(Configuration.getGlobalConfiguration().get("java.version"))
170+
.append("; ")
171+
.append(Configuration.getGlobalConfiguration().get("os.name"))
172+
.append("; ")
173+
.append(Configuration.getGlobalConfiguration().get("os.version"))
174+
.append("; auto-generated)");
175+
} else {
176+
userAgentBuilder.append(" (auto-generated)");
177+
}
178+
179+
if (retryPolicy == null) {
180+
retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
181+
}
182+
List<HttpPipelinePolicy> policies = new ArrayList<>();
183+
policies.add(new UserAgentPolicy(userAgentBuilder.toString()));
184+
policies.add(new RequestIdPolicy());
185+
HttpPolicyProviders.addBeforeRetryPolicies(policies);
186+
policies.add(retryPolicy);
187+
policies.add(new AddDatePolicy());
188+
policies
189+
.add(
190+
new BearerTokenAuthenticationPolicy(
191+
credential, profile.getEnvironment().getManagementEndpoint() + "/.default"));
192+
HttpPolicyProviders.addAfterRetryPolicies(policies);
193+
policies.add(new HttpLoggingPolicy(httpLogOptions));
194+
HttpPipeline httpPipeline =
195+
new HttpPipelineBuilder()
196+
.httpClient(httpClient)
197+
.policies(policies.toArray(new HttpPipelinePolicy[0]))
198+
.build();
199+
return new AuthorizationManager(httpPipeline, profile, defaultPollInterval);
200+
}
201+
}
202+
203+
/** @return Resource collection API of RoleAssignments. */
204+
public RoleAssignments roleAssignments() {
205+
if (this.roleAssignments == null) {
206+
this.roleAssignments = new RoleAssignmentsImpl(clientObject.getRoleAssignments(), this);
207+
}
208+
return roleAssignments;
209+
}
210+
211+
/**
212+
* @return Wrapped service client AuthorizationManagementClient providing direct access to the underlying
213+
* auto-generated API implementation, based on Azure REST API.
214+
*/
215+
public AuthorizationManagementClient serviceClient() {
216+
return this.clientObject;
217+
}
218+
}

0 commit comments

Comments
 (0)