Skip to content

Commit

Permalink
Clearer check
Browse files Browse the repository at this point in the history
- Remove duplication
- Add check for Docker
- Log if configuration files not found
  • Loading branch information
jesusbv committed Apr 24, 2024
1 parent 6df7b70 commit a216b08
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 40 deletions.
82 changes: 44 additions & 38 deletions lib/cloudregister/registerutils.py
Expand Up @@ -1723,46 +1723,45 @@ def _set_registry_order_search_podman(registry_fqdn):
private_registry = {'location': registry_fqdn, 'insecure': False}
public_registry = {'location': public_registry_fqdn, 'insecure': False}
registries_conf = {}
registries_search = []
registries = []
try:
registries_conf = _get_registry_conf_file(
REGISTRIES_CONF_PATH, 'podman'
)
missing_public_registry = public_registry_fqdn not in \
registries_conf['unqualified-search-registries']
if missing_public_registry:
registries_conf['unqualified-search-registries'] = \
[public_registry_fqdn] + \
registries_conf['unqualified-search-registries']
if public_registry not in registries_conf['registry']:
registries_conf['registry'] = \
[public_registry] + registries_conf['registry']
if private_registry not in registries_conf['registry']:
registries_conf['registry'] = \
[private_registry] + registries_conf['registry']
except (FileNotFoundError, KeyError):
registries_search = registries_conf.get(
'unqualified-search-registries', []
)
registries = registries_conf.get('registry', [])
if public_registry_fqdn not in registries_search:
registries_search.insert(0, public_registry_fqdn)
if public_registry not in registries:
registries.insert(0, public_registry)
if private_registry not in registries:
registries.insert(0, private_registry)
except FileNotFoundError:
# file does not exist, create the file
os.makedirs(os.path.dirname(REGISTRIES_CONF_PATH), exist_ok=True)
registries_conf = _get_registry_conf_file(
REGISTRIES_CONF_PATH, 'podman'
logging.info(
'Configuration file for Podman not found in %s' %
REGISTRIES_CONF_PATH
)
# one or both keys do not exist
if registries_conf.get('unqualified-search-registries') is None:
registries_conf['unqualified-search-registries'] = \
["{}".format(public_registry_fqdn)]
if registries_conf.get('registry') is None:
registries_conf['registry'] = \
[private_registry] + [public_registry]
os.makedirs(os.path.dirname(REGISTRIES_CONF_PATH), exist_ok=True)
registries_search.append(public_registry_fqdn)
registries = [private_registry, public_registry]

registries_conf['unqualified-search-registries'] = registries_search
registries_conf['registry'] = registries

with open(REGISTRIES_CONF_PATH, 'w') as registries_conf_file:
toml.dump(registries_conf, registries_conf_file)


# ----------------------------------------------------------------------------
def _get_registry_conf_file(container_path, container):
if container in 'podman':
if container == 'podman':
with open(container_path, 'r') as registries_conf_file:
registries_conf = toml.load(registries_conf_file)
if container in 'docker':
if container == 'docker':
with open(container_path, 'r') as registries_conf_file:
registries_conf = json.load(registries_conf_file)

Expand All @@ -1772,24 +1771,31 @@ def _get_registry_conf_file(container_path, container):
# ----------------------------------------------------------------------------
def _set_registry_order_search_docker():
# search is disabled for Docker server side for private registry
secure_urls = ['https://registry.suse.com']
mirrors_urls = ['https://registry.suse.com']
public_registry_fqdn = 'https://registry.suse.com'
docker_cfg_json = {}
secure_registries = []
registry_mirrors = []
try:
docker_cfg_json = _get_registry_conf_file(DOCKER_CONFIG_PATH, 'docker')
secure_urls += docker_cfg_json.get('secure-registries', [])
mirrors_urls += docker_cfg_json.get('registry-mirrors', [])
except (FileNotFoundError):
# config file does not exist,
secure_registries = docker_cfg_json.get('secure-registries', [])
registry_mirrors = docker_cfg_json.get('registry-mirrors', [])
if public_registry_fqdn not in secure_registries:
secure_registries.insert(0, public_registry_fqdn)
if public_registry_fqdn not in registry_mirrors:
registry_mirrors.insert(0, public_registry_fqdn)
except FileNotFoundError:
# config file does not exist
logging.info(
'Configuration file for Docker not found in %s' %
DOCKER_CONFIG_PATH
)
os.makedirs(os.path.dirname(DOCKER_CONFIG_PATH), exist_ok=True)
secure_registries.append(public_registry_fqdn)
registry_mirrors.append(public_registry_fqdn)

docker_cfg_json['registry-mirrors'] = mirrors_urls
docker_cfg_json['secure-registries'] = secure_urls
docker_cfg_json['registry-mirrors'] = registry_mirrors
docker_cfg_json['secure-registries'] = secure_registries
with open(DOCKER_CONFIG_PATH, 'w') as docker_config_file_json:
json.dump(docker_cfg_json, docker_config_file_json)

logging.info(
'Config for the registry added in %s' % ' and '.join(
[REGISTRIES_CONF_PATH, DOCKER_CONFIG_PATH]
)
)
logging.info('Config for the registry added in %s' % DOCKER_CONFIG_PATH)
2 changes: 0 additions & 2 deletions tests/test_registerutils.py
Expand Up @@ -3208,8 +3208,6 @@ def open_file(filename, mode):
)
mock_toml_dump.assert_called_once_with(
{
'search-registries': ['docker.io'],
'no-registry': [{'location': 'foo'}],
'unqualified-search-registries': ['registry.suse.com'],
'registry': [
{
Expand Down

0 comments on commit a216b08

Please sign in to comment.