Skip to content

Commit

Permalink
.NET SDK Resource Provider:'Blueprint'
Browse files Browse the repository at this point in the history
REST Spec PR 'Azure/azure-rest-api-specs#5470'
REST Spec PR Author 'filizt'
REST Spec PR Last commit
  • Loading branch information
adxsdknet committed Mar 25, 2019
1 parent fa0d9ef commit e62a259
Show file tree
Hide file tree
Showing 6 changed files with 294 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ namespace Microsoft.Azure.Management.Blueprint
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

/// <summary>
/// Blueprint Client
Expand Down Expand Up @@ -383,5 +385,164 @@ private void Initialize()
DeserializationSettings.Converters.Add(new TransformationJsonConverter());
DeserializationSettings.Converters.Add(new CloudErrorJsonConverter());
}
/// <summary>
/// Get Blueprints service SPN objectId
/// </summary>
/// <param name='customHeaders'>
/// Headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
/// <exception cref="CloudException">
/// Thrown when the operation returned an invalid status code
/// </exception>
/// <exception cref="SerializationException">
/// Thrown when unable to deserialize the response
/// </exception>
/// <return>
/// A response object containing the response body and response headers.
/// </return>
public async Task<AzureOperationResponse<WhoIsBlueprintContract>> WhoIsBlueprintWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken))
{
// Tracing
bool _shouldTrace = ServiceClientTracing.IsEnabled;
string _invocationId = null;
if (_shouldTrace)
{
_invocationId = ServiceClientTracing.NextInvocationId.ToString();
Dictionary<string, object> tracingParameters = new Dictionary<string, object>();
tracingParameters.Add("cancellationToken", cancellationToken);
ServiceClientTracing.Enter(_invocationId, this, "WhoIsBlueprint", tracingParameters);
}
// Construct URL
var _baseUrl = BaseUri.AbsoluteUri;
var _url = new System.Uri(new System.Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "{scope}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}").ToString();
List<string> _queryParameters = new List<string>();
if (_queryParameters.Count > 0)
{
_url += (_url.Contains("?") ? "&" : "?") + string.Join("&", _queryParameters);
}
// Create HTTP transport objects
var _httpRequest = new HttpRequestMessage();
HttpResponseMessage _httpResponse = null;
_httpRequest.Method = new HttpMethod("POST");
_httpRequest.RequestUri = new System.Uri(_url);
// Set Headers
if (GenerateClientRequestId != null && GenerateClientRequestId.Value)
{
_httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString());
}
if (AcceptLanguage != null)
{
if (_httpRequest.Headers.Contains("accept-language"))
{
_httpRequest.Headers.Remove("accept-language");
}
_httpRequest.Headers.TryAddWithoutValidation("accept-language", AcceptLanguage);
}


if (customHeaders != null)
{
foreach(var _header in customHeaders)
{
if (_httpRequest.Headers.Contains(_header.Key))
{
_httpRequest.Headers.Remove(_header.Key);
}
_httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value);
}
}

