我写了一个python脚本(由于无法使脚本正常工作,所以编写了一个可笑的剧本,但这是另外一回事了),目的是在由ops经理管理的mongodb副本集中执行切换,版本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
它是说作为参数给出的服务器名,而不是实际的引号“作为参数给出的服务器名”。