Как активировать запланированное удаление кластера Dataproc с помощью Python API?

Обычно я использую это решение, когда хочу проверить что-то на сервере. Я знаю, что вы можете положиться на модель валидации, которую использует MVC, но когда я делаю проверки, я пытаюсь использовать отдельный проект, если мне нужно сделать для них единичный тест. Допустим, у вас есть два приложения: один рабочий стол и один веб-сайт, тогда оба могут совместно использовать ValidationProject вместо повторения кода в обоих приложениях для одного и того же «Просмотр» / «Экран». Идея здесь заключается в том, чтобы изолировать проект Validation как независимый проект вашего решения.

Итак, вы можете скачать проект FluentValidation от NuGet, FluentValidation использует правила внутри конструктора, вы можете увидеть здесь документацию https: //github.com/JeremySkinner/FluentValidation/wiki

Например, можно использовать это правило даты, например, вы можете также установить правила для своего значения min и вашего максимального значения:

public class CustomerValidator: AbstractValidator {
  public CustomerValidator() {
                    RuleFor(customer => customer.startDate)
                    .NotNull()
                    .WithMessage("You should select a start date")
                    .Must(d => d.HasValue && d.Value <= DateTime.Today)
                    .WithMessage("The start date should not be greather than current month/year");
  }

Теперь внутри вашего контроллера

[HttpPost]
public ActionResult Index(Customer c)
{
  if(ModelState.IsValid)
  {
    var validator= new CustomerValidator();
    var valResult = validator.Validate(c);

    if (valResult.Errors.Count != 0)
    {
       valResult.Errors.ForEach(x => ModelState.AddModelError(x.PropertyName, x.ErrorMessage));
       return View(vm);
    }

    //Your code here
  }
}

1
задан Finkelson 2 March 2019 в 07:26
поделиться

2 ответа

Вы можете взглянуть на код, кажется, что он доступен в v1beta2 Dataproc API Python-клиенте .

Вот пример того, как его установить (из Airflow DataprocClusterCreateOperator ):

cluster_data['config']['lifecycleConfig']['idleDeleteTtl'] = '1800s'
0
ответ дан Igor Dvorzhak 2 March 2019 в 07:26
поделиться

Вот другой подход.

Попробуйте удалить кластер из программы, которую вы запускаете. Когда вы закончите свои вычисления, пусть ваша программа сама вызовет команду удаления кластера.

    print("Try to delete cluster %s " % job_args['cluster_name'] )
    result = subprocess.call(['gcloud',
                              'dataproc',
                              'clusters',
                              'delete',
                              job_args['cluster_name'],
                              '--quiet',
                              '--async'])
    print("Sent command result: %s" % str(result))
0
ответ дан howie 2 March 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: