/// <summary>
 /// Create subscription service
 /// </summary>
 /// <param name="creds"></param>
 /// <param name="selector"></param>
 /// <param name="logger"></param>
 public AzureSubscription(ICredentialProvider creds,
                          ISubscriptionInfoSelector selector, ILogger logger)
 {
     _selector = selector ?? throw new ArgumentNullException(nameof(selector));
     _creds    = creds ?? throw new ArgumentNullException(nameof(creds));
     _logger   = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 /// <summary>
 /// Create virtual machine factory
 /// </summary>
 /// <param name="creds"></param>
 /// <param name="selector"></param>
 /// <param name="shell"></param>
 /// <param name="logger"></param>
 public VirtualMachineFactory(ICredentialProvider creds,
                              ISubscriptionInfoSelector selector, IShellFactory shell,
                              ILogger logger) : base(creds, logger)
 {
     _shell = shell ??
              throw new ArgumentNullException(nameof(shell));
     _selector = selector ??
                 throw new ArgumentNullException(nameof(selector));
 }
 /// <summary>
 /// Create virtual machine factory
 /// </summary>
 /// <param name="creds"></param>
 /// <param name="selector"></param>
 /// <param name="logger"></param>
 public VirtualMachineFactory(ICredentialProvider creds,
                              ISubscriptionInfoSelector selector, ILogger logger) :
     this(creds, selector, null, logger)
 {
 }