Политика изменения API управления Android для устройства - PullRequest
0 голосов
/ 23 октября 2018

Я создал 2 политики на своем предприятии.

Я бы хотел переключить одно устройство на другое без повторной регистрации.

Я пытался использовать устройства управления Android-устройствами. Патчсо следующим JSON

{ "policyName": "policy2" }

эта ссылка

Когда я выполняю эту команду, я всегда получаю следующее сообщение об ошибке:

{
 "error": {
  "code": 400,
  "message": "Illegal state transition from ACTIVE to DEVICE_STATE_UNSPECIFIED",
  "status": "INVALID_ARGUMENT"
 }
}

Кто-нибудь знаеткак изменить политику для устройства, не стирая его?

Ответы [ 3 ]

0 голосов
/ 07 августа 2019

Как уже упоминал Фред, 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()
0 голосов
/ 08 августа 2019

Я нашел решение для моей проблемы:

{"policyName": "policy2", "state": "active"}

0 голосов
/ 23 октября 2018

Действительно возможно изменить политику устройства без повторной регистрации, и вы не далеко от решения.

Вы получаете эту ошибку, потому что вы неявно пытаетесь изменить другие поляDevice ресурса (в частности, поле state), не устанавливая их в ресурсе, который вы отправляете в devices.patch.

У вас есть два варианта:

  1. Установите updateMask в devices.patch на "policyName", чтобы сообщить API, что вы хотите изменить только поле policyName.

  2. Вызовdevices.get, чтобы получить текущий ресурс Device, а затем отправить обратно весь ресурс с измененным только полем policyName на devices.patch.

Использование updateMask - этопредпочтительнее, потому что он выполняет атомарное чтение-изменение-запись.

...