def test_openapi_describe_and_delete_sharding_backup(self, openAPIBackup, openAPI_createShardingMongodb):
        status, resp = openAPIBackup.openAPI_describeBackups_cap(openAPI_createShardingMongodb["instanceId"])
        if "error" in resp.keys():
            assert False, "[WAN] Interface return exception"
        assert resp["requestId"]
        if resp["result"]["totalCount"] == 0:
            info_logger.info("test_openapi_describe_backup_lists query is empty")
        else:
            assert resp["result"]["pageNumber"]
            assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong"
            assert resp["result"]["backups"][0]["backupId"]
            assert resp["result"]["backups"][0]["backupName"]
            assert resp["result"]["backups"][0]["backupStatus"]
            info_logger.info("test_openapi_query_backup_lists success")

        status, resp = openAPIBackup.openAPI_describeBackups_cap(openAPI_createShardingMongodb["configserver"][0]["configserverNodeId"])
        if "error" in resp.keys():
            assert False, "[WAN] Interface return exception"
        assert resp["requestId"]
        if resp["result"]["totalCount"] == 0:
            info_logger.info("test_openapi_describe_backup_lists query is empty")
        else:
            assert resp["result"]["pageNumber"]
            assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong"
            assert resp["result"]["backups"][0]["backupId"]
            assert resp["result"]["backups"][0]["backupName"]
            assert resp["result"]["backups"][0]["instanceId"] == openAPI_createShardingMongodb["configserver"][0]["configserverNodeId"]
            assert resp["result"]["backups"][0]["backupStatus"]
            info_logger.info("test_openapi_query_backup_lists success")
            flag = MongOpenAPISteps().openapi_delete_backup_until_finshed(openAPIBackup,
                                                                          resp["result"]["backups"][0]["backupId"])
            assert flag

        status, resp = openAPIBackup.openAPI_describeBackups_cap(
            openAPI_createShardingMongodb["shard"][0]["shardNodeId"])
        if "error" in resp.keys():
            assert False, "[WAN] Interface return exception"
        assert resp["requestId"]
        if resp["result"]["totalCount"] == 0:
            info_logger.info("test_openapi_describe_backup_lists query is empty")
        else:
            assert resp["result"]["pageNumber"]
            assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong"
            assert resp["result"]["backups"][0]["backupId"]
            assert resp["result"]["backups"][0]["backupName"]
            assert resp["result"]["backups"][0]["instanceId"] == openAPI_createShardingMongodb["shard"][0]["shardNodeId"]
            assert resp["result"]["backups"][0]["backupStatus"]
            info_logger.info("test_openapi_query_backup_lists success")
            flag = MongOpenAPISteps().openapi_delete_backup_until_finshed(openAPIBackup,
                                                                          resp["result"]["backups"][0]["backupId"])
            assert flag
 def test_openapi_by_instance_query_backup_lists(self, openAPIBackup, openAPI_createMongoDb):
     #根据instanceId查询实例
     time.sleep(3)
     status, resp = openAPIBackup.openAPI_describeBackups_cap(instanceId=openAPI_createMongoDb)
     assert status == 200
     assert "error" not in resp.keys()
     assert resp["requestId"]
     assert resp["result"]
     if resp["result"] is None or resp["result"]["totalCount"] ==0:
         info_logger.info("test_openapi_by_instance_query_backup_lists success, interface return null")
     assert resp["result"]["totalCount"]
     assert resp["result"]["pageNumber"]
     assert len(resp["result"]["backups"][0]) == 9
     info_logger.info("test_openapi_by_instance_query_backup_lists success")
 def test_openapi_create_instance_by_backup_until_finished(self, dbVersion,instanceStorageType,mongOpenAPI,createByTimeId,openAPIBackup):
     #根据备份创建实例,事前创建好实例,写入数据,要求固定的db及collection,admin.test_coll,并且开公网,
     time.sleep(10)
     # backupId,dataCount = openAPI_backupId
     # assert backupId is not None
     # 获取备份文件
     status, resp = openAPIBackup.openAPI_describeBackups_cap(instanceId=createByTimeId)
     assert resp["result"]["totalCount"]>0,"get backup list failed"
     backupId=""
     for i in range(len(resp["result"]["backups"])):
         if resp["result"]["backups"][i]["backupStatus"]=="Finished":
             backupId=resp["result"]["backups"][i]["backupId"]
             break
     assert "mongo" in backupId,"{}".format(resp)
     # 获取源实例公网
     publicIp = mongOpenAPI.openapi_describe_instance_attribute_cap(createByTimeId)["instancePublicDomain"].split(",")[0].split(":")[0]
     assert "jmongo" in publicIp
     dataCount = mongo_write_data.count_data(publicIp)
     # 根据备份创建实例
     status, resp = MongOpenAPISteps().openapi_create_instance_until_finshed(dbVersion,instanceStorageType,mongOpenAPI,backupId=backupId)
     if status != 200 or resp["result"]["totalCount"] is None:
         assert False
     assert resp["result"]["dbInstances"][0]["instanceStatus"] == 'RUNNING'
     instance = resp["result"]["dbInstances"][0]["instanceId"]
     time.sleep(20)
     # 给instance开公网,查询实例data count
     flag, resp = MongOpenAPISteps().openapi_enable_internet_access_until_finshed(mongOpenAPI, instance)
     assert flag
     publicIp = resp["instancePublicDomain"].split(",")[0].split(":")[0]
     assert "jmongo" in publicIp
     # 先查询有无全0白名单,没有则添加全0白名单
     ret_status, res = mongOpenAPI.openapi_query_securityIps_cap(instance)
     assert ret_status == 200,"{}".format(res)
     if "0.0.0.0/0" not in res["result"]["securityIps"]:
         status0, resp0 = mongOpenAPI.openapi_securityIps_cap(instance, "Add", ip="0.0.0.0/0")
         if status0 != 200 or "error" in resp0.keys():
             assert False, "[ERROR] modify_securityIps return {}".format(resp0)
     time.sleep(60)
     newDataCount = mongo_write_data.count_data(publicIp)
     assert dataCount==newDataCount,"create mongo by backup ,restore data error"
     flag = MongOpenAPISteps().openapi_delete_instance_until_finshed(mongOpenAPI, instance)
     assert flag
     info_logger.info("[test_openapi_create_instance_by_backup_until_finished success,data count is {}]".format(newDataCount))
 def test_openapi_create_backup_normal_parameter(self, openAPIBackup, mongOpenAPI, openAPI_createMongoDb):
     # backupId = MongOpenAPISteps().openapi_create_backup_until_finshed(openAPIBackup, openAPI_createMongoDb,
     #                                                                   backupMethod='Logical')
     # if backupId is None:
     #     assert False
     # status, resp = openAPIBackup.openAPI_describeBackups_cap(backupId=backupId)
     # assert status == 200
     # assert resp["result"]["backups"][0]["backupMethod"] == 'Logical'
     # info_logger.info("test_openapi_create_backup_normal_parameter Logical {} success".format(backupId))
     time.sleep(420)#刚创建的实例,会触发自动备份,备份用时候5分钟,所在再次备份需要sleep5分钟,这个没有sleep是因为执行前面case的时候超过了5分钟所以没sleep,如果前面case失败,5分钟内就执行到此case,此case会失败,因为备份失败。
     backupMethod = 'Logical'
     backupId = MongOpenAPISteps().openapi_create_backup_until_finshed(openAPIBackup, openAPI_createMongoDb,
                                                                       backupMethod=backupMethod)
     if backupId is None:
         assert False
     status, resp = openAPIBackup.openAPI_describeBackups_cap(backupId=backupId)
     assert status == 200
     instance = mongOpenAPI.openapi_describe_instance_attribute_cap(openAPI_createMongoDb)
     if instance["instanceStorageType"] == "EBS_SSD":
         assert resp["result"]["backups"][0]["backupMethod"] == 'Logical'
     else:
         assert resp["result"]["backups"][0]["backupMethod"] == backupMethod
     info_logger.info("test_openapi_create_backup_normal_parameter Physical {} success".format(backupId))