in ccmlib/dse/dse_cluster.py [0:0]
def download_opscenter_version(version, username, password, target_version, verbose=False):
url = OPSC_ARCHIVE
if repository.CCM_CONFIG.has_option('repositories', 'opscenter'):
url = repository.CCM_CONFIG.get('repositories', 'opscenter')
url = url % version
_, target = tempfile.mkstemp(suffix=".tar.gz", prefix="ccm-")
try:
if username is None:
common.warning("No dse username detected, specify one using --dse-username or passing in a credentials file using --dse-credentials.")
if password is None:
common.warning("No dse password detected, specify one using --dse-password or passing in a credentials file using --dse-credentials.")
repository.__download(url, target, username=username, password=password, show_progress=verbose)
common.info("Extracting {} as version {} ...".format(target, target_version))
tar = tarfile.open(target)
dir = tar.next().name.split("/")[0] # pylint: disable=all
tar.extractall(path=repository.__get_dir())
tar.close()
target_dir = os.path.join(repository.__get_dir(), target_version)
if os.path.exists(target_dir):
rmdirs(target_dir)
shutil.move(os.path.join(repository.__get_dir(), dir), target_dir)
except urllib.error.URLError as e:
msg = "Invalid version {}".format(version) if url is None else "Invalid url {}".format(url)
msg = msg + " (underlying error is: {})".format(str(e))
raise ArgumentError(msg)
except tarfile.ReadError as e:
raise ArgumentError("Unable to uncompress downloaded file: {}".format(str(e)))