saltstack / salt

Software to automate the management and configuration of any infrastructure or application at scale. Install Salt from the Salt package repositories here:
https://docs.saltproject.io/salt/install-guide/en/latest/
Apache License 2.0
14.19k stars 5.48k forks source link

module boto_vpc (and prob. others) absolute version is wrong #55274

Open buroa opened 5 years ago

buroa commented 5 years ago

https://github.com/saltstack/salt/blob/4a5aa4dbe8140c24c11ac2b0d0bad9bee0eebd01/salt/modules/boto_vpc.py#L185

           Salt: 2019.2.2

Dependency Versions:
           cffi: Not Installed
       cherrypy: Not Installed
       dateutil: Not Installed
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
          ioflo: Not Installed
         Jinja2: 2.8.1
        libgit2: Not Installed
        libnacl: Not Installed
       M2Crypto: 0.33.0
           Mako: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.5.6
   mysql-python: Not Installed
      pycparser: Not Installed
       pycrypto: Not Installed
   pycryptodome: Not Installed
         pygit2: Not Installed
         Python: 3.6.8 (default, Oct 16 2019, 02:04:22)
   python-gnupg: Not Installed
         PyYAML: 3.11
          PyZMQ: 15.3.0
           RAET: Not Installed
          smmap: Not Installed
        timelib: Not Installed
        Tornado: 4.4.2
            ZMQ: 4.1.4

System Versions:
           dist:
         locale: UTF-8
        machine: x86_64
        release: 4.14.138-114.102.amzn2.x86_64
         system: Linux
        version: Not Installed

The boto version is wrong here. It should be something around 2.49.0 (the latest as of Nov 12, 2019).

xeacott commented 5 years ago

Thanks for reporting! We usually spend very little time in specific modules, so unless the original Author of the module or someone who has recently worked in the module notices the documentation in the top of the page, its easy to not notice those things. There are probably many modules that need updates like these. 😄

If you'd like, you can always open a PR to address this!

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

If this issue is closed prematurely, please leave a comment and we will gladly reopen the issue.

stale[bot] commented 4 years ago

Thank you for updating this issue. It is no longer marked as stale.

ScriptAutomate commented 4 years ago

Adding to what @xeacott said, this looks like an issue where an audit by a contributor to boto* dependent code may need to take place.

# Checking for modules referencing boto versions
grep -R 'versions.check_boto_reqs('

Output:

salt/modules/boto_s3.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.2.1")
salt/modules/boto_iam.py:    return salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto_route53.py:    return salt.utils.versions.check_boto_reqs(boto_ver="2.35.0", check_boto3=False)
salt/modules/boto_elbv2.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_cloudwatch_event.py:    return salt.utils.versions.check_boto_reqs()
salt/modules/boto_kinesis.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_lambda.py:    return salt.utils.versions.check_boto_reqs(
salt/modules/boto_sqs.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_cfn.py:    return salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto_efs.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.0.0", check_boto=False)
salt/modules/boto_dynamodb.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto_cloudfront.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_elasticache.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto_ssm.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_secgroup.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(
salt/modules/boto_rds.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.3.1")
salt/modules/boto_apigateway.py:    return salt.utils.versions.check_boto_reqs(
salt/modules/boto_s3_bucket.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.2.1")
salt/modules/boto3_sns.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_elb.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(
salt/modules/boto3_elasticache.py:    return salt.utils.versions.check_boto_reqs()
salt/modules/boto_asg.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs()
salt/modules/boto_cloudwatch.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto_elasticsearch_domain.py:    return salt.utils.versions.check_boto_reqs(boto_ver="2.8.0", boto3_ver="1.4.0")
salt/modules/boto_sns.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/modules/boto3_route53.py:    return salt.utils.versions.check_boto_reqs()
salt/modules/boto_cloudtrail.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.2.5")
salt/modules/boto3_elasticsearch.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.2.7")
salt/modules/boto_vpc.py:    return salt.utils.versions.check_boto_reqs(boto_ver="2.8.0", boto3_ver="1.2.6")
salt/modules/boto_ec2.py:    has_boto_reqs = salt.utils.versions.check_boto_reqs(
salt/modules/boto_cognitoidentity.py:    return salt.utils.versions.check_boto_reqs(boto_ver="2.8.0", boto3_ver="1.2.1")
salt/modules/boto_iot.py:    return salt.utils.versions.check_boto_reqs(boto3_ver="1.2.1", botocore_ver="1.4.41")
salt/modules/boto_datapipeline.py:    return salt.utils.versions.check_boto_reqs(check_boto=False)
salt/modules/boto_kms.py:    return salt.utils.versions.check_boto_reqs(boto_ver="2.38.0", check_boto3=False)
salt/renderers/aws_kms.py:    return HAS_FERNET and salt.utils.versions.check_boto_reqs()
salt/utils/botomod.py:    has_boto_requirements = salt.utils.versions.check_boto_reqs(check_boto3=False)
salt/utils/boto3mod.py:    has_boto = salt.utils.versions.check_boto_reqs()
salt/utils/boto3_elasticsearch.py:    return salt.utils.versions.check_boto_reqs(check_boto=False)

Glancing at the output, it looks like many modules are reliant on the out-dated (and I think no longer maintained) version of the Python AWS library (boto v2 has since been replaced with boto3). It looks like some above have migrated over to boto3, at least.

Note from AWS, when someone visits the boto v2.x docs (which had it's last update back in 2018):

Boto3, the next version of Boto, is now stable and recommended for general use. It can be used side-by-side with Boto in the same project, so it is easy to start using Boto3 in your existing projects as well as new projects. Going forward, API updates and all new feature work will be focused on Boto3.

For more information, see the documentation for boto3.

For those interested, this may be of help: boto3 docs: Migrating from Boto 2.x

ScriptAutomate commented 4 years ago

Done a grep on what we currently are using:

cd requirements
egrep -r "boto=|boto>"
static/ci/py3.5/darwin.txt:boto==2.49.0
static/ci/py3.5/freebsd.txt:boto==2.49.0
static/ci/py3.5/windows.txt:boto==2.49.0
static/ci/py3.5/linux.txt:boto==2.49.0
static/ci/py3.9/darwin.txt:boto==2.49.0
static/ci/py3.9/freebsd.txt:boto==2.49.0
static/ci/py3.9/linux.txt:boto==2.49.0
static/ci/py3.6/darwin.txt:boto==2.49.0
static/ci/py3.6/freebsd.txt:boto==2.49.0
static/ci/py3.6/windows.txt:boto==2.49.0
static/ci/py3.6/linux.txt:boto==2.49.0
static/ci/freebsd.in:boto>=2.46.0
static/ci/py3.7/darwin.txt:boto==2.49.0
static/ci/py3.7/freebsd.txt:boto==2.49.0
static/ci/py3.7/windows.txt:boto==2.49.0
static/ci/py3.7/linux.txt:boto==2.49.0
static/ci/windows.in:boto>=2.46.0
static/ci/darwin.in:boto>=2.46.0
static/ci/py3.8/darwin.txt:boto==2.49.0
static/ci/py3.8/freebsd.txt:boto==2.49.0
static/ci/py3.8/linux.txt:boto==2.49.0
static/ci/linux.in:boto>=2.46.0