123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # -*- coding: utf-8 -*-
- """
- :copyright: Copyright 2013-2017 by the SaltStack Team, see AUTHORS for more details.
- :license: Apache 2.0, see LICENSE for more details.
- tests.support.win_installer
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Fetches the binary Windows installer
- """
- from __future__ import absolute_import
- import hashlib
- import requests
- PREFIX = "Salt-Minion-"
- REPO = "https://repo.saltstack.com/windows"
- def latest_installer_name(arch="AMD64", **kwargs):
- """
- Create an installer file name
- """
- return "Salt-Minion-Latest-Py3-{}-Setup.exe".format(arch)
- def download_and_verify(fp, name, repo=REPO):
- """
- Download an installer and verify its contents.
- """
- md5 = "{}.md5".format(name)
- url = lambda x: "{}/{}".format(repo, x)
- resp = requests.get(url(md5))
- if resp.status_code != 200:
- raise Exception("Unable to fetch installer md5")
- installer_md5 = resp.text.strip().split()[0].lower()
- resp = requests.get(url(name), stream=True)
- if resp.status_code != 200:
- raise Exception("Unable to fetch installer")
- md5hsh = hashlib.md5()
- for chunk in resp.iter_content(chunk_size=1024):
- md5hsh.update(chunk)
- fp.write(chunk)
- if md5hsh.hexdigest() != installer_md5:
- raise Exception(
- "Installer's hash does not match {} != {}".format(
- md5hsh.hexdigest(), installer_md5
- )
- )
|