Fix replace_default_repos to use correct releases

This change removes hardcoded unavailable releases and makes the
replace_default_repos function more flexible to support only needed
and available releases. The previous version didn't work with UCA
environments.

Change-Id: Iec53c695037b08ee26e8e6c07fbf1dfacfcadde8
Closes-Bug: #1624295
Related-Bug: #1615488
Signed-off-by: Maksim Malchuk <mmalchuk@mirantis.com>
This commit is contained in:
Maksim Malchuk 2016-09-15 10:54:50 +03:00
parent 6815f65e04
commit b12ad32816
1 changed files with 33 additions and 29 deletions

View File

@ -553,7 +553,7 @@ class FuelWebClient29(object):
settings = {} settings = {}
if REPLACE_DEFAULT_REPOS and not REPLACE_DEFAULT_REPOS_ONLY_ONCE: if REPLACE_DEFAULT_REPOS and not REPLACE_DEFAULT_REPOS_ONLY_ONCE:
self.replace_default_repos() self.replace_default_repos(release_name=release_name)
cluster_id = self.client.get_cluster_id(name) cluster_id = self.client.get_cluster_id(name)
if not cluster_id: if not cluster_id:
@ -861,35 +861,39 @@ class FuelWebClient29(object):
replace_repos.report_centos_repos(repos_attr['value']) replace_repos.report_centos_repos(repos_attr['value'])
self.client.update_cluster_attributes(cluster_id, attributes) self.client.update_cluster_attributes(cluster_id, attributes)
def replace_default_repos(self): def replace_default_repos(self, release_name=None):
# Replace Ubuntu default repositories for the release if release_name is None:
logger.info("Replace default repository list.") for release_name in [help_data.OPENSTACK_RELEASE_UBUNTU,
ubuntu_id = self.client.get_release_id( help_data.OPENSTACK_RELEASE_UBUNTU_UCA]:
release_name=help_data.OPENSTACK_RELEASE_UBUNTU) self.replace_release_repos(release_name=release_name)
else:
self.replace_release_repos(release_name=release_name)
ubuntu_release = self.client.get_release(ubuntu_id) def replace_release_repos(self, release_name):
ubuntu_meta = ubuntu_release["attributes_metadata"] release_id = self.client.get_release_id(release_name=release_name)
repos_ubuntu = ubuntu_meta["editable"]["repo_setup"]["repos"] release_data = self.client.get_release(release_id)
if release_data["state"] == "available":
repos_ubuntu["value"] = replace_repos.replace_ubuntu_repos( logger.info("Replace default repository list for {0}: '{1}'"
repos_ubuntu, upstream_host='archive.ubuntu.com') " release".format(release_id, release_name))
release_meta = release_data["attributes_metadata"]
self.client.put_release(ubuntu_id, ubuntu_release) release_repos = release_meta["editable"]["repo_setup"]["repos"]
replace_repos.report_ubuntu_repos(repos_ubuntu["value"]) if release_data["operating_system"] == "Ubuntu":
release_repos["value"] = replace_repos.replace_ubuntu_repos(
# Replace CentOS default repositories for the release release_repos, upstream_host='archive.ubuntu.com')
centos_id = self.client.get_release_id( self.client.put_release(release_id, release_data)
release_name=help_data.OPENSTACK_RELEASE_CENTOS) replace_repos.report_ubuntu_repos(release_repos["value"])
elif release_data["operating_system"] == "CentOS":
centos_release = self.client.get_release(centos_id) release_repos["value"] = replace_repos.replace_centos_repos(
centos_meta = centos_release["attributes_metadata"] release_repos, upstream_host=self.admin_node_ip)
repos_centos = centos_meta["editable"]["repo_setup"]["repos"] self.client.put_release(release_id, release_data)
replace_repos.report_centos_repos(release_repos["value"])
repos_centos["value"] = replace_repos.replace_centos_repos( else:
repos_centos, upstream_host=self.admin_node_ip) logger.info("Unknown Operating System for release {0}: '{1}'."
" Repository list not updated".format(
self.client.put_release(centos_id, centos_release) release_id, release_name))
replace_repos.report_centos_repos(repos_centos["value"]) else:
logger.info("Release {0}: '{1}' is unavailable. Repository list"
" not updated".format(release_id, release_name))
def get_cluster_repos(self, cluster_id): def get_cluster_repos(self, cluster_id):
attributes = self.client.get_cluster_attributes(cluster_id) attributes = self.client.get_cluster_attributes(cluster_id)