Limpiar una cuenta de Azure Media Services desde .NET

Cuando estamos desarrollando, un método que no podemos olvidar es uno que elimine todos los assets, locators, jobs y políticas de acceso que se hayan acumulado después de realizar numerosas pruebas. Lo cierto es que es muy sencillo, ya que solamente debemos recorrer cada uno de los listados y eliminar el contenido de ellos a través del método Delete de cada uno de los objetos (también disponemos de DeleteAsync):

using Microsoft.WindowsAzure.MediaServices.Client;
using System;
using System.Configuration;

namespace CleanAMSAccount
{
    class Program
    {
        static void Main(string[] args)
        {
            var context = new CloudMediaContext(ConfigurationManager.AppSettings["AccountName"], ConfigurationManager.AppSettings["AccountKey"]);

            Console.WriteLine("Removing programs");

            foreach (var program in context.Programs)
            {
                if (program.State != ProgramState.Stopped)
                    program.Stop();
                program.Delete();
            }

            Console.WriteLine("Removing channels");

            foreach (var channel in context.Channels)
            {
                if (channel.State != ChannelState.Stopped)
                    channel.Stop();
                channel.Delete();
            }

            Console.WriteLine("Removing streaming units");

            foreach (var endpoint in context.StreamingEndpoints)
            {
                if (endpoint.State != StreamingEndpointState.Scaling && endpoint.ScaleUnits > 0)
                    endpoint.Scale(0);
            }

            Console.WriteLine("Removing encoding units");

            foreach (var endpoint in context.EncodingReservedUnits)
            {
                endpoint.CurrentReservedUnits = 0;
                endpoint.Update();
            }

            Console.WriteLine("Removing channels");

            foreach (var channel in context.Channels)
            {
                channel.Stop();
                channel.Delete();
            }


            Console.WriteLine("Cleaning jobs");

            foreach (var job in context.Jobs)
            {
                job.Delete();
            }

            Console.WriteLine("Cleaning locators");

            foreach (var locator in context.Locators)
            {
                locator.Delete();
            }

            Console.WriteLine("Cleaning access policies");

            foreach (var accessPolicy in context.AccessPolicies)
            {
                accessPolicy.Delete();
            }

            Console.WriteLine("Cleaning assets");

            foreach (var asset in context.Assets)
            {
                asset.Delete();
            }

            Console.WriteLine("Done!");
            Console.ReadLine();
        }
    }
}

Espero que sea de utilidad.

¡Saludos!