private static void WriteImpact(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage, StringBuilder issueBuilder) { issueBuilder.AppendLine("### Impact"); issueBuilder.AppendLine(); issueBuilder.AppendLine(newNoticeV1MessageQueueMessage.Impact.Description); issueBuilder.AppendLine(); }
private static void WriteIntro(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage, StringBuilder issueBuilder) { var dueDate = newNoticeV1MessageQueueMessage.GetDueDate(); issueBuilder.AppendLine(newNoticeV1MessageQueueMessage.Title); issueBuilder.AppendLine(); issueBuilder.AppendLine($"**Deadline:** {dueDate:MMM dd, yyyy}"); issueBuilder.AppendLine("**Impacted Services:**"); foreach (var impactedService in newNoticeV1MessageQueueMessage.Impact.Services) { issueBuilder.AppendLine($"- Azure {impactedService.Humanize(LetterCasing.Title)}"); } issueBuilder.AppendLine(); if (newNoticeV1MessageQueueMessage.Notice.Links?.Any() == true) { issueBuilder.AppendLine("**More information:**"); foreach (var link in newNoticeV1MessageQueueMessage.Notice.Links) { issueBuilder.AppendLine($"- {link}"); } } issueBuilder.AppendLine(); }
private static void WriteMoreInformation(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage, StringBuilder issueBuilder) { if (string.IsNullOrWhiteSpace(newNoticeV1MessageQueueMessage.AdditionalInformation) == false) { issueBuilder.AppendLine("### More information"); issueBuilder.AppendLine(); issueBuilder.Append(newNoticeV1MessageQueueMessage.AdditionalInformation); } }
private static void HasSameTimeline(NewAzureDeprecationV1Message deprecationInfo, DeprecationInfo publishedNotice) { Assert.NotNull(publishedNotice.Timeline); Assert.Equal(deprecationInfo.Timeline.Count, publishedNotice.Timeline.Count); foreach (var timelineEntry in publishedNotice.Timeline) { var matchCount = deprecationInfo.Timeline.Count(entry => entry.Date == timelineEntry.Date && entry.Description.Equals(timelineEntry.Description, StringComparison.InvariantCultureIgnoreCase) && entry.Phase.Equals(timelineEntry.Phase, StringComparison.InvariantCultureIgnoreCase)); Assert.Equal(1, matchCount); } }
public static string GenerateNewDeprecationNotice(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage) { var issueBuilder = new StringBuilder(); WriteIntro(newNoticeV1MessageQueueMessage, issueBuilder); WriteNotice(newNoticeV1MessageQueueMessage, issueBuilder); WriteTimeline(newNoticeV1MessageQueueMessage.Timeline, issueBuilder); WriteImpact(newNoticeV1MessageQueueMessage, issueBuilder); WriteRequiredAction(newNoticeV1MessageQueueMessage, issueBuilder); WriteContact(newNoticeV1MessageQueueMessage, issueBuilder); WriteMoreInformation(newNoticeV1MessageQueueMessage, issueBuilder); return(issueBuilder.ToString()); }
private static void HasSameImpact(NewAzureDeprecationV1Message deprecationInfo, DeprecationInfo publishedNotice) { Assert.NotNull(publishedNotice.Impact); Assert.NotNull(publishedNotice.Impact.Services); Assert.Equal(deprecationInfo.Impact.Area, publishedNotice.Impact.Area); Assert.Equal(deprecationInfo.Impact.Cloud, publishedNotice.Impact.Cloud); Assert.Equal(deprecationInfo.Impact.Description, publishedNotice.Impact.Description); Assert.Equal(deprecationInfo.Impact.Type, publishedNotice.Impact.Type); Assert.Equal(deprecationInfo.Impact.Services.Count, publishedNotice.Impact.Services.Count); foreach (var impactedService in publishedNotice.Impact.Services) { Assert.Contains(impactedService, deprecationInfo.Impact.Services); } }
private static void WriteContact(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage, StringBuilder issueBuilder) { issueBuilder.AppendLine("### Contact"); issueBuilder.AppendLine(); if (newNoticeV1MessageQueueMessage.Contact.Count == 1) { var contactInformation = GetContactInformation(newNoticeV1MessageQueueMessage.Contact.First()); issueBuilder.AppendLine($"{contactInformation}"); } else { issueBuilder.AppendLine("You can get in touch through the following options:"); foreach (var contactEntry in newNoticeV1MessageQueueMessage.Contact) { var contactInformation = GetContactInformation(contactEntry); issueBuilder.AppendLine($"- {contactInformation}"); } } issueBuilder.AppendLine(); }
private static void WriteRequiredAction(NewAzureDeprecationV1Message newNoticeV1MessageQueueMessage, StringBuilder issueBuilder) { issueBuilder.AppendLine("### Required Action"); issueBuilder.AppendLine(); issueBuilder.AppendLine(newNoticeV1MessageQueueMessage.RequiredAction.Description); }
private static void HasSameNotice(DeprecationInfo publishedNotice, NewAzureDeprecationV1Message deprecationInfo) { Assert.NotNull(publishedNotice.Notice); Assert.Equal(deprecationInfo.Notice.Description, publishedNotice.Notice.Description); Assert.Equal(deprecationInfo.Notice.Links, publishedNotice.Notice.Links); }
public static NewAzureDeprecationV1Message GenerateSample(bool useAdvancedTimeline = false) { var newAzureDeprecationV1Message = new NewAzureDeprecationV1Message { Title = "Azure Cognitive Services Translator v2 is deprecated by 24 May 2021.", Notice = new DraftNotice { OfficialReport = @"> In May 2018, we announced the general availability of version 3 of Translator and will retire version 2 of Translator on 24 May 2021. > > Key benefits of version 3 of Translator include: > - More functionalities including bilingual dictionary, transliterate and translate to multiple target languages in a single request. > - Provides a [layered security model](https://docs.microsoft.com/en-us/azure/cognitive-services/Welcome#securing-resources) as part of Azure Cognitive Services. > - Customized translations through [Custom Translator](https://portal.customtranslator.azure.ai/).", Links = { "https://azure.microsoft.com/en-gb/updates/version-2-of-translator-is-retiring-on-24-may-2021/", "https://docs.microsoft.com/en-us/azure/cognitive-services/translator/migrate-to-v3" } }, Impact = new Impact { Description = "Service will no longer be available.", Area = ImpactArea.ServiceRuntime, Cloud = AzureCloud.Public, Type = ImpactType.MigrationRequired, Services = new List <AzureService> { AzureService.CognitiveServices } }, RequiredAction = new RequiredAction { OfficialReport = @"> - If you are using version 2 of Translator, please [migrate your applications to version 3](https://docs.microsoft.com/en-us/azure/cognitive-services/translator/migrate-to-v3) before 24 May 2021 to avoid service disruption. > - Your current Translator subscription and key will work with version 3, there is no need to create a new Translator subscription in the Azure portal." }, Contact = new List <ContactEntry> { new ContactEntry { Type = ContactType.Email, Data = "*****@*****.**" } }, Timeline = new List <InputTimeLineEntry>(), AdditionalInformation = "https://docs.microsoft.com/en-us/azure/cognitive-services/translator/migrate-to-v3" }; if (useAdvancedTimeline) { newAzureDeprecationV1Message.Timeline.Add(new InputTimeLineEntry { Date = new DateTimeOffset(2021, 5, 24, 0, 0, 0, TimeSpan.Zero), Description = "Feature will no longer work", IsDueDate = true }); newAzureDeprecationV1Message.Timeline.Add(new InputTimeLineEntry { Date = new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero), Description = "No longer able to create new resources with type V1", Phase = "Creation Disabled" }); } else { newAzureDeprecationV1Message.Timeline.Add(new InputTimeLineEntry { Date = new DateTimeOffset(2021, 5, 24, 0, 0, 0, TimeSpan.Zero), Description = "Feature will no longer work" }); } return(newAzureDeprecationV1Message); }