Giter VIP home page Giter VIP logo

cortx-utils's Introduction

License: AGPL v3 Slack YouTube GitHub contributors

Disclaimer: This project is not maintained anymore

CORTX-Utils

The cortx-utils repository contains utility tools and code for various CORTX submodules. For example, S3 and NFS submodules use code from the cortx-utils repos.

Contribute to CORTX-Utils

We are excited about your interest in CORTX and hope you will join us. We take our community very seriously, and we are committed to creating a community built on respectful interactions and inclusivity, as documented in our Code of conduct.

Refer to the CORTX Contribution Guide that hosts all information about community values, code of conduct, how to contribute code and documentation, community and code style guide, and how to reach out to us.

Reach Out To Us

Thank You

We thank you for stopping by to check out the CORTX Community. Seagate is fully dedicated to its mission to build open source technologies that help the world save unlimited data and solve challenging data problems. Join our mission to help reinvent a data-driven world.

cortx-utils's People

Contributors

ajay-paratmandali avatar cdeshmukh avatar gargpalak048 avatar ivan-alekhin avatar jkumar32 avatar kailashyadav11 avatar lakshita-jain avatar mariyappanp avatar mukul-seagate11 avatar pratyush-seagate avatar pujamudaliar avatar rahul-tripathi-git avatar rohit-k-dwivedi avatar satish-seagate avatar selvakumaar5496 avatar shalakadharap avatar shraddhaseagate avatar shreya-18 avatar shrimetta avatar shriya-deshmukh avatar suryakumar1024 avatar swanand-gadre avatar tanujashinde0405 avatar udayan-y21 avatar ujjwalpl avatar vastradparayya avatar veerendra-simha-garikipati avatar venkuppu-chn avatar vimalraghwani20 avatar yogeshlahane avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cortx-utils's Issues

Failed to install cortx-py-utils-*.noarch.rpm

