saltstack / saltstack/salt

[BUG] salt-call pkg.install using proxy generates UnicodeDecodeError

Open
#60,908 4 comments 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
15.7k
Forks
5.6k
Avg merge
2d 44m
Merged PRs (30d)
80

Description

Description
I'm testing a masterless Windows minion in an environment that must use a proxy to get out to the internet. During a pkg.install run, the minion attempts to download the package but it runs in to an unhandled exception for UnicodeDecodeError which ultimately results in an endless loop. Only when I kill the salt-call operation do I see the connection in the proxy logs.

This behaviour is not seen with a masterless minion in a different environment that doesn't require a proxy.

Setup

  • EC2

Salt minion config (C:\salt\conf\minion.d\masterless.conf)

winrepo_dir_ng: 'C:\Temp\packages'
file_client: local
file_roots:
  base:
    - 'C:\Temp\saltconf'
    - 'C:\Temp\packages'
proxy_host: http://[REDACTED]
proxy_port: 3128

Test state to achieve a download of an installer (C:\Temp\packages\win\repo-ng\datadog-pkg.sls)

datadog-pkg:
  'latest':
    installer: https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi
    full_name: Datadog Agent
    reboot: False
    install_flags: '/qn'
    msiexec: True

Debug output

C:\Users\Administrator>salt-call pkg.install datadog-pkg -l debug
[DEBUG   ] Reading configuration from c:\salt\conf\minion
[DEBUG   ] Including configuration from 'c:\salt\conf\minion.d\masterless.conf'
[DEBUG   ] Reading configuration from c:\salt\conf\minion.d\masterless.conf
[DEBUG   ] Using cached minion ID from c:\salt\conf\minion_id: [REDACTED]
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Override  __grains__: <module 'salt.loaded.int.log_handlers.sentry_mod' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\log\\handlers\\sentry_mod.py'>
[DEBUG   ] Configuration file path: c:\salt\conf\minion
[WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
[DEBUG   ] Grains refresh requested. Refreshing grains.
[DEBUG   ] Reading configuration from c:\salt\conf\minion
[DEBUG   ] Including configuration from 'c:\salt\conf\minion.d\masterless.conf'
[DEBUG   ] Reading configuration from c:\salt\conf\minion.d\masterless.conf
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Override  __utils__: <module 'salt.loaded.int.grains.zfs' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\grains\\zfs.py'>
[DEBUG   ] Motherboard info not available on this system
[DEBUG   ] Determining pillar cache
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] LazyLoaded jinja.render
[DEBUG   ] LazyLoaded yaml.render
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] LazyLoaded jinja.render
[DEBUG   ] LazyLoaded yaml.render
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] LazyLoaded pkg.install
[DEBUG   ] LazyLoaded direct_call.execute
[DEBUG   ] LazyLoaded path.which
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.module.dracr' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\modules\\dracr.py'>
[DEBUG   ] Override  __grains__: <module 'salt.loaded.int.module.grains' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\modules\\grains.py'>
[DEBUG   ] Missing configuration file: /etc/salt/minion
[DEBUG   ] Using cached minion ID from c:\salt\conf\minion_id: [REDACTED]
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Popen(['git', 'version'], cwd=C:\Users\Administrator, universal_newlines=False, shell=None, istream=None)
[DEBUG   ] Popen(['git', 'version'], cwd=C:\Users\Administrator, universal_newlines=False, shell=None, istream=None)
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Could not LazyLoad idem.hub: 'idem' __virtual__ returned False: No module named 'pop'
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.module.kubeadm' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\modules\\kubeadm.py'>
[DEBUG   ] Override  __salt__: <module 'salt.loaded.int.module.udev' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\modules\\udev.py'>
[DEBUG   ] Override  __pillar__: <module 'salt.loaded.int.module.virtualenv_mod' from 'c:\\salt\\bin\\lib\\site-packages\\salt-3003.3-py3.7.egg\\salt\\modules\\virtualenv_mod.py'>
[DEBUG   ] Could not LazyLoad pkg.normalize_name: 'pkg.normalize_name' is not available.
[DEBUG   ] Using existing pkg metadata db for saltenv 'base' (age is 0:44:53.550253)
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] Using pkg_resources to load entry points
[DEBUG   ] LazyLoaded roots.envs
[DEBUG   ] Could not LazyLoad roots.init: 'roots.init' is not available.
[DEBUG   ] Updating roots fileserver cache
[DEBUG   ] Requesting URL https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi using GET method
[DEBUG   ] Using backend: tornado
[DEBUG   ] GET https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi
[DEBUG   ] Trying [REDACTED]:3128...
[DEBUG   ] TCP_NODELAY set
[DEBUG   ] Connected to proxy ([REDACTED]) port 3128 (#0)
[DEBUG   ] allocate connect buffer!
[DEBUG   ] Establish HTTP proxy tunnel to s3.amazonaws.com:443
[DEBUG   ] > CONNECT s3.amazonaws.com:443 HTTP/1.1
[DEBUG   ] > Host: s3.amazonaws.com:443
[DEBUG   ] > User-Agent: Mozilla/5.0 (compatible; pycurl)
[DEBUG   ] > Proxy-Connection: Keep-Alive
[DEBUG   ] >
[DEBUG   ] < HTTP/1.1 200 Connection established
[DEBUG   ] <
[DEBUG   ] Proxy replied 200 to CONNECT request
[DEBUG   ] CONNECT phase completed!
[DEBUG   ] ALPN, offering h2
[DEBUG   ] ALPN, offering http/1.1
[DEBUG   ] successfully set certificate verify locations:
[DEBUG   ] CAfile: c:\salt\bin\lib\site-packages\certifi\cacert.pem
  CApath: none
[DEBUG   ] TLSv1.3 (OUT), TLS handshake, Client hello (1):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 3: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 3: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 3: invalid start byte
[DEBUG   ] CONNECT phase completed!
[DEBUG   ] CONNECT phase completed!
[DEBUG   ] TLSv1.3 (IN), TLS handshake, Server hello (2):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 8: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 8: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 8: invalid start byte
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 4: invalid start byte
[DEBUG   ] TLSv1.2 (IN), TLS handshake, Certificate (11):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 3: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 3: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 3: invalid start byte
[DEBUG   ] TLSv1.2 (IN), TLS handshake, Server key exchange (12):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 10: invalid continuation byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 10: invalid continuation byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 10: invalid continuation byte
[DEBUG   ] TLSv1.2 (IN), TLS handshake, Server finished (14):
[DEBUG   ] TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 9: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 9: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 9: invalid start byte
[DEBUG   ] TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
[DEBUG   ] TLSv1.2 (OUT), TLS handshake, Finished (20):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 6: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 6: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 6: invalid start byte
[DEBUG   ] TLSv1.2 (IN), TLS handshake, Finished (20):
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 4: invalid start byte
[DEBUG   ] SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
[DEBUG   ] ALPN, server did not agree to a protocol
[DEBUG   ] Server certificate:
[DEBUG   ] subject: C=US; ST=Washington; L=Seattle; O=Amazon.com, Inc.; CN=s3.amazonaws.com
[DEBUG   ] start date: Jun 23 00:00:00 2021 GMT
[DEBUG   ] expire date: Jul 24 23:59:59 2022 GMT
[DEBUG   ] subjectAltName: host "s3.amazonaws.com" matched cert's "s3.amazonaws.com"
[DEBUG   ] issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert Baltimore CA-2 G2
[DEBUG   ] SSL certificate verify ok.
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4: unexpected end of data
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4: unexpected end of data
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4: unexpected end of data
[DEBUG   ] > GET /ddagent-windows-stable/datadog-agent-7-latest.amd64.msi HTTP/1.1
[DEBUG   ] > Host: s3.amazonaws.com
[DEBUG   ] > Accept: */*
[DEBUG   ] > Accept-Encoding: none
[DEBUG   ] > User-Agent: Salt/3003.3 http.query()
[DEBUG   ] >
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 4: invalid start byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 4: invalid start byte
[DEBUG   ] Mark bundle as not supporting multiuse
[DEBUG   ] < HTTP/1.1 200 OK
[DEBUG   ] < x-amz-id-2: ShWwCUuw2QKOhy17QDd/c+w74FCtjD177B9uJYgGEg8CxreY0sE1nDF4XztPdhiJN2sVLz8cdxY=
[DEBUG   ] < x-amz-request-id: SW8T6H404RRMQBE5
[DEBUG   ] < Date: Tue, 21 Sep 2021 14:42:10 GMT
[DEBUG   ] < Last-Modified: Mon, 13 Sep 2021 10:14:34 GMT
[DEBUG   ] < ETag: "9baec09fb5b739123662453779c0d22c-22"
[DEBUG   ] < x-amz-version-id: tNXfoB6p0zqWSd0PmJ.gsQ.9gALyNScV
[DEBUG   ] < Accept-Ranges: bytes
[DEBUG   ] < Content-Type: application/x-msi
[DEBUG   ] < Server: AmazonS3
[DEBUG   ] < Content-Length: 184336384
[DEBUG   ] <
[ERROR   ] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
Traceback (most recent call last):
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\curl_httpclient.py", line 497, in _curl_debug
    debug_msg = native_str(debug_msg)
  File "c:\salt\bin\lib\site-packages\salt-3003.3-py3.7.egg\salt\ext\tornado\escape.py", line 219, in to_unicode
    return value.decode("utf-8")

Steps to Reproduce the behavior
This behaviour can be reproduced with any installer, no matter if it's hosted on S3 or not. I'm not able to test without using a proxy on EC2 but I have tested in a VMware environment that doesn't require a proxy, with the same minion config (minus proxy settings), states and packages copied over as is, and there is no issue.

Powershell is able to use wget to download installers from the internet using environment proxy settings.

Expected behavior
I expect Salt to be able to retrieve packages from the internet with proxy settings configured in the minion, just as it does without.

Versions Report

C:\Users\Administrator>salt-call test.versions
local:
    Salt Version:
              Salt: 3003.3

    Dependency Versions:
              cffi: 1.14.5
          cherrypy: 18.6.0
          dateutil: 2.8.1
         docker-py: Not Installed
             gitdb: 4.0.5
         gitpython: Not Installed
            Jinja2: 2.11.3
           libgit2: Not Installed
          M2Crypto: Not Installed
              Mako: 1.1.4
           msgpack: 1.0.2
      msgpack-pure: Not Installed
      mysql-python: Not Installed
         pycparser: 2.20
          pycrypto: Not Installed
      pycryptodome: 3.9.8
            pygit2: Not Installed
            Python: 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
      python-gnupg: 0.4.6
            PyYAML: 5.4.1
             PyZMQ: 18.0.1
             smmap: 3.0.4
           timelib: 0.2.4
           Tornado: 4.5.3
               ZMQ: 4.3.1

    System Versions:
              dist:
            locale: cp1252
           machine: AMD64
           release: 2019Server
            system: Windows
           version: 2019Server 10.0.17763 SP0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.