From acc87bebe1ad9bcfa15cf135b97b73f17f323268 Mon Sep 17 00:00:00 2001 From: Cesarone Date: Wed, 10 Jul 2019 14:46:34 -0500 Subject: [PATCH 1/4] Upgraded .gitignore to exclude .vscode folder. Upgrade Pipfile python version to 3.7 --- .gitignore | 3 +++ Pipfile | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 02b65dc..927694e 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ nosetests.xml .project .pydevproject .idea/ + +# VSCode Specific +.vscode/ diff --git a/Pipfile b/Pipfile index 0303ed7..dcb9422 100644 --- a/Pipfile +++ b/Pipfile @@ -7,7 +7,7 @@ verify_ssl = true bandit = "*" # https://github.com/PyCQA/bandit better_exceptions = "*" black = "*" -pipenv = {path = ".", editable = true, extras = ["test"]} +pipenv = {path = ".",editable = true,extras = ["test"]} flake8 = ">=3.3.0,<4" pre-commit = "*" # https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/ pytest = "*" @@ -15,9 +15,10 @@ requests = "*" [packages] requests = "*" +sumologic-sdk = "*" [requires] -python_version = "3.6" +python_version = "3.7" [pipenv] allow_prereleases = true From a5bb75a6f6c8daace8399a5aee469e8b6512f647 Mon Sep 17 00:00:00 2001 From: Cesarone Date: Wed, 10 Jul 2019 14:47:54 -0500 Subject: [PATCH 2/4] Update Pipfile.lock hashes and versions --- Pipfile.lock | 310 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 289 insertions(+), 21 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 1a38e3f..3110b96 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e5b5420547d5a045f2f16859d9a090a6424137b22ccb2e86ae1d98e432bfb86f" + "sha256": "4ea8afeb3785b56d86c4838658edd437602e67d999c7899972495cde0add7f05" }, "pipfile-spec": 6, "requires": { @@ -15,8 +15,67 @@ } ] }, - "default": {}, + "default": { + "certifi": { + "hashes": [ + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" + ], + "version": "==2019.6.16" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "idna": { + "hashes": [ + "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", + "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" + ], + "version": "==2.8" + }, + "requests": { + "hashes": [ + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" + ], + "index": "pypi", + "version": "==2.22.0" + }, + "sumologic-sdk": { + "hashes": [ + "sha256:4cab037824455a6b098a9b6e28c1d0a1d8e9f46967b540280b08cd099034f4e7", + "sha256:ccc20a1ef334343080fcf6124bae654720acf8a02b4534b17acfb7bf7e314989" + ], + "index": "pypi", + "version": "==0.1.8" + }, + "urllib3": { + "hashes": [ + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" + ], + "version": "==1.25.3" + } + }, "develop": { + "appdirs": { + "hashes": [ + "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", + "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + ], + "version": "==1.4.3" + }, + "aspy.yaml": { + "hashes": [ + "sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc", + "sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45" + ], + "version": "==1.3.0" + }, "atomicwrites": { "hashes": [ "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", @@ -31,12 +90,43 @@ ], "version": "==19.1.0" }, + "bandit": { + "hashes": [ + "sha256:336620e220cf2d3115877685e264477ff9d9abaeb0afe3dc7264f55fa17a3952", + "sha256:41e75315853507aa145d62a78a2a6c5e3240fe14ee7c601459d0df9418196065" + ], + "index": "pypi", + "version": "==1.6.2" + }, + "better-exceptions": { + "hashes": [ + "sha256:bf79c87659bc849989d726bf0e4a2100edefe7eded112d201f54fe08467fdf63", + "sha256:c196cad849de615abb9f6eb67ca1b83f33b938818f0e2fe8fa157b22aeb7b992" + ], + "index": "pypi", + "version": "==0.2.2" + }, + "black": { + "hashes": [ + "sha256:09a9dcb7c46ed496a9850b76e4e825d6049ecd38b611f1224857a79bd985a8cf", + "sha256:68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c" + ], + "index": "pypi", + "version": "==19.3b0" + }, "certifi": { "hashes": [ - "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", - "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" + ], + "version": "==2019.6.16" + }, + "cfgv": { + "hashes": [ + "sha256:32edbe09de6f4521224b87822103a8c16a614d31a894735f7a5b3bcf0eb3c37e", + "sha256:3bd31385cd2bebddbba8012200aaf15aa208539f1b33973759b4d02fc2148da5" ], - "version": "==2019.3.9" + "version": "==2.0.0" }, "chardet": { "hashes": [ @@ -45,6 +135,57 @@ ], "version": "==3.0.4" }, + "click": { + "hashes": [ + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + ], + "version": "==7.0" + }, + "colorama": { + "hashes": [ + "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", + "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48" + ], + "markers": "sys_platform == 'win32'", + "version": "==0.4.1" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "flake8": { + "hashes": [ + "sha256:19241c1cbc971b9962473e4438a2ca19749a7dd002dd1a946eaba171b4114548", + "sha256:8e9dfa3cecb2400b3738a42c54c3043e821682b9c840b0448c0503f781130696" + ], + "index": "pypi", + "version": "==3.7.8" + }, + "gitdb2": { + "hashes": [ + "sha256:83361131a1836661a155172932a13c08bda2db3674e4caa32368aa6eb02f38c2", + "sha256:e3a0141c5f2a3f635c7209d56c496ebe1ad35da82fe4d3ec4aaa36278d70648a" + ], + "version": "==2.0.5" + }, + "gitpython": { + "hashes": [ + "sha256:563221e5a44369c6b79172f455584c9ebbb122a13368cc82cb4b5addff788f82", + "sha256:8237dc5bfd6f1366abeee5624111b9d6879393d84745a507de0fda86043b65a8" + ], + "version": "==2.1.11" + }, + "identify": { + "hashes": [ + "sha256:0a11379b46d06529795442742a043dc2fa14cd8c995ae81d1febbc5f1c014c87", + "sha256:43a5d24ffdb07bc7e21faf68b08e9f526a1f41f0056073f480291539ef961dfd" + ], + "version": "==1.4.5" + }, "idna": { "hashes": [ "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", @@ -52,20 +193,68 @@ ], "version": "==2.8" }, + "importlib-metadata": { + "hashes": [ + "sha256:6dfd58dfe281e8d240937776065dd3624ad5469c835248219bd16cf2e12dbeb7", + "sha256:cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db" + ], + "version": "==0.18" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, "more-itertools": { "hashes": [ - "sha256:2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7", - "sha256:c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a" + "sha256:3ad685ff8512bf6dc5a8b82ebf73543999b657eded8c11803d9ba6b648986f4d", + "sha256:8bb43d1f51ecef60d81854af61a3a880555a14643691cc4b64a6ee269c78f09a" + ], + "version": "==7.1.0" + }, + "nodeenv": { + "hashes": [ + "sha256:ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a" + ], + "version": "==1.3.3" + }, + "packaging": { + "hashes": [ + "sha256:0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af", + "sha256:9e1cbf8c12b1f1ce0bb5344b8d7ecf66a6f8a6e91bcb0c84593ed6d3ab5c4ab3" ], - "markers": "python_version > '2.7'", - "version": "==7.0.0" + "version": "==19.0" + }, + "pbr": { + "hashes": [ + "sha256:36ebd78196e8c9588c972f5571230a059ff83783fabbbbedecc07be263ccd7e6", + "sha256:5a03f59455ad54f01a94c15829b8b70065462b7bd8d5d7e983306b59127fc841" + ], + "version": "==5.4.0" + }, + "pipenv": { + "editable": true, + "extras": [ + "test" + ], + "path": "." }, "pluggy": { "hashes": [ - "sha256:25a1bc1d148c9a640211872b4ff859878d422bccb59c9965e04eed468a0aa180", - "sha256:964cedd2b27c492fbf0b7f58b3284a09cf7f99b0f715941fb24a439b3af1bd1a" + "sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc", + "sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c" ], - "version": "==0.11.0" + "version": "==0.12.0" + }, + "pre-commit": { + "hashes": [ + "sha256:92e406d556190503630fd801958379861c94884693a032ba66629d0351fdccd4", + "sha256:cccc39051bc2457b0c0f7152a411f8e05e3ba2fe1a5613e4ee0833c1c1985ce3" + ], + "index": "pypi", + "version": "==1.17.0" }, "py": { "hashes": [ @@ -74,21 +263,58 @@ ], "version": "==1.8.0" }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pyparsing": { + "hashes": [ + "sha256:1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a", + "sha256:9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03" + ], + "version": "==2.4.0" + }, "pytest": { "hashes": [ - "sha256:136632a40451162cdfc18fe4d7ecc5d169b558a3d4bbb1603d4005308a42fd03", - "sha256:62b129bf8368554ca7a942cbdb57ea26aafef46cc65bc317cdac3967e54483a3" + "sha256:6ef6d06de77ce2961156013e9dff62f1b2688aa04d0dc244299fe7d67e09370d", + "sha256:a736fed91c12681a7b34617c8fcefe39ea04599ca72c608751c31d89579a3f77" ], "index": "pypi", - "version": "==4.4.2" + "version": "==5.0.1" + }, + "pyyaml": { + "hashes": [ + "sha256:57acc1d8533cbe51f6662a55434f0dbecfa2b9eaf115bede8f6fd00115a0c0d3", + "sha256:588c94b3d16b76cfed8e0be54932e5729cc185caffaa5a451e7ad2f7ed8b4043", + "sha256:68c8dd247f29f9a0d09375c9c6b8fdc64b60810ebf07ba4cdd64ceee3a58c7b7", + "sha256:70d9818f1c9cd5c48bb87804f2efc8692f1023dac7f1a1a5c61d454043c1d265", + "sha256:86a93cccd50f8c125286e637328ff4eef108400dd7089b46a7be3445eecfa391", + "sha256:a0f329125a926876f647c9fa0ef32801587a12328b4a3c741270464e3e4fa778", + "sha256:a3c252ab0fa1bb0d5a3f6449a4826732f3eb6c0270925548cac342bc9b22c225", + "sha256:b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955", + "sha256:cd0618c5ba5bda5f4039b9398bb7fb6a317bb8298218c3de25c47c4740e4b95e", + "sha256:ceacb9e5f8474dcf45b940578591c7f3d960e82f926c707788a570b51ba59190", + "sha256:fe6a88094b64132c4bb3b631412e90032e8cfe9745a58370462240b8cb7553cd" + ], + "version": "==5.1.1" }, "requests": { "hashes": [ - "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", - "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b" + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" ], "index": "pypi", - "version": "==2.21.0" + "version": "==2.22.0" }, "six": { "hashes": [ @@ -97,12 +323,54 @@ ], "version": "==1.12.0" }, + "smmap2": { + "hashes": [ + "sha256:0555a7bf4df71d1ef4218e4807bbf9b201f910174e6e08af2e138d4e517b4dde", + "sha256:29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a" + ], + "version": "==2.0.5" + }, + "stevedore": { + "hashes": [ + "sha256:7be098ff53d87f23d798a7ce7ae5c31f094f3deb92ba18059b1aeb1ca9fec0a0", + "sha256:7d1ce610a87d26f53c087da61f06f9b7f7e552efad2a7f6d2322632b5f932ea2" + ], + "version": "==1.30.1" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, "urllib3": { "hashes": [ - "sha256:2393a695cd12afedd0dcb26fe5d50d0cf248e5a66f75dbd89a3d4eb333a61af4", - "sha256:a637e5fae88995b256e3409dc4d52c2e2e0ba32c42a6365fee8bbd2238de3cfb" + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" + ], + "version": "==1.25.3" + }, + "virtualenv": { + "hashes": [ + "sha256:b7335cddd9260a3dd214b73a2521ffc09647bde3e9457fcca31dc3be3999d04a", + "sha256:d28ca64c0f3f125f59cabf13e0a150e1c68e5eea60983cc4395d88c584495783" + ], + "version": "==16.6.1" + }, + "wcwidth": { + "hashes": [ + "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", + "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c" + ], + "version": "==0.1.7" + }, + "zipp": { + "hashes": [ + "sha256:4970c3758f4e89a7857a973b1e2a5d75bcdc47794442f2e2dd4fe8e0466e809a", + "sha256:8a5712cfd3bb4248015eb3b0b3c54a5f6ee3f2425963ef2a0125b8bc40aafaec" ], - "version": "==1.24.3" + "version": "==0.5.2" } } } From 77be7ab3f0a03145d8e72429ab6e7199d9fefa49 Mon Sep 17 00:00:00 2001 From: Brad Cesarone <1256576+beckonconn@users.noreply.github.com> Date: Thu, 29 Aug 2019 18:12:45 -0500 Subject: [PATCH 3/4] Fixes non-redirect issue Added a if/else statement to determine if self.response gets set with a 401. This doesn't happen when GET follows the redirects. --- sumologic/sumologic.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sumologic/sumologic.py b/sumologic/sumologic.py index 7d4f858..1d2b5c4 100644 --- a/sumologic/sumologic.py +++ b/sumologic/sumologic.py @@ -8,6 +8,7 @@ except ImportError: import http.cookiejar as cookielib + class SumoLogic(object): def __init__(self, accessId, accessKey, endpoint=None, caBundle=None, cookieFile='cookies.txt'): @@ -23,7 +24,7 @@ def __init__(self, accessId, accessKey, endpoint=None, caBundle=None, cookieFile else: self.endpoint = endpoint if self.endpoint[-1:] == "/": - raise Exception("Endpoint should not end with a slash character") + raise Exception("Endpoint should not end with a slash character") def _get_endpoint(self): """ @@ -40,7 +41,11 @@ def _get_endpoint(self): """ self.endpoint = 'https://api.sumologic.com/api/v1' self.response = self.session.get('https://api.sumologic.com/api/v1/collectors') # Dummy call to get endpoint - endpoint = self.response.url.replace('/collectors', '') # dirty hack to sanitise URI and retain domain + if self.response.status_code == 401: + self.response = self.session.get('https://api.sumologic.com/api/v1/collectors') + endpoint = self.response.url.replace('/collectors', '') # dirty hack to sanitise URI and retain domain + else: + endpoint = self.response.url.replace('/collectors', '') # dirty hack to sanitise URI and retain domain return endpoint def delete(self, method, params=None): @@ -65,10 +70,10 @@ def post(self, method, params, headers=None): return r def put(self, method, params, headers=None): - r = self.session.put(self.endpoint + method, data=json.dumps(params), headers=headers) + r = self.session.put(self.endpoint + method, data=json.dumps(params), headers=headers) if 400 <= r.status_code < 600: r.reason = r.text - r.raise_for_status() + r.raise_for_status() return r def search(self, query, fromTime=None, toTime=None, timeZone='UTC'): @@ -154,12 +159,12 @@ def search_metrics(self, query, fromTime=None, toTime=None, requestedDataPoints= def millisectimestamp(ts): '''Convert UNIX timestamp to milliseconds''' if ts > 10**12: - ts = ts/(10**(len(str(ts))-13)) + ts = ts / (10**(len(str(ts)) - 13)) else: - ts = ts*10**(12-len(str(ts))) + ts = ts * 10**(12 - len(str(ts))) return int(ts) - params = {'query': [{"query":query, "rowId":"A"}], + params = {'query': [{"query": query, "rowId": "A"}], 'startTime': millisectimestamp(fromTime), 'endTime': millisectimestamp(toTime), 'requestedDataPoints': requestedDataPoints, From 650fd87cec600878f891021b65feffab7f5d90be Mon Sep 17 00:00:00 2001 From: Brad Cesarone <1256576+beckonconn@users.noreply.github.com> Date: Wed, 22 Jul 2020 10:35:38 -0500 Subject: [PATCH 4/4] Removed duplicate code Per a code review, it was noted two lines were noted as being duplicate. --- sumologic/sumologic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sumologic/sumologic.py b/sumologic/sumologic.py index 1d2b5c4..bb1623f 100644 --- a/sumologic/sumologic.py +++ b/sumologic/sumologic.py @@ -44,8 +44,6 @@ def _get_endpoint(self): if self.response.status_code == 401: self.response = self.session.get('https://api.sumologic.com/api/v1/collectors') endpoint = self.response.url.replace('/collectors', '') # dirty hack to sanitise URI and retain domain - else: - endpoint = self.response.url.replace('/collectors', '') # dirty hack to sanitise URI and retain domain return endpoint def delete(self, method, params=None):