public static void DisconnectCloud(this MaintenanceModeContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = BuildResolver(context);
            var runner   = new DisconnectCloud.DisconnectCloud(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Execute(new DisconnectCloudSettings());
        }
        public static IEnumerable <CloudInfo> ReadRegisteredClouds(this MaintenanceModeContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = BuildResolver(context);
            var runner   = new ReadRegisteredClouds.ReadRegisteredClouds(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            return(runner.Execute(new ReadRegisteredCloudsSettings()));
        }
        /// <summary>
        /// Registers the cloud.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="cloudAlias">The cloud alias.</param>
        /// <param name="cloudUrl">The cloud URL.</param>
        /// <exception cref="ArgumentNullException">Thrown when the context is null</exception>
        public static void RegisterCloud(this MaintenanceModeContext context, string cloudAlias, string cloudUrl)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = BuildResolver(context);
            var runner   = new RegisterCloud.RegisterCloud(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Execute(new RegisterCloudSettings(cloudUrl, cloudAlias));
        }
        public static NodeState GetNodeState(this MaintenanceModeContext context, string hostName)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var resolver = BuildResolver(context);
            var runner   = new GetNodeState.GetNodeState(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            return(runner.Execute(new GetNodeStateSettings {
                HostName = hostName
            }));
        }
        public static void SetNodeState(this MaintenanceModeContext context, SetNodeStateSettings settings)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var resolver = BuildResolver(context);
            var runner   = new SetNodeState.SetNodeState(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools, resolver);

            runner.Execute(settings);
        }
        private static IMaintenanceModeToolResolver BuildResolver(MaintenanceModeContext context)
        {
            var resolver = new MaintenanceModeToolResolver(context.FileSystem, context.Environment, context.Tools);

            return(resolver);
        }