// Serialize Request
string _requestContent = null;
// Set Credentials
if (Credentials != null)
{
cancellationToken.ThrowIfCancellationRequested();
await Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
}
// Send Request
if (_shouldTrace)
{
ServiceClientTracing.SendRequest(_invocationId, _httpRequest);
}
cancellationToken.ThrowIfCancellationRequested();
_httpResponse = await HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
if (_shouldTrace)
{
ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse);
}
HttpStatusCode _statusCode = _httpResponse.StatusCode;
cancellationToken.ThrowIfCancellationRequested();
string _responseContent = null;
if ((int)_statusCode != 200)
{
var ex = new CloudException(string.Format("Operation returned an invalid status code '{0}'", _statusCode));
try
{
_responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);
CloudError _errorBody = SafeJsonConvert.DeserializeObject<CloudError>(_responseContent, DeserializationSettings);
if (_errorBody != null)
{
ex = new CloudException(_errorBody.Message);
ex.Body = _errorBody;
}
}
catch (JsonException)
{
// Ignore the exception
}
ex.Request = new HttpRequestMessageWrapper(_httpRequest, _requestContent);
ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent);
if (_httpResponse.Headers.Contains("x-ms-request-id"))
{
ex.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
}
if (_shouldTrace)
{
ServiceClientTracing.Error(_invocationId, ex);
}
_httpRequest.Dispose();
if (_httpResponse != null)
{
_httpResponse.Dispose();
}
throw ex;
}
// Create Result
var _result = new AzureOperationResponse<WhoIsBlueprintContract>();
_result.Request = _httpRequest;
_result.Response = _httpResponse;
if (_httpResponse.Headers.Contains("x-ms-request-id"))
{
_result.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
}
// Deserialize Response
if ((int)_statusCode == 200)
{
_responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);
try
{
_result.Body = SafeJsonConvert.DeserializeObject<WhoIsBlueprintContract>(_responseContent, DeserializationSettings);
}
catch (JsonException ex)
{
_httpRequest.Dispose();
if (_httpResponse != null)
{
_httpResponse.Dispose();
}
throw new SerializationException("Unable to deserialize the response.", _responseContent, ex);
}
}
if (_shouldTrace)
{
ServiceClientTracing.Exit(_invocationId, _result);
}
return _result;
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// <auto-generated>
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for
// license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace Microsoft.Azure.Management.Blueprint
{
using Microsoft.Rest;
using Microsoft.Rest.Azure;
using Models;
using System.Threading;
using System.Threading.Tasks;

/// <summary>
/// Extension methods for BlueprintManagementClient.
/// </summary>
public static partial class BlueprintManagementClientExtensions
{
/// <summary>
/// Get Blueprints service SPN objectId
/// </summary>
/// <param name='operations'>
/// The operations group for this extension method.
/// </param>
public static WhoIsBlueprintContract WhoIsBlueprint(this IBlueprintManagementClient operations)
{
return operations.WhoIsBlueprintAsync().GetAwaiter().GetResult();
}

/// <summary>
/// Get Blueprints service SPN objectId
/// </summary>
/// <param name='operations'>
/// The operations group for this extension method.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
public static async Task<WhoIsBlueprintContract> WhoIsBlueprintAsync(this IBlueprintManagementClient operations, CancellationToken cancellationToken = default(CancellationToken))
{
using (var _result = await operations.WhoIsBlueprintWithHttpMessagesAsync(null, cancellationToken).ConfigureAwait(false))
{
return _result.Body;
}
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ namespace Microsoft.Azure.Management.Blueprint
using Microsoft.Rest.Azure;
using Models;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

/// <summary>
/// Blueprint Client
Expand Down Expand Up @@ -94,5 +98,16 @@ public partial interface IBlueprintManagementClient : System.IDisposable
/// </summary>
IAssignmentOperations AssignmentOperations { get; }

/// <summary>
/// Get Blueprints service SPN objectId
/// </summary>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<AzureOperationResponse<WhoIsBlueprintContract>> WhoIsBlueprintWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
namespace Microsoft.Azure.Management.Blueprint.Models
{
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

/// <summary>
Expand All @@ -31,9 +33,12 @@ public AssignmentLockSettings()
/// </summary>
/// <param name="mode">Lock mode. Possible values include: 'None',
/// 'AllResourcesReadOnly', 'AllResourcesDoNotDelete'</param>
public AssignmentLockSettings(string mode = default(string))
/// <param name="excludedPrincipals">List of AAD principals excluded
/// from blueprint locks. Up to 5 principals permitted.</param>
public AssignmentLockSettings(string mode = default(string), IList<string> excludedPrincipals = default(IList<string>))
{
Mode = mode;
ExcludedPrincipals = excludedPrincipals;
CustomInit();
}

Expand All @@ -49,5 +54,12 @@ public AssignmentLockSettings()
[JsonProperty(PropertyName = "mode")]
public string Mode { get; set; }

/// <summary>
/// Gets or sets list of AAD principals excluded from blueprint locks.
/// Up to 5 principals permitted.
/// </summary>
[JsonProperty(PropertyName = "excludedPrincipals")]
public IList<string> ExcludedPrincipals { get; set; }

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// <auto-generated>
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for
// license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace Microsoft.Azure.Management.Blueprint.Models
{
using Newtonsoft.Json;
using System.Linq;

/// <summary>
/// AAD object Id of the Azure Blueprints service principal in the tenant.
/// </summary>
public partial class WhoIsBlueprintContract
{
/// <summary>
/// Initializes a new instance of the WhoIsBlueprintContract class.
/// </summary>
public WhoIsBlueprintContract()
{
CustomInit();
}

/// <summary>
/// Initializes a new instance of the WhoIsBlueprintContract class.
/// </summary>
/// <param name="objectId">Identifier.</param>
public WhoIsBlueprintContract(string objectId = default(string))
{
ObjectId = objectId;
CustomInit();
}

/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();

/// <summary>
/// Gets or sets identifier.
/// </summary>
[JsonProperty(PropertyName = "objectId")]
public string ObjectId { get; set; }

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,9 @@ public static IEnumerable<Tuple<string, string, string>> ApiInfo_BlueprintManage
new Tuple<string, string, string>("Blueprint", "Blueprints", "2018-11-01-preview"),
new Tuple<string, string, string>("Blueprint", "PublishedArtifacts", "2018-11-01-preview"),
new Tuple<string, string, string>("Blueprint", "PublishedBlueprints", "2018-11-01-preview"),
new Tuple<string, string, string>("Blueprint", "WhoIsBlueprint", "2018-11-01-preview"),
}.AsEnumerable();
}
}
// BEGIN: Code Generation Metadata Section
public static readonly String AutoRestVersion = "latest";
public static readonly String AutoRestBootStrapperVersion = "autorest@2.0.4283";
public static readonly String AutoRestCmdExecuted = "cmd.exe /c autorest.cmd https://github.com/Azure/azure-rest-api-specs/blob/master/specification/blueprint/resource-manager/readme.md --csharp --version=latest --reflect-api-versions --csharp-sdks-folder=E:\\Repos\\azure-sdk-for-net\\src\\SDKs";
public static readonly String GithubForkName = "Azure";
public static readonly String GithubBranchName = "master";
public static readonly String GithubCommidId = "8aa15b5d44d5487f810a4b992d2e7569abd84341";
public static readonly String CodeGenerationErrors = "";
public static readonly String GithubRepoName = "azure-rest-api-specs";
// END: Code Generation Metadata Section
}
}

0 comments on commit e62a259

Please sign in to comment.