//
// 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;
}
}
}