Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
pr: 1992
changes:
- section: "Other Changes"
description: "Refactored `Azure.Mcp.Tools.Grafana` to use constructor dependency injection instead of resolving services via `context.GetService<T>()` in `ExecuteAsync`."
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ namespace Azure.Mcp.Tools.Grafana.Commands.Workspace;
/// <summary>
Comment thread
conniey marked this conversation as resolved.
/// Lists Azure Managed Grafana workspaces in the specified subscription.
/// </summary>
public sealed class WorkspaceListCommand(ILogger<WorkspaceListCommand> logger) : SubscriptionCommand<WorkspaceListOptions>()
public sealed class WorkspaceListCommand(IGrafanaService grafanaService, ILogger<WorkspaceListCommand> logger) : SubscriptionCommand<WorkspaceListOptions>()
{
private const string CommandTitle = "List Grafana Workspaces";
private readonly IGrafanaService _grafanaService = grafanaService;
private readonly ILogger<WorkspaceListCommand> _logger = logger;

public override string Id => "7a47b562-f219-47de-80f6-12e19367b61d";
Expand Down Expand Up @@ -52,8 +53,7 @@ public override async Task<CommandResponse> ExecuteAsync(CommandContext context,

try
{
var grafanaService = context.GetService<IGrafanaService>() ?? throw new InvalidOperationException("Grafana service is not available.");
var workspaces = await grafanaService.ListWorkspacesAsync(
var workspaces = await _grafanaService.ListWorkspacesAsync(
options.Subscription!,
options.Tenant,
options.RetryPolicy,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public WorkspaceListCommandTests()
public void Constructor_Should_Initialize_Command_Properly()
{
// Arrange & Act
var command = new WorkspaceListCommand(_logger);
var command = new WorkspaceListCommand(_grafana, _logger);

// Assert
Assert.NotNull(command);
Expand Down Expand Up @@ -87,7 +87,7 @@ public async Task ExecuteAsync_ReturnsWorkspaces_WhenWorkspacesExist()
_grafana.ListWorkspacesAsync("sub123", Arg.Any<string>(), Arg.Any<RetryPolicyOptions>(), Arg.Any<CancellationToken>())
.Returns(expectedWorkspaces);

var command = new WorkspaceListCommand(_logger);
var command = new WorkspaceListCommand(_grafana, _logger);
var args = command.GetCommand().Parse(["--subscription", "sub123"]);
var context = new CommandContext(_serviceProvider);

Expand All @@ -111,7 +111,7 @@ public async Task ExecuteAsync_ReturnsEmpty_WhenNoWorkspacesExist()
_grafana.ListWorkspacesAsync("sub123", null, Arg.Any<RetryPolicyOptions>(), Arg.Any<CancellationToken>())
.Returns(new ResourceQueryResults<GrafanaWorkspace>([], false));

var command = new WorkspaceListCommand(_logger);
var command = new WorkspaceListCommand(_grafana, _logger);
var args = command.GetCommand().Parse(["--subscription", "sub123"]);
var context = new CommandContext(_serviceProvider);

Expand Down Expand Up @@ -154,7 +154,7 @@ public async Task ExecuteAsync_WithTenant_PassesTenantToService()
_grafana.ListWorkspacesAsync("sub123", "tenant456", Arg.Any<RetryPolicyOptions>(), Arg.Any<CancellationToken>())
.Returns(expectedWorkspaces);

var command = new WorkspaceListCommand(_logger);
var command = new WorkspaceListCommand(_grafana, _logger);
var args = command.GetCommand().Parse(["--subscription", "sub123", "--tenant", "tenant456"]);
var context = new CommandContext(_serviceProvider);

Expand All @@ -176,7 +176,7 @@ public async Task ExecuteAsync_HandlesException_AndSetsException()
_grafana.ListWorkspacesAsync(subscriptionId, null, Arg.Any<RetryPolicyOptions>(), Arg.Any<CancellationToken>())
.ThrowsAsync(new Exception("Test error"));

var command = new WorkspaceListCommand(_logger);
var command = new WorkspaceListCommand(_grafana, _logger);
var args = command.GetCommand().Parse(["--subscription", subscriptionId]);
var context = new CommandContext(_serviceProvider);

Expand Down
Loading