Использование REST API mongodb ops manager для переключения - PullRequest
0 голосов
/ 30 октября 2018

Я написал скрипт на python (и ANSIBLE playbook из-за невозможности заставить скрипт работать, но это уже другая история), цель которого - выполнить переключение внутри набора реплик mongodb, который управляется менеджером ops, версия 3.6. У меня есть два сайта, 3 сервера на одном сайте и 2 сайта на другом, и этот сценарий в основном отправляет запрос PUT, чтобы изменить конфигурацию автоматизации набора реплик и, в зависимости от того, какой сайт предоставлен, изменить приоритет требуемого сервера до 2, оставляя остальные в 1 и добавляя арбитры, затем удаляя их при необходимости. На данный момент цель состоит в том, чтобы просто изменить приоритет с помощью запроса put, чтобы попытаться заставить его работать, вот как выглядит запрос PUT:

data = {"replicaSets": [
{
     "_id"_: "PP_ATLAS",
     "members": [
          {
               "_id": 2,
              "host": "*servername*",
              "priority": 2,
          },
          {
              "_id": 3,
              "host": "*servername*",
          },
          {
              "_id": 4,
              "host": "*servername*",
          }
     ]
   }
],
}
headers = {'Content-Type': 'application/json'}
js = requests.put(url, auth=HTTPDigestAuth (MMS_User, MMS_API), data=json.dumps(data), headers=headers, verify=False)

MMS_User и MMS_API - это идентификационные токены, используемые для доступа к диспетчеру операций, также известному как MMS.

Когда я пытаюсь это сделать (сценарий запрашивает имя сервера для переключения в качестве аргумента), я получаю:

{"detail":"Invalid automation config: Process *servername that was given as an argument* referenced in one or more deployment items but not found in configuration.","error":400,"errorCode":null,"parameters":null,"reason":"Bad Request"}
400

Имя_сервера , которое было задано в качестве аргумента , - это то, что оно говорит, а не фактическая цитата "имя_сервера, которое было задано в качестве аргумента".

...