Skip to content

Commit 2089019

Browse files
authored
Merge pull request #49 from QualiSystems/dev
release 4.0.1
2 parents 02f2ad4 + 7cd5789 commit 2089019

13 files changed

Lines changed: 283 additions & 30 deletions

File tree

.pre-commit-config.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
repos:
2-
- repo: https://github.com/pre-commit/mirrors-isort
3-
rev: v4.3.21
2+
- repo: https://github.com/timothycrosley/isort
3+
rev: 4.3.21
44
hooks:
55
- id: isort
66
language_version: python3.7
77
exclude: '/mibs'
88
- repo: https://github.com/python/black
9-
rev: 19.3b0
9+
rev: 19.10b0
1010
hooks:
1111
- id: black
1212
language_version: python3.7
1313
exclude: '/mibs'
1414
- repo: https://gitlab.com/pycqa/flake8
15-
rev: 3.7.8
15+
rev: 3.7.9
1616
hooks:
1717
- id: flake8
1818
additional_dependencies: [

.travis.yml

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,89 @@
11
language: python
2-
2+
python: 3.7
33
jobs:
44
include:
55
- if: branch = master
66
python: 2.7
77
env: TOXENV=py27-master
88
after_success: codecov
99
- if: branch = master
10-
python: 3.7
1110
env: TOXENV=py37-master
1211
after_success: codecov
1312
- if: branch != master
1413
python: 2.7
1514
env: TOXENV=py27-dev
1615
after_success: codecov
1716
- if: branch != master
18-
python: 3.7
1917
env: TOXENV=py37-dev
2018
after_success: codecov
2119
- env: TOXENV=build
22-
python: 2.7
2320
- env: TOXENV=pre-commit
24-
python: 3.7
21+
- stage: Deploy to Test PyPI release
22+
env: TOXENV=build
23+
before_script: sed -i -E "s/^([0-9]+\.[0-9]+\.[0-9]+)$/\1.$TRAVIS_BUILD_NUMBER/" version.txt
24+
deploy:
25+
distributions: skip
26+
skip_cleanup: true
27+
provider: pypi
28+
server: https://test.pypi.org/legacy/
29+
user: "__token__"
30+
password:
31+
secure: "ihwigIM6U+fqzRPWCljMiThKTJ6PITRS8oeFncLTV0IzHX9I6HHjtOS0tGKQWBtphMH4lYd2mnvGgrWs7A0BpnWUXxxTErk1bRKUS6dL8DDXtoY7UARpO6XnE6baCIXYnA0A2AUOYpx10uEE4pORjdP4UgIylU/Dqn8YFNpModLb9h1vi71BjC6E/HjOihKrP58BNgAuQZlrZtTjWU6QOCDPPSDkEFlzpIiYAYany12H7bnHCv47f9Ppks+43cp2Y5H5XgokJjka1HH6HOvuQtOk9D6tKlHgb0a9Un3yAZVTPjmD44DcmV0DlqSW2Xio8T9WqoWauL+DWFzywSzchcmltkBPyoQLXRD1vfL31N+dYkQ1Vd5HAZ33T5LSsoLlxgW+Y53ZLerCUvMP0699Qad6wJTRY57makkJ5JfmylXtt70bSmhgxskSKpwnPG3A3+vFEIXxgRIw8719yEPdczz/4v9ASPg7Usm7jg3cLuvhZ1PSo9v7rL2zZjdcQj8MsMgKg4uPJKn7N3tEwuX+KGWh8ALU+58C5xilusiaaX4T0P3mestUqBJww133TtmjtHPACTS3sJIKwQ+w/5yeBBjW1apsLBCeW/OcDUgGWxCNpBq3zKMwfuK6lE4XYWwURcAIbGT+CcDgFv0vwEznrc69zwrGa52pX9KGV7tWSQ0="
32+
on:
33+
branch: dev
34+
- stage: Deploy to PyPI release
35+
env: TOXENV=build
36+
deploy:
37+
distributions: skip
38+
skip_cleanup: true
39+
provider: pypi
40+
user: "__token__"
41+
password:
42+
secure: "ZE5K3MjBqDfun1UOmMs67VgTUCAw2HM+23NqDt5dOsHvKboPuBRdNmo8CIkP7z8hA/ra0M7+jDqLMegsczMEi643kyjL0QzedVJVQ0Xj6F7XPSgjfP0ff/mNAhTCra1VOzXsNVlkhmZXkAUtGoQX3i84Qi3FgUuNMo2t0akoHNf3qZuOCODAWQ1LmxgoF8kS2x0o1mvLpK+4LRuQod7w4tlBnDKczs+LsTeA9KzuV6oMxcbC3zdTFmQy4HzwOrxWp9XvCEfFuVh+5e0DQiz1iNn2vNDlqE1Uv4D2dS0Pkr0nId4iO82RilANGBOVVgK6oq0U+4UfKUr0NEFoLM9vFeevJ8DhTGdPJwqPqry+UkbPsArmDjA6T3ZSnnlb1Lv4cAbAmZXEjdm11XzukXpecTjPG6ZfmWqGcSgAiAVj+vIJ9mAwa87cKt8heEoMEBW/mPcTl0Q+0EcJ606wOuaIAP5KAF8vDcyei2/GUNCYRaI8wR+zyNHL4nSLcOazPhU1M5ETWMm5NSKv2qa52stebRcyqdz7n38yDPIrH9NWWlEghtOeY3YPaVaDLobs30UI46ve/Galy97rVSqwLSTSZ6+/ukawQD4DUhCIYUKuvF+OEKj4WsoXJAps+YJR5WXfFV0xp3rnktU43Ni1HOsDWNx4H4SWSRiqbep9VtLSHfs="
43+
on:
44+
tags: true
45+
- stage: Create GitHub release
46+
env: TOXENV=build
47+
before_deploy:
48+
- export AUTHOR_EMAIL="$(git log -1 $TRAVIS_COMMIT --pretty="%cE")"
49+
- export AUTHOR_NAME="$(git log -1 $TRAVIS_COMMIT --pretty="%aN")"
50+
- export GIT_TAG="$(cat version.txt | tr -d ' \t\n\r')"
51+
- git config --local user.name $AUTHOR_NAME
52+
- git config --local user.email $AUTHOR_EMAIL
53+
- git tag $GIT_TAG
54+
deploy:
55+
provider: releases
56+
skip_cleanup: true
57+
draft: true
58+
api_key:
59+
secure: "fZmNYqsImMDFjn0rpNMQEXXWn8AxCPV7U+8c2mPKaEfS0jVG6ytyBhKSWxRL16kgm4XlMr3OzCpWlk9aNqTRCN8qNwniIEUfLva4V31g2fBo4a3msQO/HDDve9Us3bo+9AWwy1velMOEE0kV0YzGUD5A/SIWYN8hpxVn/VxaCYXTgxlHOMt++az17yiomzTr+9/g2bJg82BERt5FvGPJFUrDUl0miiGCi7msXW192MQZS6FCC39+sFoM5eYApg8LTNWk7/C5nPKdDiUmKLOa1tVh9gUWfYQMqhN+BCTjr9uVQrpgTjbmju1s9JpdyrvvsZUPwk3em2KjImRJ7N0/si9rVUcGxjKtPnmNkvo5R3gNWAaZ7rsN8wceqIb+9h3Nb6cnjtV1BPnDp7eycYaqxpJ56b/pwJ3sCDx6tlB3mbPN8ggEbFBztcGIYsqkvQ250sx5s8WpEA+bVXN1ZzhG3es6FCvjuJGdHmhRX5LM4mdHiexXmj0+cVg+2kitAx3tG2+xRowA+W7OQBiE/0l48ZywMf43N4uoPKN05ik+wqRQFuHd7FeH213y+7MsT83jY9sv5QD8u2/cJmGA6mBI7KHseFiIhhLO/4PJa+iXNK0Z0arxf2PeDxWdBSqMHA5h1m7LmfEwqxhZMMZQ9V4swLwCEK9jJbfDo07qW24fT2I="
60+
file_glob: true
61+
file: dist/*
62+
name: cloudshell-snmp $GIT_TAG
63+
target_commitish: master
64+
on:
65+
branch: master
66+
- stage: Check version
67+
language: bash
68+
install:
69+
- git clone https://github.com/$TRAVIS_REPO_SLUG.git $TRAVIS_REPO_SLUG
70+
- cd $TRAVIS_REPO_SLUG
71+
- git checkout -qf $TRAVIS_PULL_REQUEST_BRANCH
72+
script: "! git diff --exit-code --quiet origin/master version.txt"
2573

2674
install:
2775
- pip install tox
2876
- pip install codecov
2977

3078
script: tox
79+
80+
stages:
81+
- name: Check version
82+
if: branch = master AND type = pull_request
83+
- name: Test
84+
- name: Deploy to Test PyPI release
85+
if: branch = dev AND type != pull_request
86+
- name: Create GitHub release
87+
if: branch = master AND type != pull_request
88+
- name: Deploy to PyPI release
89+
if: tag IS present

cloudshell/snmp/core/domain/quali_mib_table.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ def get_columns(self, *names):
3434
:param names: list of requested columns names.
3535
:return: a partial table containing only the requested columns.
3636
"""
37-
names = [n for n in names]
3837
return QualiMibTable(
3938
self._name,
4039
OrderedDict(

cloudshell/snmp/core/snmp_service.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,19 @@ def load_mib_tables(self, mib_list):
6161
for mib in mib_list:
6262
mib_builder.loadModules(mib)
6363

64+
def translate_oid(self, snmp_oid):
65+
"""Translates Raw OID into a human readable identifiers.
66+
67+
:param str snmp_oid: OID string. like: '1.3.6.1.2.1.1.4.0'
68+
:return translated OID name
69+
:rtype str
70+
"""
71+
result = SnmpResponse(
72+
snmp_oid, None, snmp_engine=self._snmp_engine, logger=self._logger
73+
)
74+
75+
return result.mib_id
76+
6477
def set(self, snmp_set_oids): # noqa: A003
6578
"""SNMP Set operation.
6679

cloudshell/snmp/core/tools/snmp_parameters_helper.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ class SnmpParametersConverter(object):
55
AUTH_PRIV = "authPriv"
66

77
class PySnmpVersion:
8-
def __init__(self):
9-
pass
10-
118
V1 = 0
129
V2 = 1
1310
V3 = 3
@@ -44,7 +41,7 @@ def version(self):
4441
def user(self):
4542
if not self._user:
4643
self._user = self.DEFAULT_USER
47-
if hasattr(self.snmp_parameters, "user"):
44+
if hasattr(self.snmp_parameters, "snmp_user"):
4845
self._user = self.snmp_parameters.snmp_user
4946
return self._user
5047

cloudshell/snmp/core/tools/snmp_security.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@ def __init__(self, py_snmp_params, logger):
1212
self._logger = logger
1313

1414
def add_security(self, snmp_engine):
15-
if hasattr(self._py_snmp_params, "snmp_password"):
15+
if hasattr(self._py_snmp_params.snmp_parameters, "snmp_password"):
1616
auth_protocol = AUTH_PROTOCOL_MAP.get(
1717
self._py_snmp_params.snmp_parameters.snmp_auth_protocol
1818
)
1919
priv_protocol = PRIV_PROTOCOL_MAP.get(
20-
self._py_snmp_params.snmp_parameters.snmp_priv_protocol
20+
self._py_snmp_params.snmp_parameters.snmp_private_key_protocol
2121
)
2222
config.addV3User(
23-
snmp_engine,
24-
self._py_snmp_params.user,
25-
auth_protocol,
26-
self._py_snmp_params.snmp_parameters.snmp_password,
27-
priv_protocol,
28-
self._py_snmp_params.snmp_parameters.snmp_v3_priv_key,
23+
snmpEngine=snmp_engine,
24+
userName=self._py_snmp_params.user,
25+
authProtocol=auth_protocol,
26+
authKey=self._py_snmp_params.snmp_parameters.snmp_password,
27+
privProtocol=priv_protocol,
28+
privKey=self._py_snmp_params.snmp_parameters.snmp_private_key,
2929
)
3030
else:
3131
config.addV1System(

cloudshell/snmp/mibs/ENTITY-MIB.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,25 @@
1414

1515
# Types
1616

17+
1718
class PhysicalClass(Integer):
1819
subtypeSpec = Integer.subtypeSpec+SingleValueConstraint(9,3,7,10,5,2,6,11,1,4,8,12,)
1920
namedValues = NamedValues(("other", 1), ("port", 10), ("stack", 11), ("cpu", 12), ("unknown", 2), ("chassis", 3), ("backplane", 4), ("container", 5), ("powerSupply", 6), ("fan", 7), ("sensor", 8), ("module", 9), )
20-
21+
22+
2123
class PhysicalIndex(TextualConvention, Integer32):
2224
displayHint = "d"
2325
subtypeSpec = Integer32.subtypeSpec+ValueRangeConstraint(1,2147483647)
24-
26+
27+
2528
class PhysicalIndexOrZero(TextualConvention, Integer32):
2629
displayHint = "d"
2730
subtypeSpec = Integer32.subtypeSpec+ValueRangeConstraint(0,2147483647)
28-
31+
32+
2933
class SnmpEngineIdOrNone(OctetString):
3034
subtypeSpec = OctetString.subtypeSpec+ValueSizeConstraint(0,32)
31-
35+
3236

3337
# Objects
3438

cloudshell/snmp/snmp_parameters.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import warnings
2+
3+
14
class SnmpParameters(object):
25
class SnmpVersion:
36
def __init__(self):
@@ -112,8 +115,50 @@ def __init__(
112115
self.snmp_user = snmp_user
113116
self.snmp_password = snmp_password
114117
self.snmp_private_key = snmp_private_key
115-
self.auth_protocol = auth_protocol
116-
self.private_key_protocol = private_key_protocol
118+
self.snmp_auth_protocol = auth_protocol
119+
self.snmp_private_key_protocol = private_key_protocol
120+
121+
# For backward compatibility auth_protocol and private_key_protocol
122+
@property
123+
def auth_protocol(self):
124+
warnings.warn(
125+
"auth_protocol is obsolete please use snmp_auth_protocol field instead",
126+
DeprecationWarning,
127+
stacklevel=2,
128+
)
129+
return self.snmp_auth_protocol
130+
131+
@auth_protocol.setter
132+
def auth_protocol(self, value):
133+
warnings.warn(
134+
"auth_protocol is obsolete please use snmp_auth_protocol field instead",
135+
DeprecationWarning,
136+
stacklevel=2,
137+
)
138+
self.snmp_auth_protocol = value
139+
140+
@property
141+
def private_key_protocol(self):
142+
warnings.warn(
143+
"private_key_protocol is obsolete please "
144+
"use snmp_private_key_protocol "
145+
"field instead",
146+
DeprecationWarning,
147+
stacklevel=2,
148+
)
149+
150+
return self.snmp_private_key_protocol
151+
152+
@private_key_protocol.setter
153+
def private_key_protocol(self, value):
154+
warnings.warn(
155+
"private_key_protocol is obsolete please "
156+
"use snmp_private_key_protocol "
157+
"field instead",
158+
DeprecationWarning,
159+
stacklevel=2,
160+
)
161+
self.snmp_private_key_protocol = value
117162

118163
def validate(self):
119164
super(SNMPV3Parameters, self).validate()

tests/snmp/core/domain/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from pkgutil import extend_path
2+
3+
__path__ = extend_path(__path__, __name__)

tests/snmp/core/tools/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from pkgutil import extend_path
2+
3+
__path__ = extend_path(__path__, __name__)

0 commit comments

Comments
 (0)