// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // using System; using Microsoft.Azure.Management.ResourceManager; using Microsoft.Azure.Management.Sql; using Microsoft.SqlTools.ResourceProvider.Core; using Microsoft.SqlTools.ResourceProvider.Core.Authentication; namespace Microsoft.SqlTools.ResourceProvider.DefaultImpl { /// /// VS session used by . /// Includes all the clients that the resource management needs to get ther resources /// public class AzureResourceManagementSession : IAzureResourceManagementSession { /// /// Creates the new session for given clients /// /// Sql Management Client /// Resource Management Client /// Subscription Context public AzureResourceManagementSession(SqlManagementClient sqlManagementClient, ResourceManagementClient resourceManagementClient, IAzureUserAccountSubscriptionContext subscriptionContext) { SqlManagementClient = sqlManagementClient; ResourceManagementClient = resourceManagementClient; SubscriptionContext = subscriptionContext; } /// /// Disposes the session /// public void Dispose() { CloseSession(); } /// /// Closes the session by disposing the clients /// /// public bool CloseSession() { try { if (ResourceManagementClient != null) { ResourceManagementClient.Dispose(); } if (SqlManagementClient != null) { SqlManagementClient.Dispose(); } return true; } catch (Exception) { //TODO: trace return false; } } /// /// Subscription Context /// public IAzureUserAccountSubscriptionContext SubscriptionContext { get; set; } /// /// Resource Management Client /// public ResourceManagementClient ResourceManagementClient { get; set; } /// /// Sql Management Client /// public SqlManagementClient SqlManagementClient { get; set; } } }