Hi Guys..
A couple of weeks ago, I can run this script without any error. However, today I tried to follow this Readme (https://github.com/Seagate/cortx-utils/blob/main/py-utils/README.md) and I got un-meet dependency errors.

I run this

sudo yum install -y cortx-py-utils-*.noarch.rpm

And I got this:

Total size: 1.4 M
Installed size: 1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
===============================================
Required python package aiohttp==3.6.1 is missing
Required python package configparser==4.0.2 is missing
Required python package confluent-kafka==1.5.0 is missing
Required python package cryptography==2.8 is missing
Required python package elasticsearch-dsl==7.3.0 is missing
Required python package elasticsearch==7.12.0 is missing
Required python package matplotlib==3.1.3 is missing
Required python package networkx==2.4 is missing
Required python package paramiko==2.7.1 is missing
Required python package python-consul==1.1.0 is missing
Required python package python-crontab==2.5.1 is missing
Required python package PyYAML==5.1.2 is missing
Required python package schematics==2.1.0 is missing
Required python package toml==0.10.0 is missing
Required python package cffi==1.14.5 is missing
Required python package numpy==1.19.2 is missing
Please install above python packages
===============================================
error: %pre(cortx-py-utils-2.0.0-2_f3c989b.noarch) scriptlet failed, exit status 255
Error in PREIN scriptlet in rpm package cortx-py-utils-2.0.0-2_f3c989b.noarch
  Verifying  : cortx-py-utils-2.0.0-2_f3c989b.noarch                                                                                                           1/1

Failed:
  cortx-py-utils.noarch 0:2.0.0-2_f3c989b

Complete!

It's a bit ambiguous since the log says Complete, but it actually failed to install the package (error: %pre(cortx-py-utils-2.0.0-2_f3c989b.noarch) scriptlet failed).

I am testing this on a baremetal server. I can easily reproduce this bug and could give you access to the server. Let me know if you need more details. This problem is blocking me for running S3Server on multinode. Really appreciate if you could look into this. Thanks!

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • Update dependency dict2xml to v1.7.0
  • Update tisonkun/actions-dco action to v1.1
  • Update dependency PyYAML to v6
  • Update dependency prettytable to v3

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.


  • Check this box to trigger a request for Renovate to run again on this repository

instruction on how to install Python dependencies for cortx-py-utils are missing

In https://github.com/Seagate/cortx-utils/blob/main/py-utils/README.md there is

Installation with RPM package Note : The rpm package installation will fail if any dependent python package is not installed. Please refer to WIKI (https://github.com/Seagate/cortx-utils/wiki/%22cortx-py-utils%22-single-node-manual-provisioning)

The page linked doesn't clarify what has to be done exactly to install cortx-py-utils rpm. I see only

Required python packages
Refer Required python packages to get the list of required python packages.

Install cortx-py-utils rpm
Get the rpm.
#yum install -y cortx-py-utils-2.0.0-90_8b3c613.noarch.rpm <== RPM name would be different``` which has a broken link and that's it.

README **Install python dependencies** suggestion

Hi,

For section Clone, after command git clone ... append another line cd cortx-utils would be more clearer when follow next build instruction and also align with other README build instruction.

pip3 install cortx_py_utils-1.0.0-py3-none-any.whl error

[root@ssc-vm-2736 dist]# pip3 install cortx_py_utils-1.0.0-py3-none-any.whl
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see pypa/pip#5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Processing ./cortx_py_utils-1.0.0-py3-none-any.whl
Collecting schematics==2.1.0
Downloading schematics-2.1.0-py2.py3-none-any.whl (49 kB)
|████████████████████████████████| 49 kB 1.4 MB/s
Collecting confluent-kafka==1.5.0
Downloading confluent_kafka-1.5.0-cp36-cp36m-manylinux1_x86_64.whl (8.1 MB)
|████████████████████████████████| 8.1 MB 4.2 MB/s
Collecting networkx==2.4
Downloading networkx-2.4-py3-none-any.whl (1.6 MB)
|████████████████████████████████| 1.6 MB 39.6 MB/s
Collecting numpy==1.19.2
Downloading numpy-1.19.2-cp36-cp36m-manylinux2010_x86_64.whl (14.5 MB)
|████████████████████████████████| 14.5 MB 75.9 MB/s
Collecting toml==0.10.0
Downloading toml-0.10.0-py2.py3-none-any.whl (25 kB)
Collecting python-consul==1.1.0
Downloading python_consul-1.1.0-py2.py3-none-any.whl (24 kB)
Collecting elasticsearch==6.8.1
Downloading elasticsearch-6.8.1-py2.py3-none-any.whl (75 kB)
|████████████████████████████████| 75 kB 2.8 MB/s
Collecting paramiko==2.7.1
Downloading paramiko-2.7.1-py2.py3-none-any.whl (206 kB)
|████████████████████████████████| 206 kB 64.3 MB/s
Collecting PyYAML==5.1.2
Downloading PyYAML-5.1.2.tar.gz (265 kB)
|████████████████████████████████| 265 kB 84.6 MB/s
Collecting aiohttp==3.6.1
Downloading aiohttp-3.6.1-cp36-cp36m-manylinux1_x86_64.whl (1.2 MB)
|████████████████████████████████| 1.2 MB 70.5 MB/s
Collecting elasticsearch-dsl==6.4.0
Downloading elasticsearch_dsl-6.4.0-py2.py3-none-any.whl (49 kB)
|████████████████████████████████| 49 kB 2.7 MB/s
Collecting configparser==4.0.2
Downloading configparser-4.0.2-py2.py3-none-any.whl (22 kB)
Collecting matplotlib==3.1.3
Downloading matplotlib-3.1.3-cp36-cp36m-manylinux1_x86_64.whl (13.1 MB)
|████████████████████████████████| 13.1 MB 75.8 MB/s
Collecting cryptography==2.8
Downloading cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (2.3 MB)
|████████████████████████████████| 2.3 MB 78.0 MB/s
Collecting python-crontab==2.5.1
Downloading python-crontab-2.5.1.tar.gz (52 kB)
|████████████████████████████████| 52 kB 3.6 MB/s
Collecting idna-ssl>=1.0
Downloading idna-ssl-1.1.0.tar.gz (3.4 kB)
Collecting chardet<4.0,>=2.0
Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
|████████████████████████████████| 133 kB 83.8 MB/s
Collecting attrs>=17.3.0
Downloading attrs-21.2.0-py2.py3-none-any.whl (53 kB)
|████████████████████████████████| 53 kB 267 kB/s
Collecting async-timeout<4.0,>=3.0
Downloading async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Collecting typing-extensions>=3.6.5
Downloading typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
Collecting yarl<2.0,>=1.0
Downloading yarl-1.6.3-cp36-cp36m-manylinux2014_x86_64.whl (293 kB)
|████████████████████████████████| 293 kB 63.7 MB/s
Collecting multidict<5.0,>=4.5
Downloading multidict-4.7.6-cp36-cp36m-manylinux1_x86_64.whl (148 kB)
|████████████████████████████████| 148 kB 82.7 MB/s
Requirement already satisfied: six>=1.4.1 in /usr/lib/python3.6/site-packages (from cryptography==2.8->cortx-py-utils==1.0.0) (1.14.0)
Collecting cffi!=1.11.3,>=1.8
Downloading cffi-1.14.5-cp36-cp36m-manylinux1_x86_64.whl (401 kB)
|████████████████████████████████| 401 kB 77.0 MB/s
Collecting urllib3>=1.21.1
Downloading urllib3-1.26.4-py2.py3-none-any.whl (153 kB)
|████████████████████████████████| 153 kB 82.4 MB/s
Collecting python-dateutil
Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
|████████████████████████████████| 227 kB 79.8 MB/s
Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1
Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
|████████████████████████████████| 67 kB 9.2 MB/s
Collecting cycler>=0.10
Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting kiwisolver>=1.0.1
Downloading kiwisolver-1.3.1-cp36-cp36m-manylinux1_x86_64.whl (1.1 MB)
|████████████████████████████████| 1.1 MB 64.4 MB/s
Collecting decorator>=4.3.0
Downloading decorator-5.0.9-py3-none-any.whl (8.9 kB)
Collecting pynacl>=1.0.1
Downloading PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl (961 kB)
|████████████████████████████████| 961 kB 62.9 MB/s
Collecting bcrypt>=3.1.3
Downloading bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl (63 kB)
|████████████████████████████████| 63 kB 478 kB/s
Collecting requests>=2.0
Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)
|████████████████████████████████| 61 kB 6.7 MB/s
Collecting pycparser
Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
|████████████████████████████████| 112 kB 89.4 MB/s
Collecting idna>=2.0
Downloading idna-3.1-py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 3.8 MB/s
Collecting certifi>=2017.4.17
Downloading certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
|████████████████████████████████| 147 kB 89.6 MB/s
Collecting idna>=2.0
Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 710 kB/s
Building wheels for collected packages: python-crontab, PyYAML, idna-ssl
Building wheel for python-crontab (setup.py) ... done
Created wheel for python-crontab: filename=python_crontab-2.5.1-py3-none-any.whl size=25596 sha256=1044e6e44ffecaba17595aa87f2457ded971a098f66760e4b301c837ad9d1160
Stored in directory: /root/.cache/pip/wheels/a2/ac/42/fd4e5a60ce1c981e89387526c837b89a023ef18e620975a84e
Building wheel for PyYAML (setup.py) ... done
Created wheel for PyYAML: filename=PyYAML-5.1.2-cp36-cp36m-linux_x86_64.whl size=446925 sha256=1e913e8456c457ad012a4b09f9e1f552217cdbeae95f1a2a0c003595251f0d3d
Stored in directory: /root/.cache/pip/wheels/d8/9b/e7/75af463b873c119dd444151fc54a8e190c87993593e1fa194a
Building wheel for idna-ssl (setup.py) ... done
Created wheel for idna-ssl: filename=idna_ssl-1.1.0-py3-none-any.whl size=3160 sha256=3bfce40dc15d389e1c21173addf0b5cd49645b33ee47cb8a18d0749a911e1ec0
Stored in directory: /root/.cache/pip/wheels/6a/f5/9c/f8331a854f7a8739cf0e74c13854e4dd7b1af11b04fe1dde13
Successfully built python-crontab PyYAML idna-ssl
Installing collected packages: pycparser, urllib3, typing-extensions, multidict, idna, chardet, cffi, certifi, yarl, requests, python-dateutil, pyparsing, pynacl, numpy, kiwisolver, idna-ssl, elasticsearch, decorator, cycler, cryptography, bcrypt, attrs, async-timeout, toml, schematics, PyYAML, python-crontab, python-consul, paramiko, networkx, matplotlib, elasticsearch-dsl, confluent-kafka, configparser, aiohttp, cortx-py-utils
Attempting uninstall: numpy
Found existing installation: numpy 1.12.1
Uninstalling numpy-1.12.1:
Successfully uninstalled numpy-1.12.1
Attempting uninstall: PyYAML
Found existing installation: PyYAML 3.13
ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

No module named cortx.utils.security.cipher

tried from cortx.utils.security.cipher import Cipher as in https://github.com/Seagate/cortx-utils/blob/main/py-utils/README.md

gives error

[root@ssc-vm-2736 cortx-utils]# python
Python 2.7.5 (default, Nov 16 2020, 22:23:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

from cortx.utils.security.cipher import Cipher
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named cortx.utils.security.cipher

Problem: setup.py can't install py-utils without root permissions

Wider description: setup.py doesn't provide a way for local installing and debugging. By some reason it always needs a write access to /opt/seagate/cortx/utils/conf and to /var/lib/cortx/ha.

Steps to reproduce:

  1. Clone the source code repo, cd to py-utils folder
  2. Create virtualenv with Python 3: python3 -m venv testvenv
  3. Activate the newly created virtualenv: source ./testenv/bin/activate
  4. Try to install py-utils locally: python ./setup.py install

Expected result: the module installed ok.

Actual result: failure.

python ./setup.py install
running install
running bdist_egg
running egg_info
writing cortx_py_utils.egg-info/PKG-INFO
writing dependency_links to cortx_py_utils.egg-info/dependency_links.txt
writing entry points to cortx_py_utils.egg-info/entry_points.txt
writing requirements to cortx_py_utils.egg-info/requires.txt
writing top-level names to cortx_py_utils.egg-info/top_level.txt
package init file 'src/utils/kvstore/__init__.py' not found (or not a regular file)
reading manifest file 'cortx_py_utils.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'cortx_py_utils.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/cortx
copying src/__init__.py -> build/lib/cortx
creating build/lib/cortx/utils
copying src/utils/__init__.py -> build/lib/cortx/utils
copying src/utils/comm.py -> build/lib/cortx/utils
copying src/utils/cron.py -> build/lib/cortx/utils
copying src/utils/errors.py -> build/lib/cortx/utils
copying src/utils/log.py -> build/lib/cortx/utils
copying src/utils/synchronization.py -> build/lib/cortx/utils
copying src/utils/const.py -> build/lib/cortx/utils
copying src/utils/process.py -> build/lib/cortx/utils
creating build/lib/cortx/utils/amqp
copying src/utils/amqp/__init__.py -> build/lib/cortx/utils/amqp
copying src/utils/amqp/const.py -> build/lib/cortx/utils/amqp
creating build/lib/cortx/utils/amqp/rabbitmq
copying src/utils/amqp/rabbitmq/__init__.py -> build/lib/cortx/utils/amqp/rabbitmq
copying src/utils/amqp/rabbitmq/amqp.py -> build/lib/cortx/utils/amqp/rabbitmq
creating build/lib/cortx/utils/cleanup
copying src/utils/cleanup/__init__.py -> build/lib/cortx/utils/cleanup
copying src/utils/cleanup/es_data_cleanup.py -> build/lib/cortx/utils/cleanup
creating build/lib/cortx/utils/data
copying src/utils/data/__init__.py -> build/lib/cortx/utils/data
creating build/lib/cortx/utils/data/access
copying src/utils/data/access/__init__.py -> build/lib/cortx/utils/data/access
copying src/utils/data/access/base_model.py -> build/lib/cortx/utils/data/access
copying src/utils/data/access/filters.py -> build/lib/cortx/utils/data/access
copying src/utils/data/access/queries.py -> build/lib/cortx/utils/data/access
copying src/utils/data/access/storage.py -> build/lib/cortx/utils/data/access
creating build/lib/cortx/utils/data/db
copying src/utils/data/db/__init__.py -> build/lib/cortx/utils/data/db
copying src/utils/data/db/db_provider.py -> build/lib/cortx/utils/data/db
copying src/utils/data/db/generic_storage.py -> build/lib/cortx/utils/data/db
creating build/lib/cortx/utils/data/db/consul_db
copying src/utils/data/db/consul_db/__init__.py -> build/lib/cortx/utils/data/db/consul_db
copying src/utils/data/db/consul_db/storage.py -> build/lib/cortx/utils/data/db/consul_db
creating build/lib/cortx/utils/data/db/elasticsearch_db
copying src/utils/data/db/elasticsearch_db/__init__.py -> build/lib/cortx/utils/data/db/elasticsearch_db
copying src/utils/data/db/elasticsearch_db/storage.py -> build/lib/cortx/utils/data/db/elasticsearch_db
creating build/lib/cortx/utils/ha
creating build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/__init__.py -> build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/compile.py -> build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/const.py -> build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/generate.py -> build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/hac.py -> build/lib/cortx/utils/ha/hac
copying src/utils/ha/hac/validation.py -> build/lib/cortx/utils/ha/hac
creating build/lib/cortx/utils/ha/dm
copying src/utils/ha/dm/__init__.py -> build/lib/cortx/utils/ha/dm
copying src/utils/ha/dm/actions.py -> build/lib/cortx/utils/ha/dm
copying src/utils/ha/dm/decision_maker.py -> build/lib/cortx/utils/ha/dm
copying src/utils/ha/dm/decision_monitor.py -> build/lib/cortx/utils/ha/dm
creating build/lib/cortx/utils/ha/dm/models
copying src/utils/ha/dm/models/__init__.py -> build/lib/cortx/utils/ha/dm/models
copying src/utils/ha/dm/models/base.py -> build/lib/cortx/utils/ha/dm/models
copying src/utils/ha/dm/models/decisiondb.py -> build/lib/cortx/utils/ha/dm/models
copying src/utils/ha/dm/models/node_status.py -> build/lib/cortx/utils/ha/dm/models
creating build/lib/cortx/utils/ha/dm/repository
copying src/utils/ha/dm/repository/__init__.py -> build/lib/cortx/utils/ha/dm/repository
copying src/utils/ha/dm/repository/decisiondb.py -> build/lib/cortx/utils/ha/dm/repository
copying src/utils/ha/__init__.py -> build/lib/cortx/utils/ha
creating build/lib/cortx/utils/validator
copying src/utils/validator/__init__.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_consul.py -> build/lib/cortx/utils/validator
copying src/utils/validator/error.py -> build/lib/cortx/utils/validator
copying src/utils/validator/service.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_bmc.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_elasticsearch.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_salt.py -> build/lib/cortx/utils/validator
copying src/utils/validator/commands.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_storage.py -> build/lib/cortx/utils/validator
copying src/utils/validator/v_network.py -> build/lib/cortx/utils/validator
copying src/utils/validator/validate.py -> build/lib/cortx/utils/validator
creating build/lib/cortx/utils/kvstore
copying src/utils/kvstore/error.py -> build/lib/cortx/utils/kvstore
copying src/utils/kvstore/kvstore.py -> build/lib/cortx/utils/kvstore
copying src/utils/kvstore/pillar.py -> build/lib/cortx/utils/kvstore
creating build/lib/cortx/utils/message_bus
copying src/utils/message_bus/__init__.py -> build/lib/cortx/utils/message_bus
copying src/utils/message_bus/comm.py -> build/lib/cortx/utils/message_bus
copying src/utils/message_bus/error.py -> build/lib/cortx/utils/message_bus
copying src/utils/message_bus/message.py -> build/lib/cortx/utils/message_bus
creating build/lib/cortx/utils/message_bus/tcp
copying src/utils/message_bus/tcp/__init__.py -> build/lib/cortx/utils/message_bus/tcp
creating build/lib/cortx/utils/message_bus/tcp/kafka
copying src/utils/message_bus/tcp/kafka/__init__.py -> build/lib/cortx/utils/message_bus/tcp/kafka
copying src/utils/message_bus/tcp/kafka/const.py -> build/lib/cortx/utils/message_bus/tcp/kafka
copying src/utils/message_bus/tcp/kafka/kafka.py -> build/lib/cortx/utils/message_bus/tcp/kafka
creating build/lib/cortx/utils/product_features
copying src/utils/product_features/__init__.py -> build/lib/cortx/utils/product_features
copying src/utils/product_features/model.py -> build/lib/cortx/utils/product_features
copying src/utils/product_features/unsupported_features.py -> build/lib/cortx/utils/product_features
creating build/lib/cortx/utils/security
copying src/utils/security/__init__.py -> build/lib/cortx/utils/security
copying src/utils/security/cipher.py -> build/lib/cortx/utils/security
copying src/utils/security/key_manager.py -> build/lib/cortx/utils/security
copying src/utils/security/secure_storage.py -> build/lib/cortx/utils/security
creating build/lib/cortx/utils/schema
copying src/utils/schema/__init__.py -> build/lib/cortx/utils/schema
copying src/utils/schema/conf.py -> build/lib/cortx/utils/schema
copying src/utils/schema/database.py -> build/lib/cortx/utils/schema
copying src/utils/schema/payload.py -> build/lib/cortx/utils/schema
creating build/lib/cortx/utils/appliance_info
copying src/utils/appliance_info/__init__.py -> build/lib/cortx/utils/appliance_info
copying src/utils/appliance_info/appliance.py -> build/lib/cortx/utils/appliance_info
copying src/py.typed -> build/lib/cortx
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/cortx
copying build/lib/cortx/__init__.py -> build/bdist.linux-x86_64/egg/cortx
creating build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/comm.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/cron.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/errors.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/log.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/synchronization.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/const.py -> build/bdist.linux-x86_64/egg/cortx/utils
copying build/lib/cortx/utils/process.py -> build/bdist.linux-x86_64/egg/cortx/utils
creating build/bdist.linux-x86_64/egg/cortx/utils/amqp
copying build/lib/cortx/utils/amqp/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/amqp
copying build/lib/cortx/utils/amqp/const.py -> build/bdist.linux-x86_64/egg/cortx/utils/amqp
creating build/bdist.linux-x86_64/egg/cortx/utils/amqp/rabbitmq
copying build/lib/cortx/utils/amqp/rabbitmq/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/amqp/rabbitmq
copying build/lib/cortx/utils/amqp/rabbitmq/amqp.py -> build/bdist.linux-x86_64/egg/cortx/utils/amqp/rabbitmq
creating build/bdist.linux-x86_64/egg/cortx/utils/cleanup
copying build/lib/cortx/utils/cleanup/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/cleanup
copying build/lib/cortx/utils/cleanup/es_data_cleanup.py -> build/bdist.linux-x86_64/egg/cortx/utils/cleanup
creating build/bdist.linux-x86_64/egg/cortx/utils/data
copying build/lib/cortx/utils/data/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/data
creating build/bdist.linux-x86_64/egg/cortx/utils/data/access
copying build/lib/cortx/utils/data/access/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/access
copying build/lib/cortx/utils/data/access/base_model.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/access
copying build/lib/cortx/utils/data/access/filters.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/access
copying build/lib/cortx/utils/data/access/queries.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/access
copying build/lib/cortx/utils/data/access/storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/access
creating build/bdist.linux-x86_64/egg/cortx/utils/data/db
copying build/lib/cortx/utils/data/db/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db
copying build/lib/cortx/utils/data/db/db_provider.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db
copying build/lib/cortx/utils/data/db/generic_storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db
creating build/bdist.linux-x86_64/egg/cortx/utils/data/db/consul_db
copying build/lib/cortx/utils/data/db/consul_db/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db/consul_db
copying build/lib/cortx/utils/data/db/consul_db/storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db/consul_db
creating build/bdist.linux-x86_64/egg/cortx/utils/data/db/elasticsearch_db
copying build/lib/cortx/utils/data/db/elasticsearch_db/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db/elasticsearch_db
copying build/lib/cortx/utils/data/db/elasticsearch_db/storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/data/db/elasticsearch_db
creating build/bdist.linux-x86_64/egg/cortx/utils/ha
creating build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/compile.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/const.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/generate.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/hac.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
copying build/lib/cortx/utils/ha/hac/validation.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/hac
creating build/bdist.linux-x86_64/egg/cortx/utils/ha/dm
copying build/lib/cortx/utils/ha/dm/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm
copying build/lib/cortx/utils/ha/dm/actions.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm
copying build/lib/cortx/utils/ha/dm/decision_maker.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm
copying build/lib/cortx/utils/ha/dm/decision_monitor.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm
creating build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models
copying build/lib/cortx/utils/ha/dm/models/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models
copying build/lib/cortx/utils/ha/dm/models/base.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models
copying build/lib/cortx/utils/ha/dm/models/decisiondb.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models
copying build/lib/cortx/utils/ha/dm/models/node_status.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models
creating build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/repository
copying build/lib/cortx/utils/ha/dm/repository/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/repository
copying build/lib/cortx/utils/ha/dm/repository/decisiondb.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/repository
copying build/lib/cortx/utils/ha/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/ha
creating build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_consul.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/error.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/service.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_bmc.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_elasticsearch.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_salt.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/commands.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/v_network.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
copying build/lib/cortx/utils/validator/validate.py -> build/bdist.linux-x86_64/egg/cortx/utils/validator
creating build/bdist.linux-x86_64/egg/cortx/utils/kvstore
copying build/lib/cortx/utils/kvstore/error.py -> build/bdist.linux-x86_64/egg/cortx/utils/kvstore
copying build/lib/cortx/utils/kvstore/kvstore.py -> build/bdist.linux-x86_64/egg/cortx/utils/kvstore
copying build/lib/cortx/utils/kvstore/pillar.py -> build/bdist.linux-x86_64/egg/cortx/utils/kvstore
creating build/bdist.linux-x86_64/egg/cortx/utils/message_bus
copying build/lib/cortx/utils/message_bus/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus
copying build/lib/cortx/utils/message_bus/comm.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus
copying build/lib/cortx/utils/message_bus/error.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus
copying build/lib/cortx/utils/message_bus/message.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus
creating build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp
copying build/lib/cortx/utils/message_bus/tcp/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp
creating build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka
copying build/lib/cortx/utils/message_bus/tcp/kafka/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka
copying build/lib/cortx/utils/message_bus/tcp/kafka/const.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka
copying build/lib/cortx/utils/message_bus/tcp/kafka/kafka.py -> build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka
creating build/bdist.linux-x86_64/egg/cortx/utils/product_features
copying build/lib/cortx/utils/product_features/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/product_features
copying build/lib/cortx/utils/product_features/model.py -> build/bdist.linux-x86_64/egg/cortx/utils/product_features
copying build/lib/cortx/utils/product_features/unsupported_features.py -> build/bdist.linux-x86_64/egg/cortx/utils/product_features
creating build/bdist.linux-x86_64/egg/cortx/utils/security
copying build/lib/cortx/utils/security/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/security
copying build/lib/cortx/utils/security/cipher.py -> build/bdist.linux-x86_64/egg/cortx/utils/security
copying build/lib/cortx/utils/security/key_manager.py -> build/bdist.linux-x86_64/egg/cortx/utils/security
copying build/lib/cortx/utils/security/secure_storage.py -> build/bdist.linux-x86_64/egg/cortx/utils/security
creating build/bdist.linux-x86_64/egg/cortx/utils/schema
copying build/lib/cortx/utils/schema/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/schema
copying build/lib/cortx/utils/schema/conf.py -> build/bdist.linux-x86_64/egg/cortx/utils/schema
copying build/lib/cortx/utils/schema/database.py -> build/bdist.linux-x86_64/egg/cortx/utils/schema
copying build/lib/cortx/utils/schema/payload.py -> build/bdist.linux-x86_64/egg/cortx/utils/schema
creating build/bdist.linux-x86_64/egg/cortx/utils/appliance_info
copying build/lib/cortx/utils/appliance_info/__init__.py -> build/bdist.linux-x86_64/egg/cortx/utils/appliance_info
copying build/lib/cortx/utils/appliance_info/appliance.py -> build/bdist.linux-x86_64/egg/cortx/utils/appliance_info
copying build/lib/cortx/py.typed -> build/bdist.linux-x86_64/egg/cortx
byte-compiling build/bdist.linux-x86_64/egg/cortx/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/comm.py to comm.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/cron.py to cron.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/errors.py to errors.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/log.py to log.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/synchronization.py to synchronization.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/const.py to const.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/process.py to process.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/amqp/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/amqp/const.py to const.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/amqp/rabbitmq/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/amqp/rabbitmq/amqp.py to amqp.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/cleanup/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/cleanup/es_data_cleanup.py to es_data_cleanup.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/access/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/access/base_model.py to base_model.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/access/filters.py to filters.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/access/queries.py to queries.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/access/storage.py to storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/db_provider.py to db_provider.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/generic_storage.py to generic_storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/consul_db/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/consul_db/storage.py to storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/elasticsearch_db/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/data/db/elasticsearch_db/storage.py to storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/compile.py to compile.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/const.py to const.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/generate.py to generate.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/hac.py to hac.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/hac/validation.py to validation.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/actions.py to actions.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/decision_maker.py to decision_maker.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/decision_monitor.py to decision_monitor.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models/base.py to base.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models/decisiondb.py to decisiondb.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/models/node_status.py to node_status.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/repository/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/dm/repository/decisiondb.py to decisiondb.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/ha/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_consul.py to v_consul.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/error.py to error.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/service.py to service.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_bmc.py to v_bmc.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_elasticsearch.py to v_elasticsearch.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_salt.py to v_salt.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/commands.py to commands.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_storage.py to v_storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/v_network.py to v_network.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/validator/validate.py to validate.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/kvstore/error.py to error.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/kvstore/kvstore.py to kvstore.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/kvstore/pillar.py to pillar.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/comm.py to comm.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/error.py to error.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/message.py to message.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka/const.py to const.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/message_bus/tcp/kafka/kafka.py to kafka.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/product_features/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/product_features/model.py to model.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/product_features/unsupported_features.py to unsupported_features.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/security/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/security/cipher.py to cipher.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/security/key_manager.py to key_manager.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/security/secure_storage.py to secure_storage.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/schema/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/schema/conf.py to conf.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/schema/database.py to database.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/schema/payload.py to payload.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/appliance_info/__init__.py to __init__.cpython-36.pyc
byte-compiling build/bdist.linux-x86_64/egg/cortx/utils/appliance_info/appliance.py to appliance.cpython-36.pyc
installing package data to build/bdist.linux-x86_64/egg
running install_data
creating /var/lib/cortx
error: could not create '/var/lib/cortx': Permission denied

CVE-2020-14422 (Medium) detected in ipaddress-1.0.23-py2.py3-none-any.whl - autoclosed

CVE-2020-14422 - Medium Severity Vulnerability

Vulnerable Library - ipaddress-1.0.23-py2.py3-none-any.whl

IPv4/IPv6 manipulation library

Library home page: https://files.pythonhosted.org/packages/c2/f8/49697181b1651d8347d24c095ce46c7346c37335ddc7d255833e7cde674d/ipaddress-1.0.23-py2.py3-none-any.whl

Path to dependency file: cortx-utils/py-utils

Path to vulnerable library: cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt

Dependency Hierarchy:

  • ipaddress-1.0.23-py2.py3-none-any.whl (Vulnerable Library)

Found in HEAD commit: 95a7cfa4303cfa1c62890181e05a0fe2c6a7c371

Found in base branch: main

Vulnerability Details

Lib/ipaddress.py in Python through 3.8.3 improperly computes hash values in the IPv4Interface and IPv6Interface classes, which might allow a remote attacker to cause a denial of service if an application is affected by the performance of a dictionary containing IPv4Interface or IPv6Interface objects, and this attacker can cause many dictionary entries to be created. This is fixed in: v3.5.10, v3.5.10rc1; v3.6.12; v3.7.9; v3.8.4, v3.8.4rc1, v3.8.5, v3.8.6, v3.8.6rc1; v3.9.0, v3.9.0b4, v3.9.0b5, v3.9.0rc1, v3.9.0rc2.

Publish Date: 2020-06-18

URL: CVE-2020-14422

CVSS 3 Score Details (5.9)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://security-tracker.debian.org/tracker/CVE-2020-14422

Release Date: 2020-06-18

Fix Resolution: 3.5.3-1+deb9u2, 3.7.3-2+deb10u2, 3.8.4~rc1-1


Step up your Open Source Security Game with WhiteSource here

Problem: unit tests fail in py-utils

More detailed problem: it seems like it is impossible to run unit tests using setup.py (a preferred pythonic way of doing that).

Steps to reproduce:

  1. Clone the repository locally
  2. Go to py-utils subfolder
  3. Run the following command: python ./setup.py test

Expected results: tests run, verdict is OK.

Actual result: failure at the initialization stage:

$ python ./setup.py test
running test
/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/dist.py:517: UserWarning: Module argparse was already imported from /usr/lib64/python3.6/argparse.py, but /home/720599/projects/hare/.py3venv/lib/python3.6/site-packages/argparse-1.4.0-py3.6.egg is being added to sys.path
  pkg_resources.working_set.add(dist, replace=True)
/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/dist.py:517: UserWarning: Module configparser was already imported from /usr/lib64/python3.6/configparser.py, but /home/720599/projects/hare/.py3venv/lib/python3.6/site-packages/configparser-4.0.2-py3.6.egg is being added to sys.path
  pkg_resources.working_set.add(dist, replace=True)
running egg_info
writing cortx_py_utils.egg-info/PKG-INFO
writing dependency_links to cortx_py_utils.egg-info/dependency_links.txt
writing entry points to cortx_py_utils.egg-info/entry_points.txt
writing requirements to cortx_py_utils.egg-info/requires.txt
writing top-level names to cortx_py_utils.egg-info/top_level.txt
package init file 'src/utils/kvstore/__init__.py' not found (or not a regular file)
reading manifest file 'cortx_py_utils.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'cortx_py_utils.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
  File "./setup.py", line 78, in <module>
    install_requires=get_install_requirements())
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/__init__.py", line 129, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib64/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib64/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/command/test.py", line 226, in run
    self.run_tests()
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/command/test.py", line 248, in run_tests
    exit=False,
  File "/usr/lib64/python3.6/unittest/main.py", line 94, in __init__
    self.parseArgs(argv)
  File "/usr/lib64/python3.6/unittest/main.py", line 118, in parseArgs
    self._do_discovery(argv[2:])
  File "/usr/lib64/python3.6/unittest/main.py", line 229, in _do_discovery
    self.test = loader.discover(self.start, self.pattern, self.top)
  File "/usr/lib64/python3.6/unittest/loader.py", line 341, in discover
    tests = list(self._find_tests(start_dir, pattern))
  File "/usr/lib64/python3.6/unittest/loader.py", line 398, in _find_tests
    full_path, pattern, namespace)
  File "/usr/lib64/python3.6/unittest/loader.py", line 475, in _find_test_path
    tests = self.loadTestsFromModule(package, pattern=pattern)
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/command/test.py", line 52, in loadTestsFromModule
    tests.append(self.loadTestsFromName(submodule))
  File "/usr/lib64/python3.6/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
  File "/home/720599/projects/cortx-utils/py-utils/test/test_decision_maker.py", line 31, in <module>
    class TestDecisionMaker(unittest.TestCase):
  File "/home/720599/projects/cortx-utils/py-utils/test/test_decision_maker.py", line 40, in TestDecisionMaker
    _dec_maker = DecisionMaker(decisiondb=mock_decisiondb)
  File "/home/720599/projects/cortx-utils/py-utils/cortx/utils/ha/dm/decision_maker.py", line 112, in __init__
    const.CORTX_HA_INSTALL_PATH, const.RULES_FILE_PATH))
  File "/home/720599/projects/cortx-utils/py-utils/cortx/utils/ha/dm/decision_maker.py", line 36, in __init__
    self._load_rules()
  File "/home/720599/projects/cortx-utils/py-utils/cortx/utils/ha/dm/decision_maker.py", line 47, in _load_rules
    Log.debug(f"Loading rules json into memory. File: {self._rule_file}")
  File "/home/720599/projects/cortx-utils/py-utils/cortx/utils/log.py", line 89, in debug
    Log.logger.debug(f"[{caller}] {msg}", *args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'debug'

py-utils doesn't ship all its dependencies with RPM

JIRA: https://jts.seagate.com/browse/EOS-17269

After installing py-utils RPM I'm still not able to import types from cortx.utils due to missing dependencies. In my case the error is as follows:

======================================================================
ERROR: main (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: main
Traceback (most recent call last):
  File "/usr/lib64/python3.6/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
  File "/home/720599/projects/hare/provisioning/miniprov/hare_mp/main.py", line 35, in <module>
    from cortx.utils.product_features import unsupported_features
  File "/usr/lib/python3.6/site-packages/cortx/utils/product_features/unsupported_features.py", line 19, in <module>
    from cortx.utils.data.access import Query
  File "/usr/lib/python3.6/site-packages/cortx/utils/data/access/__init__.py", line 18, in <module>
    from .base_model import BaseModel
  File "/usr/lib/python3.6/site-packages/cortx/utils/data/access/base_model.py", line 16, in <module>
    from schematics.models import Model
ModuleNotFoundError: No module named 'schematics'

So my unit test failed because the following import chain was broken: cortx.utils.product_features.unsupported_features -> cortx.utils.data.access.Query -> (BaseModel class) -> schematics.models.Model.

Second example - elasticsearch_dsl:

======================================================================
ERROR: main (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: main
Traceback (most recent call last):
  File "/usr/lib64/python3.6/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
  File "/home/720599/projects/hare/provisioning/miniprov/hare_mp/main.py", line 35, in <module>
    from cortx.utils.product_features import unsupported_features
  File "/usr/lib/python3.6/site-packages/cortx/utils/product_features/unsupported_features.py", line 21, in <module>
    from cortx.utils.data.db.db_provider import DataBaseProvider, GeneralConfig
  File "/usr/lib/python3.6/site-packages/cortx/utils/data/db/__init__.py", line 19, in <module>
    from cortx.utils.data.db.elasticsearch_db import ElasticSearchDB
  File "/usr/lib/python3.6/site-packages/cortx/utils/data/db/elasticsearch_db/__init__.py", line 18, in <module>
    from cortx.utils.data.db.elasticsearch_db.storage import ElasticSearchDB
  File "/usr/lib/python3.6/site-packages/cortx/utils/data/db/elasticsearch_db/storage.py", line 25, in <module>
    from elasticsearch_dsl import Q, Search, UpdateByQuery
ModuleNotFoundError: No module named 'elasticsearch_dsl'

Problem

Although cortx-py-utils RPM is installed, schematics Python package is not available it is obviously a dependency of py-utils.

py-utils version

$ rpm -qa 'cortx-py*'
cortx-py-utils-1.0.0-92_8b3c613.noarch

In Elasticsearch storage implementation file: get() method can retrieve only first 10 records.

This method must retrieve all the records that match to query but retrieving only first 10 records.

async def get(self, query: Query) -> List[BaseModel]:
"""
Get object from Storage by Query

We are facing this issue because for elasticsearch Search API : The default size parameter (number of records actually returned) is 10.
search = Search(index=self._index, doc_type=self._mapping_type, using=self._es_client)

`test_count` will always be 3. It's not total but a constant.

printf("Total tests = %d\n", test_count);

We do not publish which tests fail.

This makes the objective of a test case suite not useful.

Please make sure the code is readable, usable, modular; for the average github user.

printf("Total tests  = %d\n", test_count);

rc = test_basic_string();
	if (rc) {
		test_failed++;
                printf("\nbasic string test fails!");

	}

	rc = test_empty_string();
	if (rc) {
		test_failed++;
                printf("\nempty  string test fails!");

	}

	rc = test_numeral_string();
	if (rc) {
		test_failed++;
                printf("\nnumeric string test fails!");

	}
	/* Test summary */
	
	printf("Tests passed = %d\n", test_count-test_failed);
	printf("Tests failed = %d\n", test_failed);

CVE-2021-21330 (Medium) detected in aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl

CVE-2021-21330 - Medium Severity Vulnerability

Vulnerable Library - aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl

Async http client/server framework (asyncio)

Library home page: https://files.pythonhosted.org/packages/76/96/3b0682d7d63d7ffb30d02e8a0d9242d6413affb7af5514eab27974e91585/aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl

Path to dependency file: cortx-utils/py-utils

Path to vulnerable library: cortx-utils/py-utils,cortx-utils/py-utils/src/setup/utils,cortx-utils/py-utils/src/utils/setup/kafka/kafka

Dependency Hierarchy:

  • aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 0e59cfa613b30347e0280346b3b3c2f411c4dd36

Found in base branch: main

Vulnerability Details

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. In aiohttp before version 3.7.4 there is an open redirect vulnerability. A maliciously crafted link to an aiohttp-based web-server could redirect the browser to a different website. It is caused by a bug in the aiohttp.web_middlewares.normalize_path_middleware middleware. This security problem has been fixed in 3.7.4. Upgrade your dependency using pip as follows "pip install aiohttp >= 3.7.4". If upgrading is not an option for you, a workaround can be to avoid using aiohttp.web_middlewares.normalize_path_middleware in your applications.

Publish Date: 2021-02-26

URL: CVE-2021-21330

CVSS 3 Score Details (6.1)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: Required
    • Scope: Changed
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: Low
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-v6wp-4m6f-gcjg

Release Date: 2021-02-26

Fix Resolution: v3.7.4


⛑️ Automatic Remediation is available for this issue

yum install --skip-broken doesn't work for cortx-py-utils rpm

The install still fails because of unsatisfied dependencies.

without --skip-broken:

> sudo yum install -y cortx-py-utils-*.noarch.rpm
Loaded plugins: auto-update-debuginfo, fastestmirror, priorities
Examining cortx-py-utils-2.0.0-2_1f64470.noarch.rpm: cortx-py-utils-2.0.0-2_1f64470.noarch
Marking cortx-py-utils-2.0.0-2_1f64470.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package cortx-py-utils.noarch 0:2.0.0-2_1f64470 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================================================================================================================================
 Package                                                      Arch                                                 Version                                                          Repository                                                                            Size
===============================================================================================================================================================================================================================================================================
Installing:
 cortx-py-utils                                               noarch                                               2.0.0-2_1f64470                                                  /cortx-py-utils-2.0.0-2_1f64470.noarch                                               1.4 M

Transaction Summary
===============================================================================================================================================================================================================================================================================
Install  1 Package

Total size: 1.4 M
Installed size: 1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
===============================================
Required python package aiohttp==3.6.1 is missing
Required python package configparser==4.0.2 is missing
Required python package confluent-kafka==1.5.0 is missing
Required python package cryptography==2.8 is missing
Required python package elasticsearch-dsl==7.3.0 is missing
Required python package elasticsearch==7.12.0 is missing
Required python package matplotlib==3.1.3 is missing
Required python package networkx==2.4 is missing
Required python package paramiko==2.7.1 is missing
Required python package python-consul==1.1.0 is missing
Required python package python-crontab==2.5.1 is missing
Required python package PyYAML==5.1.2 is missing
Required python package schematics==2.1.0 is missing
Required python package toml==0.10.0 is missing
Required python package cffi==1.14.5 is missing
Required python package numpy==1.19.2 is missing
Please install above python packages
===============================================
error: %pre(cortx-py-utils-2.0.0-2_1f64470.noarch) scriptlet failed, exit status 255
Error in PREIN scriptlet in rpm package cortx-py-utils-2.0.0-2_1f64470.noarch
  Verifying  : cortx-py-utils-2.0.0-2_1f64470.noarch                                                                                                                                                                                                                       1/1 

Failed:
  cortx-py-utils.noarch 0:2.0.0-2_1f64470                                                                                                                                                                                                                                      

Complete!

with --skip-broken:

> sudo yum install -y --skip-broken cortx-py-utils-*.noarch.rpm
Loaded plugins: auto-update-debuginfo, fastestmirror, priorities
Examining cortx-py-utils-2.0.0-2_1f64470.noarch.rpm: cortx-py-utils-2.0.0-2_1f64470.noarch
Marking cortx-py-utils-2.0.0-2_1f64470.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package cortx-py-utils.noarch 0:2.0.0-2_1f64470 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================================================================================================================================
 Package                                                      Arch                                                 Version                                                          Repository                                                                            Size
===============================================================================================================================================================================================================================================================================
Installing:
 cortx-py-utils                                               noarch                                               2.0.0-2_1f64470                                                  /cortx-py-utils-2.0.0-2_1f64470.noarch                                               1.4 M

Transaction Summary
===============================================================================================================================================================================================================================================================================
Install  1 Package

Total size: 1.4 M
Installed size: 1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
===============================================
Required python package aiohttp==3.6.1 is missing
Required python package configparser==4.0.2 is missing
Required python package confluent-kafka==1.5.0 is missing
Required python package cryptography==2.8 is missing
Required python package elasticsearch-dsl==7.3.0 is missing
Required python package elasticsearch==7.12.0 is missing
Required python package matplotlib==3.1.3 is missing
Required python package networkx==2.4 is missing
Required python package paramiko==2.7.1 is missing
Required python package python-consul==1.1.0 is missing
Required python package python-crontab==2.5.1 is missing
Required python package PyYAML==5.1.2 is missing
Required python package schematics==2.1.0 is missing
Required python package toml==0.10.0 is missing
Required python package cffi==1.14.5 is missing
Required python package numpy==1.19.2 is missing
Please install above python packages
===============================================
error: %pre(cortx-py-utils-2.0.0-2_1f64470.noarch) scriptlet failed, exit status 255
Error in PREIN scriptlet in rpm package cortx-py-utils-2.0.0-2_1f64470.noarch
  Verifying  : cortx-py-utils-2.0.0-2_1f64470.noarch                                                                                                                                                                                                                       1/1 

Failed:
  cortx-py-utils.noarch 0:2.0.0-2_1f64470                                                                                                                                                                                                                                      

Complete!

py-utils/Readme.md error : build section

Hi,

For README.md ( in cortx-utils/py-utils/README.md ), Build section:

cd ..
./jenkins/build.sh -v 2.0.0 -b 2

seem like should be

cd cortx-utils
./jenkins/build.sh -v 2.0.0 -b 2

Cause it should work following git command

git clone --recursive https://github.com/Seagate/cortx-utils -b main

Problem: py-utils source code is not PEP-8 compliant

flake8 tool finds quite many problems with source code style. It means that the code doesn't comply with PEP-8.

List of problems at the current main branch:

flake8 src/
src/utils/comm.py:20:1: E302 expected 2 blank lines, found 1
src/utils/cron.py:35:80: E501 line too long (110 > 79 characters)
src/utils/cron.py:40:80: E501 line too long (118 > 79 characters)
src/utils/errors.py:97:1: E302 expected 2 blank lines, found 1
src/utils/log.py:18:10: E401 multiple imports on one line
src/utils/log.py:24:1: E302 expected 2 blank lines, found 1
src/utils/log.py:35:80: E501 line too long (87 > 79 characters)
src/utils/log.py:35:88: W291 trailing whitespace
src/utils/log.py:36:13: E128 continuation line under-indented for visual indent
src/utils/log.py:39:57: E701 multiple statements on one line (colon)
src/utils/log.py:41:41: E701 multiple statements on one line (colon)
src/utils/log.py:45:80: E501 line too long (84 > 79 characters)
src/utils/log.py:46:25: E128 continuation line under-indented for visual indent
src/utils/log.py:46:80: E501 line too long (88 > 79 characters)
src/utils/log.py:49:24: E128 continuation line under-indented for visual indent
src/utils/log.py:49:80: E501 line too long (88 > 79 characters)
src/utils/log.py:52:80: E501 line too long (86 > 79 characters)
src/utils/log.py:52:87: W291 trailing whitespace
src/utils/log.py:53:25: E127 continuation line over-indented for visual indent
src/utils/log.py:53:80: E501 line too long (85 > 79 characters)
src/utils/log.py:69:49: E231 missing whitespace after ','
src/utils/log.py:71:65: E251 unexpected spaces around keyword / parameter equals
src/utils/log.py:71:67: E251 unexpected spaces around keyword / parameter equals
src/utils/log.py:72:44: E128 continuation line under-indented for visual indent
src/utils/log.py:78:80: E501 line too long (83 > 79 characters)
src/utils/log.py:79:35: E128 continuation line under-indented for visual indent
src/utils/log.py:83:1: W293 blank line contains whitespace
src/utils/log.py:98:9: F841 local variable 'caller' is assigned to but never used
src/utils/log.py:103:9: F841 local variable 'caller' is assigned to but never used
src/utils/log.py:137:5: E303 too many blank lines (2)
src/utils/log.py:140:80: E501 line too long (84 > 79 characters)
src/utils/log.py:144:80: E501 line too long (92 > 79 characters)
src/utils/log.py:162:17: E128 continuation line under-indented for visual indent
src/utils/log.py:169:80: E501 line too long (88 > 79 characters)
src/utils/synchronization.py:25:80: E501 line too long (98 > 79 characters)
src/utils/synchronization.py:26:80: E501 line too long (93 > 79 characters)
src/utils/synchronization.py:32:80: E501 line too long (86 > 79 characters)
src/utils/synchronization.py:45:80: E501 line too long (83 > 79 characters)
src/utils/synchronization.py:49:80: E501 line too long (96 > 79 characters)
src/utils/const.py:57:23: W292 no newline at end of file
src/utils/process.py:20:1: E302 expected 2 blank lines, found 1
src/utils/process.py:28:1: E302 expected 2 blank lines, found 1
src/utils/process.py:32:19: E225 missing whitespace around operator
src/utils/process.py:33:17: E225 missing whitespace around operator
src/utils/process.py:34:21: E225 missing whitespace around operator
src/utils/process.py:35:17: E225 missing whitespace around operator
src/utils/process.py:36:32: E225 missing whitespace around operator
src/utils/process.py:46:21: E128 continuation line under-indented for visual indent
src/utils/process.py:47:21: E128 continuation line under-indented for visual indent
src/utils/process.py:48:21: E128 continuation line under-indented for visual indent
src/utils/process.py:66:9: E265 block comment should start with '# '
src/utils/amqp/__init__.py:18:1: F401 'cortx.utils.errors.AmqpConnectionError' imported but unused
src/utils/amqp/rabbitmq/__init__.py:18:1: F401 'cortx.utils.amqp.rabbitmq.amqp.RabbitMQAmqpConsumer' imported but unused
src/utils/amqp/rabbitmq/__init__.py:18:1: F401 'cortx.utils.amqp.rabbitmq.amqp.RabbitMQAmqpProducer' imported but unused
src/utils/amqp/rabbitmq/__init__.py:18:80: E501 line too long (85 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:24:80: E501 line too long (84 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:33:1: E302 expected 2 blank lines, found 1
src/utils/amqp/rabbitmq/amqp.py:50:13: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:52:80: E501 line too long (83 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:72:13: E125 continuation line with same indent as next logical line
src/utils/amqp/rabbitmq/amqp.py:75:80: E501 line too long (81 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:76:21: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:80:80: E501 line too long (85 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:90:44: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:91:52: E127 continuation line over-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:94:42: E228 missing whitespace around modulo operator
src/utils/amqp/rabbitmq/amqp.py:95:47: E127 continuation line over-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:96:47: E127 continuation line over-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:100:53: E127 continuation line over-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:105:25: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:105:80: E501 line too long (89 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:114:80: E501 line too long (86 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:117:80: E501 line too long (94 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:118:17: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:160:17: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:161:69: E502 the backslash is redundant between brackets
src/utils/amqp/rabbitmq/amqp.py:162:17: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:198:80: E501 line too long (85 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:228:80: E501 line too long (83 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:229:21: E128 continuation line under-indented for visual indent
src/utils/amqp/rabbitmq/amqp.py:229:80: E501 line too long (91 > 79 characters)
src/utils/amqp/rabbitmq/amqp.py:254:1: E302 expected 2 blank lines, found 1
src/utils/amqp/rabbitmq/amqp.py:266:80: E501 line too long (85 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:20:1: F401 'io' imported but unused
src/utils/cleanup/es_data_cleanup.py:21:1: F401 'argparse' imported but unused
src/utils/cleanup/es_data_cleanup.py:23:1: F401 'sys' imported but unused
src/utils/cleanup/es_data_cleanup.py:25:1: F401 'pathlib' imported but unused
src/utils/cleanup/es_data_cleanup.py:27:1: F401 'logging.handlers.SysLogHandler' imported but unused
src/utils/cleanup/es_data_cleanup.py:30:1: E302 expected 2 blank lines, found 1
src/utils/cleanup/es_data_cleanup.py:40:80: E501 line too long (90 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:42:14: E201 whitespace after '{'
src/utils/cleanup/es_data_cleanup.py:42:26: E201 whitespace after '{'
src/utils/cleanup/es_data_cleanup.py:42:35: E203 whitespace before ':'
src/utils/cleanup/es_data_cleanup.py:44:22: E203 whitespace before ':'
src/utils/cleanup/es_data_cleanup.py:45:13: E122 continuation line missing indentation or outdented
src/utils/cleanup/es_data_cleanup.py:46:10: E202 whitespace before '}'
src/utils/cleanup/es_data_cleanup.py:46:12: E202 whitespace before '}'
src/utils/cleanup/es_data_cleanup.py:49:80: E501 line too long (83 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:49:84: W291 trailing whitespace
src/utils/cleanup/es_data_cleanup.py:50:63: E127 continuation line over-indented for visual indent
src/utils/cleanup/es_data_cleanup.py:50:67: E251 unexpected spaces around keyword / parameter equals
src/utils/cleanup/es_data_cleanup.py:50:69: E251 unexpected spaces around keyword / parameter equals
src/utils/cleanup/es_data_cleanup.py:50:80: E501 line too long (102 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:50:92: E251 unexpected spaces around keyword / parameter equals
src/utils/cleanup/es_data_cleanup.py:50:94: E251 unexpected spaces around keyword / parameter equals
src/utils/cleanup/es_data_cleanup.py:50:103: W291 trailing whitespace
src/utils/cleanup/es_data_cleanup.py:51:13: F841 local variable 'e' is assigned to but never used
src/utils/cleanup/es_data_cleanup.py:52:80: E501 line too long (99 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:55:80: E501 line too long (111 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:61:40: E701 multiple statements on one line (colon)
src/utils/cleanup/es_data_cleanup.py:63:29: F821 undefined name 'errno'
src/utils/cleanup/es_data_cleanup.py:63:41: E701 multiple statements on one line (colon)
src/utils/cleanup/es_data_cleanup.py:81:80: E501 line too long (86 > 79 characters)
src/utils/cleanup/es_data_cleanup.py:83:1: W391 blank line at end of file
src/utils/data/access/__init__.py:18:1: F401 '.base_model.BaseModel' imported but unused
src/utils/data/access/__init__.py:19:1: F401 '.filters.And' imported but unused
src/utils/data/access/__init__.py:19:1: F401 '.filters.Or' imported but unused
src/utils/data/access/__init__.py:19:1: F401 '.filters.Compare' imported but unused
src/utils/data/access/__init__.py:19:1: F401 '.filters.IFilter' imported but unused
src/utils/data/access/__init__.py:19:1: F401 '.filters.IFilterTreeVisitor' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.Query' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.ExtQuery' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.SortOrder' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.SortBy' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.QueryLimits' imported but unused
src/utils/data/access/__init__.py:20:1: F401 '.queries.DateTimeRange' imported but unused
src/utils/data/access/__init__.py:20:80: E501 line too long (83 > 79 characters)
src/utils/data/access/__init__.py:21:1: F401 '.storage.IDataBase' imported but unused
src/utils/data/access/__init__.py:21:1: F401 '.storage.AbstractDataBaseProvider' imported but unused
src/utils/data/access/base_model.py:70:80: E501 line too long (89 > 79 characters)
src/utils/data/access/filters.py:37:80: E501 line too long (86 > 79 characters)
src/utils/data/access/filters.py:42:80: E501 line too long (90 > 79 characters)
src/utils/data/access/filters.py:56:80: E501 line too long (86 > 79 characters)
src/utils/data/access/filters.py:61:80: E501 line too long (89 > 79 characters)
src/utils/data/access/filters.py:83:28: E261 at least two spaces before inline comment
src/utils/data/access/filters.py:100:80: E501 line too long (84 > 79 characters)
src/utils/data/access/filters.py:108:80: E501 line too long (84 > 79 characters)
src/utils/data/access/filters.py:128:80: E501 line too long (80 > 79 characters)
src/utils/data/access/filters.py:131:80: E501 line too long (88 > 79 characters)
src/utils/data/access/filters.py:150:80: E501 line too long (86 > 79 characters)
src/utils/data/access/filters.py:154:80: E501 line too long (80 > 79 characters)
src/utils/data/access/filters.py:164:80: E501 line too long (85 > 79 characters)
src/utils/data/access/filters.py:165:80: E501 line too long (85 > 79 characters)
src/utils/data/access/filters.py:181:80: E501 line too long (87 > 79 characters)
src/utils/data/access/queries.py:18:1: F401 'datetime' imported but unused
src/utils/data/access/queries.py:24:1: E302 expected 2 blank lines, found 1
src/utils/data/access/queries.py:28:1: E302 expected 2 blank lines, found 1
src/utils/data/access/queries.py:33:1: E302 expected 2 blank lines, found 1
src/utils/data/access/queries.py:38:1: E302 expected 2 blank lines, found 1
src/utils/data/access/queries.py:43:1: E302 expected 2 blank lines, found 1
src/utils/data/access/queries.py:61:80: E501 line too long (98 > 79 characters)
src/utils/data/access/queries.py:69:80: E501 line too long (94 > 79 characters)
src/utils/data/access/queries.py:74:80: E501 line too long (87 > 79 characters)
src/utils/data/access/queries.py:75:80: E501 line too long (80 > 79 characters)
src/utils/data/access/queries.py:130:80: E501 line too long (87 > 79 characters)
src/utils/data/access/storage.py:51:80: E501 line too long (97 > 79 characters)
src/utils/data/access/storage.py:54:80: E501 line too long (98 > 79 characters)
src/utils/data/access/storage.py:59:80: E501 line too long (101 > 79 characters)
src/utils/data/access/storage.py:71:80: E501 line too long (92 > 79 characters)
src/utils/data/access/storage.py:72:80: E501 line too long (88 > 79 characters)
src/utils/data/access/storage.py:82:80: E501 line too long (93 > 79 characters)
src/utils/data/access/storage.py:83:80: E501 line too long (88 > 79 characters)
src/utils/data/access/storage.py:105:80: E501 line too long (80 > 79 characters)
src/utils/data/access/storage.py:113:80: E501 line too long (100 > 79 characters)
src/utils/data/access/storage.py:122:80: E501 line too long (92 > 79 characters)
src/utils/data/access/storage.py:143:80: E501 line too long (94 > 79 characters)
src/utils/data/access/storage.py:152:80: E501 line too long (100 > 79 characters)
src/utils/data/access/storage.py:161:80: E501 line too long (100 > 79 characters)
src/utils/data/access/storage.py:175:80: E501 line too long (85 > 79 characters)
src/utils/data/db/__init__.py:18:1: F401 'cortx.utils.data.db.generic_storage.GenericDataBase' imported but unused
src/utils/data/db/__init__.py:18:1: F401 'cortx.utils.data.db.generic_storage.GenericQueryConverter' imported but unused
src/utils/data/db/__init__.py:18:80: E501 line too long (86 > 79 characters)
src/utils/data/db/__init__.py:19:1: F401 'cortx.utils.data.db.elasticsearch_db.ElasticSearchDB' imported but unused
src/utils/data/db/__init__.py:20:1: F401 'cortx.utils.data.db.consul_db.ConsulDB' imported but unused
src/utils/data/db/db_provider.py:27:80: E501 line too long (100 > 79 characters)
src/utils/data/db/db_provider.py:94:80: E501 line too long (102 > 79 characters)
src/utils/data/db/db_provider.py:104:80: E501 line too long (80 > 79 characters)
src/utils/data/db/db_provider.py:105:80: E501 line too long (87 > 79 characters)
src/utils/data/db/db_provider.py:108:80: E501 line too long (89 > 79 characters)
src/utils/data/db/db_provider.py:118:80: E501 line too long (92 > 79 characters)
src/utils/data/db/db_provider.py:140:80: E501 line too long (90 > 79 characters)
src/utils/data/db/db_provider.py:154:80: E501 line too long (90 > 79 characters)
src/utils/data/db/db_provider.py:160:80: E501 line too long (96 > 79 characters)
src/utils/data/db/db_provider.py:161:80: E501 line too long (105 > 79 characters)
src/utils/data/db/db_provider.py:162:80: E501 line too long (85 > 79 characters)
src/utils/data/db/db_provider.py:171:80: E501 line too long (82 > 79 characters)
src/utils/data/db/db_provider.py:186:80: E501 line too long (83 > 79 characters)
src/utils/data/db/db_provider.py:197:80: E501 line too long (91 > 79 characters)
src/utils/data/db/db_provider.py:201:80: E501 line too long (86 > 79 characters)
src/utils/data/db/db_provider.py:212:80: E501 line too long (94 > 79 characters)
src/utils/data/db/db_provider.py:213:80: E501 line too long (89 > 79 characters)
src/utils/data/db/db_provider.py:218:80: E501 line too long (95 > 79 characters)
src/utils/data/db/db_provider.py:219:80: E501 line too long (81 > 79 characters)
src/utils/data/db/generic_storage.py:27:80: E501 line too long (87 > 79 characters)
src/utils/data/db/generic_storage.py:28:44: E128 continuation line under-indented for visual indent
src/utils/data/db/generic_storage.py:44:80: E501 line too long (100 > 79 characters)
src/utils/data/db/generic_storage.py:52:80: E501 line too long (98 > 79 characters)
src/utils/data/db/generic_storage.py:53:80: E501 line too long (83 > 79 characters)
src/utils/data/db/generic_storage.py:56:80: E501 line too long (86 > 79 characters)
src/utils/data/db/generic_storage.py:57:80: E501 line too long (81 > 79 characters)
src/utils/data/db/generic_storage.py:64:80: E501 line too long (89 > 79 characters)
src/utils/data/db/generic_storage.py:72:80: E501 line too long (97 > 79 characters)
src/utils/data/db/generic_storage.py:75:80: E501 line too long (98 > 79 characters)
src/utils/data/db/generic_storage.py:80:80: E501 line too long (101 > 79 characters)
src/utils/data/db/generic_storage.py:91:80: E501 line too long (83 > 79 characters)
src/utils/data/db/generic_storage.py:116:80: E501 line too long (80 > 79 characters)
src/utils/data/db/generic_storage.py:134:80: E501 line too long (85 > 79 characters)
src/utils/data/db/generic_storage.py:135:80: E501 line too long (88 > 79 characters)
src/utils/data/db/generic_storage.py:139:80: E501 line too long (83 > 79 characters)
src/utils/data/db/generic_storage.py:141:80: E501 line too long (96 > 79 characters)
src/utils/data/db/generic_storage.py:142:80: E501 line too long (85 > 79 characters)
src/utils/data/db/generic_storage.py:146:80: E501 line too long (84 > 79 characters)
src/utils/data/db/generic_storage.py:154:80: E501 line too long (93 > 79 characters)
src/utils/data/db/generic_storage.py:155:80: E501 line too long (88 > 79 characters)
src/utils/data/db/generic_storage.py:175:80: E501 line too long (96 > 79 characters)
src/utils/data/db/generic_storage.py:183:80: E501 line too long (88 > 79 characters)
src/utils/data/db/generic_storage.py:202:80: E501 line too long (94 > 79 characters)
src/utils/data/db/generic_storage.py:211:80: E501 line too long (96 > 79 characters)
src/utils/data/db/generic_storage.py:220:80: E501 line too long (96 > 79 characters)
src/utils/data/db/generic_storage.py:239:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/__init__.py:18:1: F401 'cortx.utils.data.db.consul_db.storage.ConsulDB' imported but unused
src/utils/data/db/consul_db/storage.py:36:80: E501 line too long (82 > 79 characters)
src/utils/data/db/consul_db/storage.py:45:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:51:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:66:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:68:80: E501 line too long (94 > 79 characters)
src/utils/data/db/consul_db/storage.py:120:80: E501 line too long (86 > 79 characters)
src/utils/data/db/consul_db/storage.py:121:13: E122 continuation line missing indentation or outdented
src/utils/data/db/consul_db/storage.py:121:53: E231 missing whitespace after ','
src/utils/data/db/consul_db/storage.py:122:80: E501 line too long (83 > 79 characters)
src/utils/data/db/consul_db/storage.py:124:80: E501 line too long (86 > 79 characters)
src/utils/data/db/consul_db/storage.py:126:80: E501 line too long (83 > 79 characters)
src/utils/data/db/consul_db/storage.py:128:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:133:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:139:80: E501 line too long (84 > 79 characters)
src/utils/data/db/consul_db/storage.py:175:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:181:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:186:80: E501 line too long (81 > 79 characters)
src/utils/data/db/consul_db/storage.py:190:1: E302 expected 2 blank lines, found 1
src/utils/data/db/consul_db/storage.py:204:80: E501 line too long (94 > 79 characters)
src/utils/data/db/consul_db/storage.py:220:80: E501 line too long (89 > 79 characters)
src/utils/data/db/consul_db/storage.py:235:80: E501 line too long (83 > 79 characters)
src/utils/data/db/consul_db/storage.py:239:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:242:80: E501 line too long (99 > 79 characters)
src/utils/data/db/consul_db/storage.py:285:80: E501 line too long (85 > 79 characters)
src/utils/data/db/consul_db/storage.py:287:80: E501 line too long (82 > 79 characters)
src/utils/data/db/consul_db/storage.py:288:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:326:80: E501 line too long (95 > 79 characters)
src/utils/data/db/consul_db/storage.py:338:80: E501 line too long (89 > 79 characters)
src/utils/data/db/consul_db/storage.py:343:80: E501 line too long (90 > 79 characters)
src/utils/data/db/consul_db/storage.py:346:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:347:80: E501 line too long (80 > 79 characters)
src/utils/data/db/consul_db/storage.py:361:80: E501 line too long (92 > 79 characters)
src/utils/data/db/consul_db/storage.py:363:80: E501 line too long (82 > 79 characters)
src/utils/data/db/consul_db/storage.py:364:80: E501 line too long (85 > 79 characters)
src/utils/data/db/consul_db/storage.py:372:80: E501 line too long (97 > 79 characters)
src/utils/data/db/consul_db/storage.py:381:80: E501 line too long (89 > 79 characters)
src/utils/data/db/consul_db/storage.py:388:80: E501 line too long (89 > 79 characters)
src/utils/data/db/consul_db/storage.py:401:80: E501 line too long (85 > 79 characters)
src/utils/data/db/consul_db/storage.py:402:80: E501 line too long (88 > 79 characters)
src/utils/data/db/consul_db/storage.py:412:80: E501 line too long (92 > 79 characters)
src/utils/data/db/consul_db/storage.py:414:80: E501 line too long (81 > 79 characters)
src/utils/data/db/consul_db/storage.py:442:80: E501 line too long (92 > 79 characters)
src/utils/data/db/consul_db/storage.py:444:80: E501 line too long (81 > 79 characters)
src/utils/data/db/consul_db/storage.py:461:21: F541 f-string is missing placeholders
src/utils/data/db/consul_db/storage.py:488:80: E501 line too long (92 > 79 characters)
src/utils/data/db/consul_db/storage.py:490:80: E501 line too long (81 > 79 characters)
src/utils/data/db/consul_db/storage.py:501:80: E501 line too long (94 > 79 characters)
src/utils/data/db/elasticsearch_db/__init__.py:18:1: F401 'cortx.utils.data.db.elasticsearch_db.storage.ElasticSearchDB' imported but unused
src/utils/data/db/elasticsearch_db/storage.py:29:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:30:80: E501 line too long (93 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:105:80: E501 line too long (90 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:107:80: E501 line too long (81 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:108:80: E501 line too long (120 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:125:80: E501 line too long (89 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:186:80: E501 line too long (100 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:201:80: E501 line too long (100 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:223:80: E501 line too long (87 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:226:80: E501 line too long (92 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:233:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:257:80: E501 line too long (82 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:275:80: E501 line too long (94 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:292:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:313:80: E501 line too long (89 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:314:80: E501 line too long (95 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:318:80: E501 line too long (101 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:326:80: E501 line too long (84 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:334:80: E501 line too long (99 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:335:80: E501 line too long (83 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:341:80: E501 line too long (85 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:342:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:345:80: E501 line too long (92 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:347:80: E501 line too long (87 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:351:80: E501 line too long (80 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:354:80: E501 line too long (99 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:363:80: E501 line too long (82 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:366:80: E501 line too long (87 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:380:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:384:80: E501 line too long (90 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:393:80: E501 line too long (102 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:395:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:399:80: E501 line too long (84 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:401:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:403:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:405:80: E501 line too long (81 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:407:80: E501 line too long (82 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:412:80: E501 line too long (101 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:414:80: E501 line too long (116 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:415:80: E501 line too long (116 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:416:80: E501 line too long (82 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:433:80: E501 line too long (91 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:442:80: E501 line too long (108 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:452:80: E501 line too long (82 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:458:80: E501 line too long (93 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:459:80: E501 line too long (84 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:460:80: E501 line too long (85 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:469:80: E501 line too long (89 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:475:80: E501 line too long (85 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:482:80: E501 line too long (92 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:483:80: E501 line too long (88 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:489:80: E501 line too long (89 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:507:80: E501 line too long (92 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:521:80: E501 line too long (84 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:524:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:532:80: E501 line too long (86 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:534:80: E501 line too long (92 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:556:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:561:80: E501 line too long (90 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:565:80: E501 line too long (96 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:580:80: E501 line too long (100 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:582:80: E501 line too long (94 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:589:80: E501 line too long (98 > 79 characters)
src/utils/data/db/elasticsearch_db/storage.py:596:80: E501 line too long (94 > 79 characters)
src/utils/data/db/examples/consul_storage.py:33:80: E501 line too long (94 > 79 characters)
src/utils/data/db/examples/consul_storage.py:56:80: E501 line too long (83 > 79 characters)
src/utils/data/db/examples/consul_storage.py:59:80: E501 line too long (83 > 79 characters)
src/utils/data/db/examples/consul_storage.py:165:80: E501 line too long (88 > 79 characters)
src/utils/data/db/examples/consul_storage.py:196:80: E501 line too long (88 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:33:80: E501 line too long (94 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:56:80: E501 line too long (83 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:59:80: E501 line too long (83 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:154:80: E501 line too long (95 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:178:80: E501 line too long (81 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:190:80: E501 line too long (86 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:204:80: E501 line too long (82 > 79 characters)
src/utils/data/db/examples/elasticsearch_storage.py:218:80: E501 line too long (101 > 79 characters)
src/utils/ha/dm/actions.py:22:24: W292 no newline at end of file
src/utils/ha/dm/decision_maker.py:19:1: F401 'json' imported but unused
src/utils/ha/dm/decision_maker.py:21:1: F401 'asyncio' imported but unused
src/utils/ha/dm/decision_maker.py:28:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/decision_maker.py:47:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_maker.py:57:80: E501 line too long (82 > 79 characters)
src/utils/ha/dm/decision_maker.py:85:73: E211 whitespace before '('
src/utils/ha/dm/decision_maker.py:87:70: E211 whitespace before '('
src/utils/ha/dm/decision_maker.py:93:5: E125 continuation line with same indent as next logical line
src/utils/ha/dm/decision_maker.py:96:5: E125 continuation line with same indent as next logical line
src/utils/ha/dm/decision_maker.py:104:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/decision_maker.py:111:53: E502 the backslash is redundant between brackets
src/utils/ha/dm/decision_maker.py:114:40: E502 the backslash is redundant between brackets
src/utils/ha/dm/decision_maker.py:120:71: E211 whitespace before '('
src/utils/ha/dm/decision_maker.py:127:71: E211 whitespace before '('
src/utils/ha/dm/decision_maker.py:159:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_maker.py:162:78: E502 the backslash is redundant between brackets
src/utils/ha/dm/decision_maker.py:163:21: E128 continuation line under-indented for visual indent
src/utils/ha/dm/decision_maker.py:163:77: E502 the backslash is redundant between brackets
src/utils/ha/dm/decision_maker.py:164:80: E501 line too long (87 > 79 characters)
src/utils/ha/dm/decision_maker.py:197:80: E501 line too long (80 > 79 characters)
src/utils/ha/dm/decision_maker.py:207:73: E211 whitespace before '('
src/utils/ha/dm/decision_maker.py:254:80: E501 line too long (80 > 79 characters)
src/utils/ha/dm/decision_monitor.py:28:1: F401 'cortx.utils.errors.DataAccessInternalError' imported but unused
src/utils/ha/dm/decision_monitor.py:32:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/decision_monitor.py:58:80: E501 line too long (89 > 79 characters)
src/utils/ha/dm/decision_monitor.py:59:21: E128 continuation line under-indented for visual indent
src/utils/ha/dm/decision_monitor.py:66:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_monitor.py:67:21: E128 continuation line under-indented for visual indent
src/utils/ha/dm/decision_monitor.py:76:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_monitor.py:95:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_monitor.py:107:80: E501 line too long (86 > 79 characters)
src/utils/ha/dm/decision_monitor.py:118:80: E501 line too long (81 > 79 characters)
src/utils/ha/dm/decision_monitor.py:120:80: E501 line too long (80 > 79 characters)
src/utils/ha/dm/decision_monitor.py:132:80: E501 line too long (86 > 79 characters)
src/utils/ha/dm/models/base.py:20:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/models/decisiondb.py:22:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/models/node_status.py:21:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/models/node_status.py:38:80: E501 line too long (80 > 79 characters)
src/utils/ha/dm/repository/decisiondb.py:29:1: E302 expected 2 blank lines, found 1
src/utils/ha/dm/repository/decisiondb.py:41:80: E501 line too long (83 > 79 characters)
src/utils/ha/dm/repository/decisiondb.py:43:36: E128 continuation line under-indented for visual indent
src/utils/ha/hac/compile.py:19:1: F401 'sys' imported but unused
src/utils/ha/hac/compile.py:28:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/compile.py:81:80: E501 line too long (81 > 79 characters)
src/utils/ha/hac/compile.py:108:80: E501 line too long (83 > 79 characters)
src/utils/ha/hac/compile.py:109:80: E501 line too long (87 > 79 characters)
src/utils/ha/hac/compile.py:126:80: E501 line too long (85 > 79 characters)
src/utils/ha/hac/compile.py:129:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/compile.py:130:80: E501 line too long (101 > 79 characters)
src/utils/ha/hac/compile.py:130:101: E502 the backslash is redundant between brackets
src/utils/ha/hac/compile.py:131:37: E128 continuation line under-indented for visual indent
src/utils/ha/hac/compile.py:131:38: E225 missing whitespace around operator
src/utils/ha/hac/compile.py:131:39: F821 undefined name 'res'
src/utils/ha/hac/compile.py:131:42: E231 missing whitespace after ','
src/utils/ha/hac/compile.py:131:43: F821 undefined name 'compiled_schema'
src/utils/ha/hac/compile.py:131:72: F821 undefined name 'res'
src/utils/ha/hac/compile.py:131:80: E501 line too long (90 > 79 characters)
src/utils/ha/hac/compile.py:132:80: E501 line too long (101 > 79 characters)
src/utils/ha/hac/compile.py:133:80: E501 line too long (92 > 79 characters)
src/utils/ha/hac/const.py:29:19: E225 missing whitespace around operator
src/utils/ha/hac/const.py:29:35: W292 no newline at end of file
src/utils/ha/hac/generate.py:27:1: F403 'from cortx.utils.schema.payload import *' used; unable to detect undefined names
src/utils/ha/hac/generate.py:30:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/generate.py:45:42: F405 'Yaml' may be undefined, or defined from star imports: cortx.utils.schema.payload
src/utils/ha/hac/generate.py:59:9: F841 local variable 'args' is assigned to but never used
src/utils/ha/hac/generate.py:64:21: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:72:61: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:80:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/generate.py:82:80: E501 line too long (88 > 79 characters)
src/utils/ha/hac/generate.py:94:61: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:94:80: E501 line too long (83 > 79 characters)
src/utils/ha/hac/generate.py:96:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/generate.py:102:80: E501 line too long (81 > 79 characters)
src/utils/ha/hac/generate.py:103:80: E501 line too long (106 > 79 characters)
src/utils/ha/hac/generate.py:106:28: E203 whitespace before ':'
src/utils/ha/hac/generate.py:120:72: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:128:80: E501 line too long (87 > 79 characters)
src/utils/ha/hac/generate.py:129:9: F841 local variable 'args' is assigned to but never used
src/utils/ha/hac/generate.py:137:52: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:137:57: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:137:80: E501 line too long (105 > 79 characters)
src/utils/ha/hac/generate.py:143:80: E501 line too long (85 > 79 characters)
src/utils/ha/hac/generate.py:143:85: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:144:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:144:61: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:145:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:145:64: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:146:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:146:70: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:147:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:148:80: E501 line too long (83 > 79 characters)
src/utils/ha/hac/generate.py:148:83: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:149:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:149:60: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:150:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:151:80: E501 line too long (82 > 79 characters)
src/utils/ha/hac/generate.py:152:80: E501 line too long (87 > 79 characters)
src/utils/ha/hac/generate.py:152:87: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:153:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:153:60: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:154:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:154:77: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:155:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:156:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:156:80: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:157:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:157:80: E501 line too long (85 > 79 characters)
src/utils/ha/hac/generate.py:158:80: E501 line too long (96 > 79 characters)
src/utils/ha/hac/generate.py:158:96: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:159:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:160:80: E501 line too long (88 > 79 characters)
src/utils/ha/hac/generate.py:160:88: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:161:13: E128 continuation line under-indented for visual indent
src/utils/ha/hac/generate.py:184:56: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:184:73: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:185:55: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:185:72: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:186:9: F841 local variable 'e' is assigned to but never used
src/utils/ha/hac/generate.py:193:44: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:193:51: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:193:80: E501 line too long (98 > 79 characters)
src/utils/ha/hac/generate.py:195:42: E231 missing whitespace after ','
src/utils/ha/hac/generate.py:195:80: E501 line too long (106 > 79 characters)
src/utils/ha/hac/generate.py:201:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:203:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:204:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:208:34: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:219:80: E501 line too long (95 > 79 characters)
src/utils/ha/hac/generate.py:220:44: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:220:51: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:220:80: E501 line too long (114 > 79 characters)
src/utils/ha/hac/generate.py:226:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:230:31: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:235:80: E501 line too long (95 > 79 characters)
src/utils/ha/hac/generate.py:236:44: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:236:51: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:236:80: E501 line too long (114 > 79 characters)
src/utils/ha/hac/generate.py:243:80: E501 line too long (80 > 79 characters)
src/utils/ha/hac/generate.py:245:80: E501 line too long (83 > 79 characters)
src/utils/ha/hac/generate.py:249:33: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:258:80: E501 line too long (87 > 79 characters)
src/utils/ha/hac/generate.py:273:39: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:285:44: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:297:44: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:299:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/generate.py:306:80: E501 line too long (89 > 79 characters)
src/utils/ha/hac/generate.py:316:80: E501 line too long (89 > 79 characters)
src/utils/ha/hac/generate.py:316:81: E225 missing whitespace around operator
src/utils/ha/hac/generate.py:331:80: E501 line too long (100 > 79 characters)
src/utils/ha/hac/generate.py:332:80: E501 line too long (96 > 79 characters)
src/utils/ha/hac/generate.py:350:80: E501 line too long (90 > 79 characters)
src/utils/ha/hac/hac.py:25:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/hac.py:42:1: E265 block comment should start with '# '
src/utils/ha/hac/hac.py:43:1: E265 block comment should start with '# '
src/utils/ha/hac/hac.py:59:18: E251 unexpected spaces around keyword / parameter equals
src/utils/ha/hac/hac.py:59:20: E251 unexpected spaces around keyword / parameter equals
src/utils/ha/hac/hac.py:59:37: E222 multiple spaces after operator
src/utils/ha/hac/hac.py:60:28: E251 unexpected spaces around keyword / parameter equals
src/utils/ha/hac/hac.py:60:30: E251 unexpected spaces around keyword / parameter equals
src/utils/ha/hac/hac.py:62:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:64:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:66:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:68:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:70:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:72:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:74:17: E128 continuation line under-indented for visual indent
src/utils/ha/hac/hac.py:92:9: E265 block comment should start with '# '
src/utils/ha/hac/hac.py:95:46: E225 missing whitespace around operator
src/utils/ha/hac/hac.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
src/utils/ha/hac/hac.py:100:80: E501 line too long (84 > 79 characters)
src/utils/ha/hac/validation.py:19:1: F401 'sys' imported but unused
src/utils/ha/hac/validation.py:21:1: F401 'inspect' imported but unused
src/utils/ha/hac/validation.py:26:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/validation.py:36:25: E127 continuation line over-indented for visual indent
src/utils/ha/hac/validation.py:37:29: E127 continuation line over-indented for visual indent
src/utils/ha/hac/validation.py:41:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/validation.py:64:50: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:81:57: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:85:80: E501 line too long (98 > 79 characters)
src/utils/ha/hac/validation.py:92:80: E501 line too long (91 > 79 characters)
src/utils/ha/hac/validation.py:93:38: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:103:80: E501 line too long (91 > 79 characters)
src/utils/ha/hac/validation.py:104:37: E127 continuation line over-indented for visual indent
src/utils/ha/hac/validation.py:104:38: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:106:1: E302 expected 2 blank lines, found 1
src/utils/ha/hac/validation.py:121:80: E501 line too long (86 > 79 characters)
src/utils/ha/hac/validation.py:123:80: E501 line too long (90 > 79 characters)
src/utils/ha/hac/validation.py:123:89: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:124:80: E501 line too long (85 > 79 characters)
src/utils/ha/hac/validation.py:135:80: E501 line too long (94 > 79 characters)
src/utils/ha/hac/validation.py:137:76: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:139:25: E131 continuation line unaligned for hanging indent
src/utils/ha/hac/validation.py:139:26: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:150:80: E501 line too long (92 > 79 characters)
src/utils/ha/hac/validation.py:152:74: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:154:25: E131 continuation line unaligned for hanging indent
src/utils/ha/hac/validation.py:154:26: E225 missing whitespace around operator
src/utils/ha/hac/validation.py:159:5: E303 too many blank lines (2)
src/utils/ha/hac/validation.py:171:80: E501 line too long (83 > 79 characters)
src/utils/message_bus/__init__.py:15:70: W292 no newline at end of file
src/utils/message_bus/__init__.py:15:70: W292 no newline at end of file
src/utils/message_bus/__init__.py:15:70: W292 no newline at end of file
src/utils/message_bus/comm.py:20:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:21:21: E221 multiple spaces before operator
src/utils/message_bus/error.py:22:17: E221 multiple spaces before operator
src/utils/message_bus/error.py:23:15: E221 multiple spaces before operator
src/utils/message_bus/error.py:24:15: E221 multiple spaces before operator
src/utils/message_bus/error.py:25:11: E221 multiple spaces before operator
src/utils/message_bus/error.py:26:16: E221 multiple spaces before operator
src/utils/message_bus/error.py:27:13: E221 multiple spaces before operator
src/utils/message_bus/error.py:28:13: E221 multiple spaces before operator
src/utils/message_bus/error.py:29:17: E221 multiple spaces before operator
src/utils/message_bus/error.py:31:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:37:80: E501 line too long (86 > 79 characters)
src/utils/message_bus/error.py:38:40: E128 continuation line under-indented for visual indent
src/utils/message_bus/error.py:39:80: E501 line too long (85 > 79 characters)
src/utils/message_bus/error.py:41:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:53:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:64:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:76:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:88:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:100:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:112:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/error.py:124:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/message.py:21:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/message.py:22:80: E501 line too long (88 > 79 characters)
src/utils/message_bus/message.py:25:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/message.py:27:5: E301 expected 1 blank line, found 0
src/utils/message_bus/message.py:28:32: E711 comparison to None should be 'if cond is None:'
src/utils/message_bus/message.py:33:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/message.py:46:9: E265 block comment should start with '# '
src/utils/message_bus/message.py:55:13: E265 block comment should start with '# '
src/utils/message_bus/message.py:56:13: E265 block comment should start with '# '
src/utils/message_bus/message.py:56:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/message.py:57:13: E265 block comment should start with '# '
src/utils/message_bus/message.py:71:54: E502 the backslash is redundant between brackets
src/utils/message_bus/message.py:72:13: E128 continuation line under-indented for visual indent
src/utils/message_bus/message.py:77:80: E501 line too long (102 > 79 characters)
src/utils/message_bus/message.py:79:80: E501 line too long (104 > 79 characters)
src/utils/message_bus/message.py:80:28: E225 missing whitespace around operator
src/utils/message_bus/message.py:85:60: E502 the backslash is redundant between brackets
src/utils/message_bus/message.py:86:13: E128 continuation line under-indented for visual indent
src/utils/message_bus/message.py:87:75: E502 the backslash is redundant between brackets
src/utils/message_bus/message.py:88:13: E128 continuation line under-indented for visual indent
src/utils/message_bus/message.py:92:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/message.py:101:80: E501 line too long (85 > 79 characters)
src/utils/message_bus/message.py:110:46: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:110:48: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:110:71: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:110:73: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:110:80: E501 line too long (91 > 79 characters)
src/utils/message_bus/message.py:110:91: E502 the backslash is redundant between brackets
src/utils/message_bus/message.py:111:21: E128 continuation line under-indented for visual indent
src/utils/message_bus/message.py:111:34: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:111:36: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:113:46: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:113:48: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:113:70: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:113:72: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:113:80: E501 line too long (89 > 79 characters)
src/utils/message_bus/message.py:113:89: E502 the backslash is redundant between brackets
src/utils/message_bus/message.py:114:21: E128 continuation line under-indented for visual indent
src/utils/message_bus/message.py:114:34: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:114:36: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:114:71: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:114:73: E251 unexpected spaces around keyword / parameter equals
src/utils/message_bus/message.py:114:80: E501 line too long (93 > 79 characters)
src/utils/message_bus/message.py:158:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/tcp/__init__.py:17:1: W391 blank line at end of file
src/utils/message_bus/tcp/kafka/__init__.py:17:1: W391 blank line at end of file
src/utils/message_bus/tcp/kafka/kafka.py:20:72: E231 missing whitespace after ','
src/utils/message_bus/tcp/kafka/kafka.py:20:80: E501 line too long (88 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:27:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/tcp/kafka/kafka.py:55:80: E501 line too long (83 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:58:80: E501 line too long (104 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:58:104: E502 the backslash is redundant between brackets
src/utils/message_bus/tcp/kafka/kafka.py:59:25: E128 continuation line under-indented for visual indent
src/utils/message_bus/tcp/kafka/kafka.py:63:80: E501 line too long (81 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:63:81: E502 the backslash is redundant between brackets
src/utils/message_bus/tcp/kafka/kafka.py:64:21: E128 continuation line under-indented for visual indent
src/utils/message_bus/tcp/kafka/kafka.py:67:80: E501 line too long (86 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:76:44: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:80:41: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:85:80: E501 line too long (86 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:107:71: E502 the backslash is redundant between brackets
src/utils/message_bus/tcp/kafka/kafka.py:108:21: E128 continuation line under-indented for visual indent
src/utils/message_bus/tcp/kafka/kafka.py:120:17: E265 block comment should start with '# '
src/utils/message_bus/tcp/kafka/kafka.py:121:17: E265 block comment should start with '# '
src/utils/message_bus/tcp/kafka/kafka.py:124:80: E501 line too long (85 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:125:80: E501 line too long (85 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:139:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/tcp/kafka/kafka.py:159:80: E501 line too long (83 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:162:80: E501 line too long (104 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:162:104: E502 the backslash is redundant between brackets
src/utils/message_bus/tcp/kafka/kafka.py:163:25: E128 continuation line under-indented for visual indent
src/utils/message_bus/tcp/kafka/kafka.py:167:80: E501 line too long (81 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:167:81: E502 the backslash is redundant between brackets
src/utils/message_bus/tcp/kafka/kafka.py:168:21: E128 continuation line under-indented for visual indent
src/utils/message_bus/tcp/kafka/kafka.py:171:80: E501 line too long (86 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:180:31: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:181:40: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:182:38: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:183:40: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:184:41: E203 whitespace before ':'
src/utils/message_bus/tcp/kafka/kafka.py:186:80: E501 line too long (91 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:189:80: E501 line too long (86 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:224:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/tcp/kafka/kafka.py:240:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:243:5: E303 too many blank lines (2)
src/utils/message_bus/tcp/kafka/kafka.py:266:1: E302 expected 2 blank lines, found 1
src/utils/message_bus/tcp/kafka/kafka.py:276:80: E501 line too long (83 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:288:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:298:80: E501 line too long (91 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:301:80: E501 line too long (82 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:304:80: E501 line too long (80 > 79 characters)
src/utils/message_bus/tcp/kafka/kafka.py:313:80: E501 line too long (80 > 79 characters)
src/utils/product_features/model.py:19:1: F401 'schematics.types.ListType' imported but unused
src/utils/product_features/model.py:21:1: E302 expected 2 blank lines, found 1
src/utils/product_features/model.py:45:80: E501 line too long (88 > 79 characters)
src/utils/product_features/unsupported_features.py:18:1: F401 'os' imported but unused
src/utils/product_features/unsupported_features.py:23:1: F401 'cortx.utils.log.Log' imported but unused
src/utils/product_features/unsupported_features.py:25:1: F401 'cortx.utils.schema.payload.Json' imported but unused
src/utils/product_features/unsupported_features.py:28:1: E302 expected 2 blank lines, found 1
src/utils/product_features/unsupported_features.py:43:80: E501 line too long (90 > 79 characters)
src/utils/product_features/unsupported_features.py:52:60: E251 unexpected spaces around keyword / parameter equals
src/utils/product_features/unsupported_features.py:52:62: E251 unexpected spaces around keyword / parameter equals
src/utils/product_features/unsupported_features.py:53:9: E128 continuation line under-indented for visual indent
src/utils/product_features/unsupported_features.py:53:9: E125 continuation line with same indent as next logical line
src/utils/product_features/unsupported_features.py:53:21: E251 unexpected spaces around keyword / parameter equals
src/utils/product_features/unsupported_features.py:53:23: E251 unexpected spaces around keyword / parameter equals
src/utils/product_features/unsupported_features.py:57:80: E501 line too long (88 > 79 characters)
src/utils/product_features/unsupported_features.py:75:80: E501 line too long (80 > 79 characters)
src/utils/schema/conf.py:19:1: F403 'from cortx.utils.schema.payload import *' used; unable to detect undefined names
src/utils/schema/conf.py:21:1: E302 expected 2 blank lines, found 1
src/utils/schema/conf.py:32:37: E225 missing whitespace around operator
src/utils/schema/conf.py:33:59: E225 missing whitespace around operator
src/utils/schema/conf.py:35:22: E712 comparison to False should be 'if cond is False:' or 'if not cond:'
src/utils/schema/conf.py:38:33: F405 'Payload' may be undefined, or defined from star imports: cortx.utils.schema.payload
src/utils/schema/conf.py:43:80: E501 line too long (108 > 79 characters)
src/utils/schema/conf.py:52:31: F405 '_payloads' may be undefined, or defined from star imports: cortx.utils.schema.payload
src/utils/schema/conf.py:64:80: E501 line too long (88 > 79 characters)
src/utils/schema/conf.py:96:80: E501 line too long (81 > 79 characters)
src/utils/schema/database.py:50:80: E501 line too long (89 > 79 characters)
src/utils/schema/payload.py:18:1: F401 'errno' imported but unused
src/utils/schema/payload.py:18:1: F401 'sys' imported but unused
src/utils/schema/payload.py:18:10: E401 multiple imports on one line
src/utils/schema/payload.py:19:12: E401 multiple imports on one line
src/utils/schema/payload.py:49:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:63:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:77:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:91:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:106:21: E128 continuation line under-indented for visual indent
src/utils/schema/payload.py:108:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:124:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:136:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:159:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:175:1: E302 expected 2 blank lines, found 1
src/utils/schema/payload.py:197:35: E701 multiple statements on one line (colon)
src/utils/schema/payload.py:233:1: E302 expected 2 blank lines, found 1
src/utils/security/cipher.py:33:80: E501 line too long (80 > 79 characters)
src/utils/security/cipher.py:40:80: E501 line too long (82 > 79 characters)
src/utils/security/cipher.py:48:80: E501 line too long (82 > 79 characters)
src/utils/security/cipher.py:54:38: F541 f-string is missing placeholders
src/utils/security/cipher.py:63:80: E501 line too long (92 > 79 characters)
src/utils/security/cipher.py:65:80: E501 line too long (100 > 79 characters)
src/utils/security/key_manager.py:37:80: E501 line too long (82 > 79 characters)
src/utils/security/key_manager.py:68:80: E501 line too long (83 > 79 characters)
src/utils/security/secure_storage.py:60:80: E501 line too long (88 > 79 characters)
src/utils/security/secure_storage.py:64:80: E501 line too long (83 > 79 characters)
src/utils/security/secure_storage.py:73:80: E501 line too long (81 > 79 characters)
src/utils/security/secure_storage.py:83:80: E501 line too long (100 > 79 characters)
src/utils/security/secure_storage.py:84:80: E501 line too long (84 > 79 characters)
src/utils/security/secure_storage.py:91:80: E501 line too long (88 > 79 characters)
src/utils/security/secure_storage.py:110:80: E501 line too long (101 > 79 characters)
src/utils/validator/v_consul.py:56:21: E128 continuation line under-indented for visual indent
src/utils/validator/v_consul.py:60:17: E128 continuation line under-indented for visual indent
src/utils/validator/v_consul.py:67:17: E128 continuation line under-indented for visual indent
src/utils/validator/error.py:20:80: E501 line too long (85 > 79 characters)
src/utils/validator/service.py:62:21: E128 continuation line under-indented for visual indent
src/utils/validator/service.py:62:80: E501 line too long (94 > 79 characters)
src/utils/validator/service.py:65:80: E501 line too long (83 > 79 characters)
src/utils/validator/service.py:66:17: E128 continuation line under-indented for visual indent
src/utils/validator/service.py:69:80: E501 line too long (94 > 79 characters)
src/utils/validator/service.py:72:80: E501 line too long (84 > 79 characters)
src/utils/validator/service.py:73:17: E128 continuation line under-indented for visual indent
src/utils/validator/service.py:74:1: W391 blank line at end of file
src/utils/validator/v_bmc.py:40:80: E501 line too long (88 > 79 characters)
src/utils/validator/v_bmc.py:43:49: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:43:66: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:51:5: E303 too many blank lines (2)
src/utils/validator/v_bmc.py:64:80: E501 line too long (98 > 79 characters)
src/utils/validator/v_bmc.py:67:49: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:67:66: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:75:5: E303 too many blank lines (2)
src/utils/validator/v_bmc.py:85:80: E501 line too long (93 > 79 characters)
src/utils/validator/v_bmc.py:90:49: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:90:66: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:95:5: E303 too many blank lines (2)
src/utils/validator/v_bmc.py:113:80: E501 line too long (97 > 79 characters)
src/utils/validator/v_bmc.py:116:80: E501 line too long (93 > 79 characters)
src/utils/validator/v_bmc.py:117:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_bmc.py:119:38: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:119:80: E501 line too long (83 > 79 characters)
src/utils/validator/v_bmc.py:122:5: E303 too many blank lines (2)
src/utils/validator/v_bmc.py:129:80: E501 line too long (102 > 79 characters)
src/utils/validator/v_bmc.py:132:53: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:132:70: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:140:5: E303 too many blank lines (2)
src/utils/validator/v_bmc.py:143:80: E501 line too long (96 > 79 characters)
src/utils/validator/v_bmc.py:148:80: E501 line too long (102 > 79 characters)
src/utils/validator/v_bmc.py:153:49: E231 missing whitespace after ','
src/utils/validator/v_bmc.py:153:66: E231 missing whitespace after ','
src/utils/validator/v_elasticsearch.py:41:80: E501 line too long (84 > 79 characters)
src/utils/validator/v_elasticsearch.py:45:1: W391 blank line at end of file
src/utils/validator/commands.py:19:1: F401 'errno' imported but unused
src/utils/validator/v_storage.py:41:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_storage.py:46:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_storage.py:51:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:55:80: E501 line too long (93 > 79 characters)
src/utils/validator/v_storage.py:58:80: E501 line too long (91 > 79 characters)
src/utils/validator/v_storage.py:79:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:90:80: E501 line too long (85 > 79 characters)
src/utils/validator/v_storage.py:98:80: E501 line too long (83 > 79 characters)
src/utils/validator/v_storage.py:116:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:122:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_storage.py:123:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:129:80: E501 line too long (101 > 79 characters)
src/utils/validator/v_storage.py:136:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:145:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_storage.py:158:80: E501 line too long (89 > 79 characters)
src/utils/validator/v_storage.py:162:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_storage.py:172:80: E501 line too long (83 > 79 characters)
src/utils/validator/v_storage.py:173:80: E501 line too long (80 > 79 characters)
src/utils/validator/v_storage.py:175:80: E501 line too long (90 > 79 characters)
src/utils/validator/v_network.py:57:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_network.py:87:80: E501 line too long (82 > 79 characters)
src/utils/validator/v_network.py:152:80: E501 line too long (81 > 79 characters)
src/utils/validator/v_network.py:153:80: E501 line too long (95 > 79 characters)
src/utils/validator/v_network.py:155:80: E501 line too long (82 > 79 characters)
src/utils/validator/v_network.py:163:80: E501 line too long (91 > 79 characters)
src/utils/validator/v_network.py:166:80: E501 line too long (93 > 79 characters)
src/utils/validator/v_network.py:171:80: E501 line too long (91 > 79 characters)
src/utils/validator/v_network.py:174:80: E501 line too long (82 > 79 characters)
src/utils/validator/validate.py:45:80: E501 line too long (84 > 79 characters)
src/utils/appliance_info/appliance.py:20:1: E302 expected 2 blank lines, found 1
src/utils/appliance_info/appliance.py:22:80: E501 line too long (85 > 79 characters)
src/utils/appliance_info/appliance.py:33:80: E501 line too long (81 > 79 characters)
src/utils/appliance_info/appliance.py:42:41: E701 multiple statements on one line (colon)
src/utils/appliance_info/appliance.py:43:80: E501 line too long (99 > 79 characters)
src/utils/appliance_info/appliance.py:62:80: E501 line too long (82 > 79 characters)
src/utils/appliance_info/appliance.py:68:80: E501 line too long (81 > 79 characters)
src/utils/kvstore/error.py:19:80: E501 line too long (85 > 79 characters)

CVE-2020-1747 (High) detected in PyYAML-5.1.2.tar.gz

CVE-2020-1747 - High Severity Vulnerability

Vulnerable Library - PyYAML-5.1.2.tar.gz

YAML parser and emitter for Python

Library home page: https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz

Path to dependency file: cortx-utils/py-utils

Path to vulnerable library: cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt,cortx-utils/py-utils/src/utils/setup/kafka/kafka,cortx-utils/py-utils/src/setup/utils

Dependency Hierarchy:

  • PyYAML-5.1.2.tar.gz (Vulnerable Library)

Found in HEAD commit: 95a7cfa4303cfa1c62890181e05a0fe2c6a7c371

Found in base branch: main

Vulnerability Details

A vulnerability was discovered in the PyYAML library in versions before 5.3.1, where it is susceptible to arbitrary code execution when it processes untrusted YAML files through the full_load method or with the FullLoader loader. Applications that use the library to process untrusted input may be vulnerable to this flaw. An attacker could use this flaw to execute arbitrary code on the system by abusing the python/object/new constructor.

Publish Date: 2020-03-24

URL: CVE-2020-1747

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-6757-jp84-gxfx

Release Date: 2020-03-24

Fix Resolution: pyyaml - 5.3.1


⛑️ Automatic Remediation is available for this issue

Problem: ValidatorCommandFactory has static methods only

The word "factory" is misleading (a developer can't use it as a factory).

Wider problem description: usage of "Factory" term is unjustified and misleads the developers.

"Abstract Factory" is a well-known term from classical GoF book. Its idea is that a developer can inherit a factory class, override the factory method and thus another type of instances can be generated. And other components will not require modifications and will not be broken by this change.

ValidatorCommandFactory has static methods only. Static methods can't be overriden in subclasses.

The word "factory" adds a flavor of OOP without any real benefit or flexibility. Just a piece of hard-code with a nice name.

Why is this approach isn't justified.

  1. Since the method is static, the code is tightly coupled (i.e. "main" function references the class explicitly, so there is no way to replace that class with its subclasses):
def main(argv):
    try:
        description = "CORTX Validator command"
        command = ValidatorCommandFactory.get_command(description, argv[1:])

        command.process()
  1. The factory uses argparse library to map the first CLI parameter to a command instance. But the rest of the command line is parsed without the help of argparse, i.e. manually. As a result, every time a command is added, "help" text must be updated in ValidatorCommandFactory code.
  2. Such a code doesn't plant proper habits in young developers. It is strange that such thing happens in a "generic" code base that is intended to be reused by a number of other components.

CVE-2021-41496 (Medium) detected in numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl - autoclosed

CVE-2021-41496 - Medium Severity Vulnerability

Vulnerable Library - numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

NumPy is the fundamental package for array computing with Python.

Library home page: https://files.pythonhosted.org/packages/08/d6/a6aaa29fea945bc6c61d11f6e0697b325ff7446de5ffd62c2fa02f627048/numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

Path to dependency file: /py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: /py-utils/src/utils/setup/kafka/kafka,/py-utils/test,/py-utils/src/setup/utils,/py-utils/src/utils/setup/openldap/openldap,/py-utils

Dependency Hierarchy:

  • numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 354062caae2aed0e48005a942cb5b623db91ae9e

Found in base branch: main

Vulnerability Details

** DISPUTED ** Buffer overflow in the array_from_pyobj function of fortranobject.c in NumPy < 1.19, which allows attackers to conduct a Denial of Service attacks by carefully constructing an array with negative values. NOTE: The vendor does not agree this is a vulnerability; the negative dimensions can only be created by an already privileged user (or internally).
Mend Note: After conducting further research, Mend has determined that numpy versions before 1.22.0 are vulnerable to CVE-2021-41496

Publish Date: 2021-12-17

URL: CVE-2021-41496

CVSS 3 Score Details (5.5)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Local
    • Attack Complexity: Low
    • Privileges Required: Low
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41496

Release Date: 2021-12-17

Fix Resolution: numpy - 1.22.3


⛑️ Automatic Remediation is available for this issue

return values are different type for success and failure

return self._output, self._err, self._returncode

        self._output = self._cp.stdout         #byte type
            self._err = self._cp.stderr       #byte type
            self._returncode = self._cp.returncode
        except Exception as err:
            self._err = "SubProcess Error: " + str(err)  #string
            self._output = ""                                        #string
            self._returncode = -1
        return self._output, self._err, self._returncode **#issue: byte type or string**

cmd = self._cmd.split() if type(self._cmd) is str else self._cmd

pipeline command like rpm -qa|grep cortx is not working properly.

Root user to build cortx-utils/py-utils ?

Hi,

Do we required root user for building py-utils ?

I had using sudo and manage to success install py-utils

However, some install command need to use sudo :

pip3 install wheel -> sudo pip3 install wheel

pip3 install cortx_py_utils-1.0.0-py3-none-any.whl -> sudo pip3 install cortx_py_utils-1.0.0-py3-none-any.whl

Maybe could update this info to installation guide ?

CVE-2021-33430 (Medium) detected in numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

CVE-2021-33430 - Medium Severity Vulnerability

Vulnerable Library - numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

NumPy is the fundamental package for array computing with Python.

Library home page: https://files.pythonhosted.org/packages/08/d6/a6aaa29fea945bc6c61d11f6e0697b325ff7446de5ffd62c2fa02f627048/numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

Path to dependency file: /py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: /py-utils/src/utils/setup/kafka/kafka,/py-utils/test,/py-utils/src/setup/utils,/py-utils/src/utils/setup/openldap/openldap,/py-utils

Dependency Hierarchy:

  • numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 354062caae2aed0e48005a942cb5b623db91ae9e

Found in base branch: main

Vulnerability Details

** DISPUTED ** A Buffer Overflow vulnerability exists in NumPy 1.9.x in the PyArray_NewFromDescr_int function of ctors.c when specifying arrays of large dimensions (over 32) from Python code, which could let a malicious user cause a Denial of Service. NOTE: The vendor does not agree this is a vulneraility; In (very limited) circumstances a user may be able provoke the buffer overflow, the user is most likely already privileged to at least provoke denial of service by exhausting memory. Triggering this further requires the use of uncommon API (complicated structured dtypes), which is very unlikely to be available to an unprivileged user.
Mend Note: After conducting further research, Mend has determined that numpy versions before 1.21.0 are vulnerable to CVE-2021-33430

Publish Date: 2021-12-17

URL: CVE-2021-33430

CVSS 3 Score Details (5.3)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: Low
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://nvd.nist.gov/vuln/detail/CVE-2021-33430

Release Date: 2021-12-17

Fix Resolution: 1.21.0


⛑️ Automatic Remediation is available for this issue

$ sudo yum install openssl-devel $ sudo yum install libffi-devel error

[root@ssc-vm-1061 cortx]# yum install openssl-devel
Loaded plugins: enabled_repos_upload, package_upload, product-id, search-
: disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscripti on-manager to register.
No package openssl-devel available.
Error: Nothing to do
Uploading Enabled Repositories Report
[root@ssc-vm-1061 cortx]# yum install libffi-devel
Loaded plugins: enabled_repos_upload, package_upload, product-id, search-
: disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscripti on-manager to register.
No package libffi-devel available.
Error: Nothing to do
Uploading Enabled Repositories Report

Problem: invalid imports in Validator Framework

Commands in Validator Framework seem to be copied and pasted by the developers and the actual error is being repeated with every new pull request.

In general case, every Command class structure is quite the same to shown below:

class ElasticsearchVCommand(VCommand):
    """Elasticsearch related commands."""

    name = "elasticsearch"

    def __init__(self, args):
        super(ElasticsearchVCommand, self).__init__(args)

        from v_elasticsearch import ElasticsearchV

        self._elasticsearch = ElasticsearchV()

    def process(self):
        """Validate elasticsearch status."""

        self._elasticsearch.validate(self.v_type, self.args)

Please notice the line with import.

Problems:

  1. Absolute import is invalid. There is no such a package named "v_elasticsearch". Proper way to import the module is one of:
    1. from .v_elasticsearch import ElasticsearchV (relative import; please notice the point in the package name)
    2. from cortx.utils.v_elasticsearch import ElasticsearchV
  2. Imports must be placed at the top of the file (see PEP-8 standard).

Note: the same mistake exists in every Command class, not only in ElasticsearchVCommand.

Indentation is not inclined

perfc_trace_inii(PFT_M0STORE_OBJ_OPEN, PEM_NFS_TO_MOTR);

I see in all but one function, int rc being initialized?

Is there something special about that function?

For the average github user, it's impossible to infer it. I see in rest of the code base, int rc as seldom initialized.

CVE-2020-25659 (Medium) detected in cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

CVE-2020-25659 - Medium Severity Vulnerability

Vulnerable Library - cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

cryptography is a package which provides cryptographic recipes and primitives to Python developers.

Library home page: https://files.pythonhosted.org/packages/ca/9a/7cece52c46546e214e10811b36b2da52ce1ea7fa203203a629b8dfadad53/cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

Path to dependency file: cortx-utils/py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: cortx-utils/py-utils/src/utils/setup/kafka/kafka,cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt,cortx-utils/py-utils/src/setup/utils

Dependency Hierarchy:

  • cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 95a7cfa4303cfa1c62890181e05a0fe2c6a7c371

Found in base branch: main

Vulnerability Details

python-cryptography 3.2 is vulnerable to Bleichenbacher timing attacks in the RSA decryption API, via timed processing of valid PKCS#1 v1.5 ciphertext.

Publish Date: 2021-01-11

URL: CVE-2020-25659

CVSS 3 Score Details (5.9)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: None
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-hggm-jpg3-v476

Release Date: 2020-09-17

Fix Resolution: 3.2


⛑️ Automatic Remediation is available for this issue

py-utils require Python 3.7 or higher

Just noticed that nowadays py-utils fails to build locally with Python 3.6.8 with the error as follows:

$ python ./setup.py develop
<...>
Installed /home/720599/projects/cortx-utils/py-utils
Processing dependencies for cortx-py-utils==1.0.0
Searching for numpy>=1.11
Reading https://pypi.org/simple/numpy/
Downloading https://files.pythonhosted.org/packages/77/17/b7ad8757cca32031cd6440b1e79403f9b5e7b0b68d57df40cb72eba311ba/numpy-1.20.0rc2.zip#sha256=793383d52f79c785ad2e7cf24b064f8ff5041ee0e44cef34368918c1b89e9d58
Best match: numpy 1.20.0rc2
Processing numpy-1.20.0rc2.zip
Writing /tmp/easy_install-vqc2godw/numpy-1.20.0rc2/setup.cfg
Running numpy-1.20.0rc2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vqc2godw/numpy-1.20.0rc2/egg-dist-tmp-a9bhgtcy
Traceback (most recent call last):
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/home/720599/projects/hare/.py3venv/lib64/python3.6/site-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-vqc2godw/numpy-1.20.0rc2/setup.py", line 30, in <module>

RuntimeError: Python version >= 3.7 required.

It turns out that numpy is a transitive dependency required by matplotlib:

  - matplotlib [required: ==3.1.3, installed: 3.1.3]
    - cycler [required: >=0.10, installed: ?]
    - kiwisolver [required: >=1.0.1, installed: ?]
    - numpy [required: >=1.11, installed: ?]
    - pyparsing [required: >=2.0.1,!=2.1.6,!=2.1.2,!=2.0.4, installed: 3.0.0b2]
    - python-dateutil [required: >=2.1, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]

Why it is a problem

  1. Other components (like Hare) are stick to Python 3.6. If we change the python version in Cortx stack, that decision must be applied to all components and definitely should not happen silently.
  2. It seems like other parts of py-utils are not adapted to this newer Python version. For instance, https://github.com/Seagate/cortx-utils/blob/d78a85c34dd6e79a847d0ae20d893220590b378d/py-utils/utils-post-install uses pip3.6 (not pip or pip3 or pip3.7)

CVE-2020-14343 (High) detected in PyYAML-5.1.2.tar.gz

CVE-2020-14343 - High Severity Vulnerability

Vulnerable Library - PyYAML-5.1.2.tar.gz

YAML parser and emitter for Python

Library home page: https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz

Path to dependency file: cortx-utils/py-utils

Path to vulnerable library: cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt,cortx-utils/py-utils/src/utils/setup/kafka/kafka,cortx-utils/py-utils/src/setup/utils

Dependency Hierarchy:

  • PyYAML-5.1.2.tar.gz (Vulnerable Library)

Found in HEAD commit: 95a7cfa4303cfa1c62890181e05a0fe2c6a7c371

Found in base branch: main

Vulnerability Details

A vulnerability was discovered in the PyYAML library in versions before 5.4, where it is susceptible to arbitrary code execution when it processes untrusted YAML files through the full_load method or with the FullLoader loader. Applications that use the library to process untrusted input may be vulnerable to this flaw. This flaw allows an attacker to execute arbitrary code on the system by abusing the python/object/new constructor. This flaw is due to an incomplete fix for CVE-2020-1747.

Publish Date: 2021-02-09

URL: CVE-2020-14343

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14343

Release Date: 2021-02-09

Fix Resolution: PyYAML - 5.4


⛑️ Automatic Remediation is available for this issue

CVE-2019-20477 (High) detected in PyYAML-5.1.2.tar.gz

CVE-2019-20477 - High Severity Vulnerability

Vulnerable Library - PyYAML-5.1.2.tar.gz

YAML parser and emitter for Python

Library home page: https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz

Path to dependency file: cortx-utils/py-utils

Path to vulnerable library: cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt,cortx-utils/py-utils/src/utils/setup/kafka/kafka,cortx-utils/py-utils/src/setup/utils

Dependency Hierarchy:

  • PyYAML-5.1.2.tar.gz (Vulnerable Library)

Found in HEAD commit: 95a7cfa4303cfa1c62890181e05a0fe2c6a7c371

Found in base branch: main

Vulnerability Details

PyYAML 5.1 through 5.1.2 has insufficient restrictions on the load and load_all functions because of a class deserialization issue, e.g., Popen is a class in the subprocess module. NOTE: this issue exists because of an incomplete fix for CVE-2017-18342.

Publish Date: 2020-02-19

URL: CVE-2019-20477

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-20477

Release Date: 2020-02-19

Fix Resolution: 5.2


⛑️ Automatic Remediation is available for this issue

Inaccurate info on Kafka-Server-Setup

Hi,

I am install kafka by follow the documentation and found that in section Kafka 1 node Setup

cd centos-7.8.2003-2.0.0-latest/commons/kafka

should be cd centos-7.8.2003-2.0.0-8/commons/kafka or cd centos-7.8.2003-2.0.0-<latest>/commons/kafka instead.

This should provide more accurate info.

Problem: mypy found 84 errors in py-utils

mypy is a well-known tool for Python source code static validation. Primarily it helps to find the issues with the types but since it tries to analyze the semantics of the sources it can also highlight some other problems (like impossible imports, non-existent keys de-referencing etc).

In py-utils it found 84 errors. At least some of them deserve attention.

Full output:

mypy cortx
cortx/utils/data/access/base_model.py:16: error: Skipping analyzing 'schematics.models': found module but no type hints or library stubs
cortx/utils/validator/commands.py:55: error: Cannot find implementation or library stub for module named 'v_network'
cortx/utils/validator/commands.py:73: error: Cannot find implementation or library stub for module named 'v_consul'
cortx/utils/validator/commands.py:91: error: Cannot find implementation or library stub for module named 'v_storage'
cortx/utils/validator/commands.py:109: error: Cannot find implementation or library stub for module named 'v_salt'
cortx/utils/validator/commands.py:127: error: Cannot find implementation or library stub for module named 'v_bmc'
cortx/utils/validator/commands.py:145: error: Cannot find implementation or library stub for module named 'v_elasticsearch'
cortx/utils/product_features/model.py:19: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/product_features/model.py:22: error: Incompatible types in assignment (expression has type "str", base class "BaseModel" defined the type as "None")
cortx/utils/ha/hac/validation.py:22: error: Skipping analyzing 'networkx': found module but no type hints or library stubs
cortx/utils/ha/hac/compile.py:21: error: Skipping analyzing 'networkx': found module but no type hints or library stubs
cortx/utils/ha/hac/compile.py:22: error: Skipping analyzing 'matplotlib.pyplot': found module but no type hints or library stubs
cortx/utils/ha/hac/compile.py:22: error: Skipping analyzing 'matplotlib': found module but no type hints or library stubs
cortx/utils/log.py:72: error: Argument "address" to "SysLogHandler" has incompatible type "Tuple[str, str]"; expected "Union[Tuple[str, int], str]"
cortx/utils/data/access/queries.py:21: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/data/access/queries.py:148: error: "Data" has no attribute "group_by"
cortx/utils/amqp/rabbitmq/amqp.py:20: error: Cannot find implementation or library stub for module named 'pika'
cortx/utils/amqp/rabbitmq/amqp.py:20: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports
cortx/utils/amqp/rabbitmq/amqp.py:24: error: Cannot find implementation or library stub for module named 'pika.exceptions'
cortx/utils/cron.py:19: error: Cannot find implementation or library stub for module named 'crontab'
cortx/utils/security/cipher.py:21: error: Module 'cryptography.fernet' has no attribute 'InvalidSignature'
cortx/utils/schema/conf.py:23: error: Need type annotation for '_payloads' (hint: "_payloads: Dict[<type>, <type>] = ...")
cortx/utils/security/secure_storage.py:16: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/security/secure_storage.py:30: error: Incompatible types in assignment (expression has type "str", base class "BaseModel" defined the type as "None")
cortx/utils/security/secure_storage.py:65: error: Incompatible return value type (got "Optional[Any]", expected "NamedEncryptedBytes")
cortx/utils/message_bus/tcp/kafka/kafka.py:19: error: Skipping analyzing 'confluent_kafka': found module but no type hints or library stubs
cortx/utils/data/db/generic_storage.py:20: error: Skipping analyzing 'schematics.exceptions': found module but no type hints or library stubs
cortx/utils/data/db/generic_storage.py:50: error: "None" has no attribute "keys"
cortx/utils/data/db/generic_storage.py:51: error: "None" has no attribute "keys"
cortx/utils/data/db/generic_storage.py:54: error: "None" has no attribute "keys"
cortx/utils/data/db/generic_storage.py:55: error: "None" has no attribute "keys"
cortx/utils/data/db/generic_storage.py:85: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:91: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:119: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:125: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:130: error: Missing return statement
cortx/utils/data/db/generic_storage.py:139: error: "None" has no attribute "keys"
cortx/utils/data/db/generic_storage.py:146: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:159: error: "GenericDataBase" has no attribute "_model"
cortx/utils/data/db/generic_storage.py:165: error: "GenericDataBase" has no attribute "_model"
cortx/utils/ha/dm/models/node_status.py:18: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/ha/dm/models/node_status.py:22: error: Incompatible types in assignment (expression has type "str", base class "BaseModel" defined the type as "None")
cortx/utils/ha/dm/models/decisiondb.py:18: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/ha/dm/models/decisiondb.py:23: error: Incompatible types in assignment (expression has type "str", base class "BaseModel" defined the type as "None")
cortx/utils/data/db/elasticsearch_db/storage.py:25: error: Skipping analyzing 'elasticsearch_dsl': found module but no type hints or library stubs
cortx/utils/data/db/elasticsearch_db/storage.py:26: error: Skipping analyzing 'elasticsearch_dsl.response': found module but no type hints or library stubs
cortx/utils/data/db/elasticsearch_db/storage.py:27: error: Skipping analyzing 'elasticsearch': found module but no type hints or library stubs
cortx/utils/data/db/elasticsearch_db/storage.py:29: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/data/db/elasticsearch_db/storage.py:32: error: Skipping analyzing 'schematics.exceptions': found module but no type hints or library stubs
cortx/utils/data/db/elasticsearch_db/storage.py:209: error: Need type annotation for '_mapping'
cortx/utils/data/db/elasticsearch_db/storage.py:248: error: Dict entry 0 has incompatible type "str": "str"; expected "str": "Dict[str, Dict[Any, Any]]"
cortx/utils/data/db/elasticsearch_db/storage.py:249: error: Dict entry 1 has incompatible type "str": "str"; expected "str": "Dict[str, Dict[Any, Any]]"
cortx/utils/data/db/elasticsearch_db/storage.py:363: error: "Type[ElasticSearchDB]" has no attribute "pool"
cortx/utils/data/db/elasticsearch_db/storage.py:366: error: Argument 4 to "ElasticSearchDB" has incompatible type "None"; expected "ThreadPoolExecutor"
cortx/utils/data/db/elasticsearch_db/storage.py:412: error: Value of type "None" is not indexable
cortx/utils/data/db/elasticsearch_db/storage.py:412: error: Argument 2 to "next" has incompatible type "None"; expected "str"
cortx/utils/data/db/elasticsearch_db/storage.py:415: error: Value of type "None" is not indexable
cortx/utils/data/db/elasticsearch_db/storage.py:416: error: Incompatible types in assignment (expression has type "Dict[Any, Any]", variable has type "None")
cortx/utils/data/db/elasticsearch_db/storage.py:416: error: "None" has no attribute "items"
cortx/utils/data/db/elasticsearch_db/storage.py:440: error: "None" has no attribute "__iter__" (not iterable)
cortx/utils/data/db/consul_db/storage.py:28: error: Skipping analyzing 'consul.aio': found module but no type hints or library stubs
cortx/utils/data/db/consul_db/storage.py:29: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/data/db/consul_db/storage.py:30: error: Skipping analyzing 'schematics.exceptions': found module but no type hints or library stubs
cortx/utils/data/db/consul_db/storage.py:170: error: Item "str" of "Union[Template, str]" has no attribute "substitute"
cortx/utils/data/db/consul_db/storage.py:172: error: Item "str" of "Union[Template, str]" has no attribute "substitute"
cortx/utils/data/db/consul_db/storage.py:229: error: Incompatible types in assignment (expression has type "Dict[<nothing>, <nothing>]", variable has type "None")
cortx/utils/data/db/consul_db/storage.py:255: error: Argument 4 to "ConsulDB" has incompatible type "Optional[ThreadPoolExecutor]"; expected "ThreadPoolExecutor"
cortx/utils/data/db/consul_db/storage.py:354: error: Incompatible types in assignment (expression has type "Data", variable has type "Query")
cortx/utils/data/db/consul_db/storage.py:363: error: Item "None" of "Optional[AbstractEventLoop]" has no attribute "run_in_executor"
cortx/utils/data/db/consul_db/storage.py:374: error: "Callable[[Any, SortOrder], Any]" has no attribute "field"
cortx/utils/data/db/consul_db/storage.py:381: error: "Callable[[Any, SortOrder], Any]" has no attribute "order"
cortx/utils/data/db/consul_db/storage.py:386: error: Unsupported left operand type for + ("Callable[[int], Any]")
cortx/utils/data/db/consul_db/storage.py:390: error: Unsupported operand types for > ("int" and "Callable[[int], Any]")
cortx/utils/data/db/consul_db/storage.py:413: error: Item "None" of "Optional[AbstractEventLoop]" has no attribute "run_in_executor"
cortx/utils/data/db/consul_db/storage.py:443: error: Item "None" of "Optional[AbstractEventLoop]" has no attribute "run_in_executor"
cortx/utils/data/db/consul_db/storage.py:465: error: Return type "Coroutine[Any, Any, None]" of "delete_by_id" incompatible with return type "Coroutine[Any, Any, bool]" in supertype "GenericDataBase"
cortx/utils/data/db/consul_db/storage.py:465: error: Return type "Coroutine[Any, Any, None]" of "delete_by_id" incompatible with return type "Coroutine[Any, Any, bool]" in supertype "IDataBase"
cortx/utils/data/db/consul_db/storage.py:489: error: Item "None" of "Optional[AbstractEventLoop]" has no attribute "run_in_executor"
cortx/utils/data/db/db_provider.py:23: error: Skipping analyzing 'schematics': found module but no type hints or library stubs
cortx/utils/data/db/db_provider.py:24: error: Skipping analyzing 'schematics.types': found module but no type hints or library stubs
cortx/utils/data/db/db_provider.py:101: error: Function "asyncio.coroutines.coroutine" is not valid as a type
cortx/utils/data/db/db_provider.py:101: note: Perhaps you need "Callable[...]" or a callback protocol?
cortx/utils/data/db/db_provider.py:153: error: Function "asyncio.coroutines.coroutine" is not valid as a type
cortx/utils/data/db/db_provider.py:153: note: Perhaps you need "Callable[...]" or a callback protocol?
cortx/utils/data/db/db_provider.py:186: error: Need type annotation for '_cached_async_decorators' (hint: "_cached_async_decorators: Dict[<type>, <type>] = ...")
cortx/utils/data/db/db_provider.py:199: error: Argument 1 to "issubclass" has incompatible type "object"; expected "type"
cortx/utils/ha/dm/decision_monitor.py:75: error: On Python 3 '{}'.format(b'abc') produces "b'abc'"; use !r if this is a desired behavior
Found 84 errors in 20 files (checked 77 source files)

CVE-2020-36242 (High) detected in cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

CVE-2020-36242 - High Severity Vulnerability

Vulnerable Library - cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

cryptography is a package which provides cryptographic recipes and primitives to Python developers.

Library home page: https://files.pythonhosted.org/packages/ca/9a/7cece52c46546e214e10811b36b2da52ce1ea7fa203203a629b8dfadad53/cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl

Path to dependency file: cortx-utils/py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: cortx-utils/py-utils/src/utils/setup/kafka/kafka,cortx-utils/py-utils,cortx-utils/py-utils/requirements.txt,cortx-utils/py-utils/src/setup/utils

Dependency Hierarchy:

  • cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 0e59cfa613b30347e0280346b3b3c2f411c4dd36

Found in base branch: main

Vulnerability Details

In the cryptography package before 3.3.2 for Python, certain sequences of update calls to symmetrically encrypt multi-GB values could result in an integer overflow and buffer overflow, as demonstrated by the Fernet class.

Publish Date: 2021-02-07

URL: CVE-2020-36242

CVSS 3 Score Details (9.1)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: None
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://github.com/pyca/cryptography/blob/master/CHANGELOG.rst

Release Date: 2021-02-07

Fix Resolution: cryptography - 3.3.2


⛑️ Automatic Remediation is available for this issue

Separate test code in optional test rpm

Need to separate test code in optional test rpm so its not installed on the production.
This requires

  1. test_framework
  2. move test code to a directory
  3. create test rpm.

error when running "./jenkins/build.sh"

I'm having this error when running ./jenkins/build.sh -v 2.0.0 -b 2 following README:


Processing files: cortx-py-utils-2.0.0-2_f66348c.noarch
error: File not found: /root/cortx-utils/py-utils/build/bdist.linux-x86_64/rpm/BUILDROOT/cortx-py-utils-2.0.0-2_f66348c.x86_64/root/anaconda3/lib/python3.9/site-packages/cortx/utils/message_bus/__pycache__/message_broker_collection.cpython-39.pyc
error: File not found: /root/cortx-utils/py-utils/build/bdist.linux-x86_64/rpm/BUILDROOT/cortx-py-utils-2.0.0-2_f66348c.x86_64/root/anaconda3/lib/python3.9/site-packages/cortx/utils/message_bus/__pycache__/message_broker_collection.cpython-39.opt-1.pyc


RPM build errors:
    File not found: /root/cortx-utils/py-utils/build/bdist.linux-x86_64/rpm/BUILDROOT/cortx-py-utils-2.0.0-2_f66348c.x86_64/root/anaconda3/lib/python3.9/site-packages/cortx/utils/message_bus/__pycache__/message_broker_collection.cpython-39.pyc
    File not found: /root/cortx-utils/py-utils/build/bdist.linux-x86_64/rpm/BUILDROOT/cortx-py-utils-2.0.0-2_f66348c.x86_64/root/anaconda3/lib/python3.9/site-packages/cortx/utils/message_bus/__pycache__/message_broker_collection.cpython-39.opt-1.pyc
error: command 'rpmbuild' failed with exit status 1

Any suggestions?

CVE-2021-34141 (Medium) detected in numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl, numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

CVE-2021-34141 - Medium Severity Vulnerability

Vulnerable Libraries - numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl, numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

NumPy is the fundamental package for array computing with Python.

Library home page: https://files.pythonhosted.org/packages/08/d6/a6aaa29fea945bc6c61d11f6e0697b325ff7446de5ffd62c2fa02f627048/numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl

Path to dependency file: /py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: /py-utils/src/utils/setup/kafka/kafka,/py-utils/test,/py-utils/src/setup/utils,/py-utils/src/utils/setup/openldap/openldap,/py-utils

Dependency Hierarchy:

  • numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl (Vulnerable Library)
numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

NumPy is the fundamental package for array computing with Python.

Library home page: https://files.pythonhosted.org/packages/6d/ad/ff3b21ebfe79a4d25b4a4f8e5cf9fd44a204adb6b33c09010f566f51027a/numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Path to dependency file: /py-utils/src/setup/utils

Path to vulnerable library: /py-utils/src/setup/utils,/py-utils/python_requirements.txt,/py-utils/src/utils/setup/openldap/openldap

Dependency Hierarchy:

  • numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 354062caae2aed0e48005a942cb5b623db91ae9e

Found in base branch: main

Vulnerability Details

An incomplete string comparison in the numpy.core component in NumPy before 1.22.0 allows attackers to trigger slightly incorrect copying by constructing specific string objects. NOTE: the vendor states that this reported code behavior is "completely harmless."
Mend Note: After conducting further research, Mend has determined that versions 1.12.0 through 1.21.6 of numpy are vulnerable to CVE-2021-34141

Publish Date: 2021-12-17

URL: CVE-2021-34141

CVSS 3 Score Details (5.3)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: None
    • Availability Impact: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34141

Release Date: 2021-12-17

Fix Resolution: 1.22.0


⛑️ Automatic Remediation is available for this issue

CVE-2021-21330 (Medium) detected in aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl - autoclosed

CVE-2021-21330 - Medium Severity Vulnerability

Vulnerable Library - aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl

Async http client/server framework (asyncio)

Library home page: https://files.pythonhosted.org/packages/76/96/3b0682d7d63d7ffb30d02e8a0d9242d6413affb7af5514eab27974e91585/aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl

Path to dependency file: /py-utils/src/utils/setup/kafka/kafka

Path to vulnerable library: /py-utils/src/utils/setup/kafka/kafka,/py-utils/src/setup/utils,/py-utils/src/utils/setup/openldap/openldap,/py-utils,/py-utils/test,/py-utils/python_requirements.txt

Dependency Hierarchy:

  • aiohttp-3.6.1-cp37-cp37m-manylinux1_x86_64.whl (Vulnerable Library)

Found in HEAD commit: 34d8f36457431764da33382883c1f8e70c32ed2d

Found in base branch: main

Vulnerability Details

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. In aiohttp before version 3.7.4 there is an open redirect vulnerability. A maliciously crafted link to an aiohttp-based web-server could redirect the browser to a different website. It is caused by a bug in the aiohttp.web_middlewares.normalize_path_middleware middleware. This security problem has been fixed in 3.7.4. Upgrade your dependency using pip as follows "pip install aiohttp >= 3.7.4". If upgrading is not an option for you, a workaround can be to avoid using aiohttp.web_middlewares.normalize_path_middleware in your applications.

Publish Date: 2021-02-26

URL: CVE-2021-21330

CVSS 3 Score Details (6.1)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: Required
    • Scope: Changed
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: Low
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-v6wp-4m6f-gcjg

Release Date: 2021-02-26

Fix Resolution: v3.7.4


⛑️ Automatic Remediation is available for this issue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.