Oracle vm manager REST API. Импорт файлов в репозиторий
Не могу разобраться с импортом в репозиторий ISO, Virtual Appliance(Assembly) через REST API https://docs.oracle.com/en/virtualization/oracle-vm/3.4/developer/E64087.pdf В доке есть пример, который не работает ни через Ansible ни через python. Ошибки тайлил на стороне сервера, дебаг режимы и curl с verbose флагами пробовал.
Нужно просто загрузить через rest ISO в репозиторий. Остальной функционал тестировал, работает. Создание вм, включение, выключение, создание клона и т.д
Пример кода импорта:
baseUri = 'https://IP:7002/ovm/core/wsapi/rest'
assembly_url='http://IP/ISO/fedora_coreos_32.ova'
session = requests.Session()
session.auth = ('Login','Pass')
session.verify = False
session.headers.update({'Accept': 'application/json', 'Content-Type': 'application/json'})
repo_id = get_id_from_name(session, baseUri, 'Repository', "MyRepo")
uri = '{base}/Repository/{repoid}/importAssembly'.format(base=baseUri,repoid=repo_id['value'],)
params = {'url': assembly_url}
r = session.put(uri, params=params)
job = r.json()
Ошибка:
{u'errorCode': u'GEN_000001', u'wsErrorCode': u'GENERAL_NULL_ARGUMENT', u'message': u'GEN_000001:The value for the argument "repositoryImport" was found to be null, which is invalid.', u'cause': None}
Traceback (most recent call last):
File "test_auth.py", line 56, in <module>
assembly_id = wait_for_job(job['id']['uri'], session)
KeyError: 'id'
Ответы (1 шт):
Автор решения: Matthew Benjamin
→ Ссылка
Ошибка исправлена.
В документации(не работает):
data={'urls': [assembly_url] }
r=s.put(uri,data=data)
job=r.json()
Рабочий вариант:
data={'urls': [assembly_url]}
r=s.put(uri,data=json.dumps(data))
job = r.json()