objects: fix restore image default repo value

Obtain the image's repository from the API REST.
Don't send 127.0.0.1 as image server when --repo is not defined.
master
Alejandro Sirgo Rica 2024-06-05 15:19:42 +02:00 committed by lupoDharkael
parent f53a60129b
commit 6f9da3fdbb
1 changed files with 25 additions and 1 deletions

View File

@ -9,6 +9,23 @@ from urllib.parse import urlparse
from cli.utils import *
import argparse
import requests
def get_repository(repository_id, rest):
repositories = get_repositories(rest)
if not repositories:
return None
[repository] = [repository for repository in repositories
if repository['id'] == repository_id]
return repository
def get_repositories(rest):
r = rest.get('/repositories')
if not r or r.status_code != requests.codes.ok:
return None
repositories = r.json()['repositories']
return repositories
class OgImage():
@ -43,7 +60,7 @@ class OgImage():
help='Transfer method. (Default: tiptorrent)')
parser.add_argument('--repo',
nargs='?',
default=urlparse(rest.URL).netloc.split(':')[0],
required=False,
help='Repository IP address')
group = parser.add_argument_group('clients', 'Client selection args')
group.add_argument('--center-id',
@ -92,6 +109,13 @@ class OgImage():
else:
found_image = found_image[0]
if not parsed_args.repo:
repository = get_repository(found_image['repo_id'], rest)
if not repository:
print(f'Could not find repository for image {found_image["name"]}')
return
parsed_args.repo = repository['ip']
payload = {'disk': parsed_args.disk, 'partition': parsed_args.part,
'id': str(parsed_args.id), 'name': found_image['name'],
'profile': str(found_image['software_id']),