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);
     }
 }
Beispiel #4
0
 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());
        }
Beispiel #6
0
 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);
 }
Beispiel #9
0
 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);
        }