mirror of https://github.com/microsoft/autogen.git
102 lines
3.6 KiB
C#
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; }
|
|
// }
|