Пример #1
0
        public static IForm <RunbookFormState> BuildRunbookForm()
        {
            return(EntityForms.CreateCustomForm <RunbookFormState>()
                   .Field(new FieldReflector <RunbookFormState>(nameof(RunbookFormState.AutomationAccountName))
                          .SetType(null)
                          .SetPrompt(EntityForms.PerLinePromptAttribute("Please select the automation account you want to use: {||}"))
                          .SetDefine((state, field) =>
            {
                foreach (var account in state.AvailableAutomationAccounts)
                {
                    field
                    .AddDescription(account.AutomationAccountName, account.AutomationAccountName)
                    .AddTerms(account.AutomationAccountName, account.AutomationAccountName);
                }

                return Task.FromResult(true);
            }))
                   .Field(new FieldReflector <RunbookFormState>(nameof(RunbookFormState.RunbookName))
                          .SetType(null)
                          .SetPrompt(EntityForms.PerLinePromptAttribute("Please select the runbook you want to run: {||}"))
                          .SetActive(state => !string.IsNullOrWhiteSpace(state.AutomationAccountName))
                          .SetDefine((state, field) =>
            {
                if (string.IsNullOrWhiteSpace(state.AutomationAccountName))
                {
                    return Task.FromResult(false);
                }

                foreach (var runbook in state.AvailableAutomationAccounts.Single(
                             a => a.AutomationAccountName == state.AutomationAccountName).Runbooks.Where(x => x.RunbookState.Equals("Published", StringComparison.InvariantCultureIgnoreCase)))
                {
                    field
                    .AddDescription(runbook.RunbookName, runbook.RunbookName)
                    .AddTerms(runbook.RunbookName, runbook.RunbookName);
                }

                return Task.FromResult(true);
            }))
                   .Confirm("Would you like to run runbook '{RunbookName}' of automation acccount '{AutomationAccountName}'?")
                   .Build());
        }
Пример #2
0
        public static IForm <VirtualMachineFormState> BuildVirtualMachinesForm()
        {
            return(EntityForms.CreateCustomForm <VirtualMachineFormState>()
                   .Field(nameof(VirtualMachineFormState.Operation), (state) => false)
                   .Field(new FieldReflector <VirtualMachineFormState>(nameof(VirtualMachineFormState.VirtualMachine))
                          .SetType(null)
                          .SetPrompt(EntityForms.PerLinePromptAttribute("Please select the virtual machine you want to {Operation}: {||}"))
                          .SetDefine((state, field) =>
            {
                foreach (var vm in state.AvailableVMs)
                {
                    field
                    .AddDescription(vm.Name, vm.ToString())
                    .AddTerms(vm.Name, vm.Name);
                }

                return Task.FromResult(true);
            }))
                   .Confirm("Would you like to {Operation} virtual machine '{VirtualMachine}'?", (state) => (Operations)Enum.Parse(typeof(Operations), state.Operation, true) == Operations.Start, null)
                   .Confirm("Would you like to {Operation} virtual machine '{VirtualMachine}'? Please note that your VM will still incur compute charges.", (state) => (Operations)Enum.Parse(typeof(Operations), state.Operation, true) == Operations.Shutdown, null)
                   .Confirm("Would you like to {Operation} virtual machine '{VirtualMachine}'? Your VM won't incur charges and all IP addresses will be released.", (state) => (Operations)Enum.Parse(typeof(Operations), state.Operation, true) == Operations.Stop, null)
                   .Build());
        }