Неверный ввод конструктора для запроса Updatealertpolicy

# #python #google-cloud-monitoring #protocol-buffers

Вопрос:

Я пытаюсь обновить политику предупреждений с помощью облачных функций. У меня есть следующие строки кода:

 filter = "resource.type = "l7_lb_rule" AND metric.type = "logging.googleapis.com/user/stuff_here"")
alert_policy = {"conditions":[{"condition_absent":{"duration": '1800s',"filter": '{}'.format(filter)}, "displayName":'test'}], "displayName":'test'), "combiner":"OR"}
policy = monitoring_v3.AlertPolicy.from_json(json.dumps(alert_policy))
client_alert.update_alert_policy(policy)
 

Я запускаю то же обновление с помощью проводника API, и оно работает. Однако облачные функции возвращают мне эту ошибку TypeError: Invalid constructor input for UpdateAlertPolicyRequest: display_name: "test"

Мне также интересно, куда я должен передать имя предупреждения, которое я хочу обновить. Я пытался передать имя в качестве параметра или объекта alert_policy, но оно всегда возвращало мне какие-то ошибки.

Ответ №1:

Проблема в том, что вы передаете в качестве аргумента update_alert_policy функции то , что, как вы можете видеть в исходном коде библиотеки, считается UpdateAlertPolicyRequest первым позиционным аргументом. Вам нужно предоставить свою информацию, используя alert_policy вместо этого аргумент, что-то вроде:

 # indicate every field you want to update and provide
# the corresponding values in the policy definition
mask = field_mask.FieldMask(paths=['display_name', 'combiner', 'conditions'])
policy = monitoring_v3.AlertPolicy(
    name='your_policy_name',
    display_name='test',
    combiner='OR',
    conditions=[
        monitoring_v3.types.AlertPolicy.Condition(
            display_name='test',
            condition_absent=monitoring_v3.types.AlertPolicy.Condition.MetricAbsence(
                duration='1800s',
                filter='resource.type = "l7_lb_rule" AND metric.type = "logging.googleapis.com/user/stuff_here"'
            )
        )
    ]
)
client.update_alert_policy(alert_policy=policy, update_mask=mask)
 

Библиотека предоставляет некоторые фрагменты, которые могут оказаться полезными.