Политика изменения API управления Android для устройства
Я создал 2 политики на моем предприятии.
Я бы хотел переключить одно устройство на другое без повторной регистрации.
Я попытался использовать android management enterprises devices.patch со следующим JSON
{ "policyName": "policy2" }
Когда я выполняю эту команду, я всегда получаю следующее сообщение об ошибке:
{
"error": {
"code": 400,
"message": "Illegal state transition from ACTIVE to DEVICE_STATE_UNSPECIFIED",
"status": "INVALID_ARGUMENT"
}
}
Кто-нибудь знает, как изменить политику для устройства, не стирая его?
4 ответа
Действительно возможно изменить политику устройства без повторной регистрации, и вы не далеко от решения.
Вы получаете эту ошибку, потому что вы неявно пытаетесь изменить другие поля Device
ресурс (в частности, state
поле), не устанавливая их в ресурсе, который вы отправляете в devices.patch
,
У вас есть два варианта:
Установить
updateMask
вdevices.patch
в"policy"
, чтобы сообщить API, что вы хотите изменить толькоpolicy
поле.Вызов
devices.get
чтобы получить текущийDevice
ресурс, а затем отправить обратно весь ресурс только сpolicy
поле изменилось наdevices.patch
,
С помощью updateMask
предпочтительнее, потому что это делает атомарное чтение-изменение-запись.
Как упоминал Фред, updateMask является предпочтительным способом. Вот пример того, как использовать подход updateMask в Google Colab
swap_result = androidmanagement.enterprises().devices().patch(
name='enterprises/ENTERPRISE_NAME/devices/DEVICE_ID', updateMask='policyName', body={ "policyName": "enterprises/ENTERPRISE_NAME/policies/NEW_POLICY_NAME"}).execute()
Я нашел решение для моей проблемы:
{"policyName": "policy2", "state": "active"}