autogen/dotnet/samples/dev-team/DevTeam.Backend/Agents/Sandbox.cs

102 lines
3.6 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Sandbox.cs
// namespace DevTeam.Backend;
// public sealed class Sandbox : AgentBase
// {
// private const string ReminderName = "SandboxRunReminder";
// private readonly IManageAzure _azService;
// // private readonly IPersistentState<SandboxMetadata> _state;
// public Sandbox(IManageAzure azService)
// {
// _azService = azService;
// _state = state;
// }
// public override async Task HandleEvent(Event item)
// {
// ArgumentNullException.ThrowIfNull(item);
// switch (item.Type)
// {
// case nameof(EventTypes.SandboxRunCreated):
// {
// var context = item.ToGithubContext();
// await ScheduleCommitSandboxRun(context.Org, context.Repo, context.ParentNumber!.Value, context.IssueNumber);
// break;
// }
// default:
// break;
// }
// }
// public async Task ScheduleCommitSandboxRun(string org, string repo, long parentIssueNumber, long issueNumber)
// {
// await StoreState(org, repo, parentIssueNumber, issueNumber);
// _reminder = await _reminderRegistry.RegisterOrUpdateReminder(
// callingGrainId: this.GetGrainId(),
// reminderName: ReminderName,
// dueTime: TimeSpan.Zero,
// period: TimeSpan.FromMinutes(1));
// }
// async Task IRemindable.ReceiveReminder(string reminderName, TickStatus status)
// {
// if (!_state.State.IsCompleted)
// {
// var sandboxId = $"sk-sandbox-{_state.State.Org}-{_state.State.Repo}-{_state.State.ParentIssueNumber}-{_state.State.IssueNumber}".ToUpperInvariant();
// if (await _azService.IsSandboxCompleted(sandboxId))
// {
// await _azService.DeleteSandbox(sandboxId);
// await PublishEventAsync(new Event
// {
// Namespace = this.GetPrimaryKeyString(),
// Type = nameof(GithubFlowEventType.SandboxRunFinished),
// Data = new Dictionary<string, string>
// {
// ["org"] = _state.State.Org,
// ["repo"] = _state.State.Repo,
// ["issueNumber"] = _state.State.IssueNumber.ToString(),
// ["parentNumber"] = _state.State.ParentIssueNumber.ToString()
// }
// });
// await Cleanup();
// }
// }
// else
// {
// await Cleanup();
// }
// }
// private async Task StoreState(string org, string repo, long parentIssueNumber, long issueNumber)
// {
// _state.State.Org = org;
// _state.State.Repo = repo;
// _state.State.ParentIssueNumber = parentIssueNumber;
// _state.State.IssueNumber = issueNumber;
// _state.State.IsCompleted = false;
// await _state.WriteStateAsync();
// }
// private async Task Cleanup()
// {
// _state.State.IsCompleted = true;
// await _reminderRegistry.UnregisterReminder(
// this.GetGrainId(), _reminder);
// await _state.WriteStateAsync();
// }
// }
// public class SandboxMetadata
// {
// public string Org { get; set; } = default!;
// public string Repo { get; set; } = default!;
// public long ParentIssueNumber { get; set; }
// public long IssueNumber { get; set; }
// public bool IsCompleted { get; set; }
// }