public virtual async Task <Status> BootHost(EnterpriseArchitectClient entArch, string parentEntApiKey)
        {
            if (!State.NewEnterpriseAPIKey.IsNullOrEmpty() && !State.EnvironmentLookup.IsNullOrEmpty())
            {
                var response = await entArch.EnsureHost(new EnsureHostRequest()
                {
                    EnviromentLookup = State.EnvironmentLookup
                }, State.NewEnterpriseAPIKey, State.Host, State.EnvironmentLookup, parentEntApiKey);

                return(response.Status);
            }
            else
            {
                return(Status.GeneralError.Clone("Boot not properly configured."));
            }
        }
        public virtual async Task <NapkinIDESetupState> Finalize()
        {
            logger.LogInformation("Finalizing Napkin IDE Setup");

            await HasDevOpsOAuth();

            if (state.HasDevOpsOAuth)
            {
                var authAppEnsured = await entArch.EnsureHostAuthApp(state.NewEnterpriseAPIKey, state.Host, state.EnvironmentLookup);

                if (authAppEnsured.Status)
                {
                    var hostEnsured = await entArch.EnsureHost(new EnsureHostRequest()
                    {
                        EnviromentLookup = state.EnvironmentLookup
                    }, state.NewEnterpriseAPIKey, state.Host, state.EnvironmentLookup, details.EnterpriseAPIKey);

                    if (hostEnsured.Status)
                    {
                        var sslEnsured = await entArch.EnsureHostsSSL(new EnsureHostsSSLRequest()
                        {
                            Hosts = new List <string>()
                            {
                                state.Host
                            }
                        }, state.NewEnterpriseAPIKey, state.EnvironmentLookup, details.EnterpriseAPIKey);

                        if (sslEnsured.Status)
                        {
                            var runtimeEnsured = await entArch.EnsureLCURuntime(state.NewEnterpriseAPIKey, state.EnvironmentLookup);

                            if (runtimeEnsured.Status)
                            {
                                state.Step = NapkinIDESetupStepTypes.Complete;
                            }
                        }
                    }
                }
            }

            return(state);
        }