From 62490d6858f427c2d29d21774498dda46087181e Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 14:28:26 -0400 Subject: [PATCH 1/9] Fixing black and pylint --- .pylintrc | 7 ++++++- proxstar/__init__.py | 4 ++-- proxstar/db.py | 8 ++++---- proxstar/user.py | 14 +++++++------- proxstar/vnc.py | 2 +- requirements.txt | 6 +++--- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/.pylintrc b/.pylintrc index 19438d3..261b3e3 100644 --- a/.pylintrc +++ b/.pylintrc @@ -21,7 +21,12 @@ disable = wrong-import-position, logging-format-interpolation, bare-except, - too-many-public-methods + too-many-public-methods, + consider-using-with, + consider-using-f-string, + unspecified-encoding, + consider-iterating-dictionary, + inconsistent-return-statements [REPORTS] output-format = text diff --git a/proxstar/__init__.py b/proxstar/__init__.py index 3dd92ff..fa53b33 100644 --- a/proxstar/__init__.py +++ b/proxstar/__init__.py @@ -301,7 +301,7 @@ def vm_cpu(vmid, cores): vm = VM(vmid) cur_cores = vm.cpu if cores >= cur_cores: - if vm.qmpstatus == 'running' or vm.qmpstatus == 'paused': + if vm.qmpstatus in ('running', 'paused'): usage_check = user.check_usage(cores - cur_cores, 0, 0) else: usage_check = user.check_usage(cores, 0, 0) @@ -322,7 +322,7 @@ def vm_mem(vmid, mem): vm = VM(vmid) cur_mem = vm.mem // 1024 if mem >= cur_mem: - if vm.qmpstatus == 'running' or vm.qmpstatus == 'paused': + if vm.qmpstatus in ('running', 'paused'): usage_check = user.check_usage(0, mem - cur_mem, 0) else: usage_check = user.check_usage(0, mem, 0) diff --git a/proxstar/db.py b/proxstar/db.py index 5bb6d9d..71b0a91 100644 --- a/proxstar/db.py +++ b/proxstar/db.py @@ -58,7 +58,7 @@ def get_expiring_vms(db): def get_user_usage_limits(db, user): - limits = dict() + limits = {} if is_rtp(user): limits['cpu'] = 1000 limits['mem'] = 1000 @@ -113,7 +113,7 @@ def get_pool_cache(db): db_pools = db.query(Pool_Cache).all() pools = [] for pool in db_pools: - pool_dict = dict() + pool_dict = {} pool_dict['user'] = pool.pool pool_dict['vms'] = pool.vms pool_dict['num_vms'] = pool.num_vms @@ -149,7 +149,7 @@ def add_ignored_pool(db, pool): def get_templates(db): templates = [] for template in db.query(Template).all(): - template_dict = dict() + template_dict = {} template_dict['id'] = template.id template_dict['name'] = template.name template_dict['disk'] = template.disk @@ -158,7 +158,7 @@ def get_templates(db): def get_template(db, template_id): - template_dict = dict() + template_dict = {} if db.query(exists().where(Template.id == template_id)).scalar(): template = db.query(Template).filter(Template.id == template_id).one() template_dict['id'] = template.id diff --git a/proxstar/user.py b/proxstar/user.py index 40fc31b..7b2dd7e 100644 --- a/proxstar/user.py +++ b/proxstar/user.py @@ -50,8 +50,8 @@ class User: for job in jobs: job = q.fetch_job(job) if job and len(job.args) > 2: - if job.args[0] == self.name or job.args[2] == self.name: - vm_dict = dict() + if self.name in (job.args[0], job.args[2]): + vm_dict = {} vm_dict['name'] = job.args[1] vm_dict['status'] = job.meta.get('status', 'no status yet') vm_dict['pending'] = True @@ -67,7 +67,7 @@ class User: @lazy_property def usage(self): - usage = dict() + usage = {} usage['cpu'] = 0 usage['mem'] = 0 usage['disk'] = 0 @@ -77,7 +77,7 @@ class User: for vm in vms: if 'status' in vm: vm = VM(vm['vmid']) - if vm.status == 'running' or vm.status == 'paused': + if vm.status in ('running', 'paused'): usage['cpu'] += int(vm.cpu) usage['mem'] += int(vm.mem) / 1024 for disk in vm.disks: @@ -86,11 +86,11 @@ class User: @lazy_property def usage_percent(self): - percents = dict() + percents = {} percents['cpu'] = round(self.usage['cpu'] / self.limits['cpu'] * 100) percents['mem'] = round(self.usage['mem'] / self.limits['mem'] * 100) percents['disk'] = round(self.usage['disk'] / self.limits['disk'] * 100) - for resource in percents: + for resource in percents.items(): if percents[resource] > 100: percents[resource] = 100 return percents @@ -121,7 +121,7 @@ def get_vms_for_rtp(proxmox, database): pools = [] for pool in get_pools(proxmox, database): user = User(pool) - pool_dict = dict() + pool_dict = {} pool_dict['user'] = user.name pool_dict['vms'] = user.vms pool_dict['num_vms'] = len(pool_dict['vms']) diff --git a/proxstar/vnc.py b/proxstar/vnc.py index 0bcbd06..c398bfc 100644 --- a/proxstar/vnc.py +++ b/proxstar/vnc.py @@ -28,7 +28,7 @@ def get_vnc_targets(): if os.path.exists(app.config['WEBSOCKIFY_TARGET_FILE']): target_file = open(app.config['WEBSOCKIFY_TARGET_FILE']) for line in target_file: - target_dict = dict() + target_dict = {} values = line.strip().split(':') target_dict['token'] = values[0] target_dict['port'] = values[2] diff --git a/requirements.txt b/requirements.txt index ac13f66..fd5b477 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -black~=20.8b1 +black~=22.3.0 csh-ldap~=2.2.0 flask==1.1.2 jinja2==2.11.3 @@ -7,7 +7,7 @@ gunicorn==20.0.4 paramiko==2.7.2 proxmoxer==1.1.1 psutil==5.8.0 -psycopg2-binary==2.8.6 +psycopg2-binary==2.9.3 python-dateutil==2.8.1 redis==3.5.3 requests==2.25.1 @@ -18,7 +18,7 @@ sqlalchemy==1.3.22 sshtunnel==0.2.2 tenacity==5.0.2 websockify==0.9.0 -pylint==2.6.0 +pylint==2.13.9 pylint-quotes==0.2.1 sentry-sdk[flask] sentry-sdk~=0.19.5 From 7bf18eea7470e417af7853c0f93718f2316a14d4 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 14:34:49 -0400 Subject: [PATCH 2/9] Updating rq and sentry --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index fd5b477..f4c8789 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,9 +11,9 @@ psycopg2-binary==2.9.3 python-dateutil==2.8.1 redis==3.5.3 requests==2.25.1 -rq==1.1.0 +rq==1.10.1 rq-dashboard==0.6.1 -rq-scheduler==0.10.0 +rq-scheduler==0.11.0 sqlalchemy==1.3.22 sshtunnel==0.2.2 tenacity==5.0.2 @@ -21,4 +21,4 @@ websockify==0.9.0 pylint==2.13.9 pylint-quotes==0.2.1 sentry-sdk[flask] -sentry-sdk~=0.19.5 +sentry-sdk~=1.5.12 From 9d2eec92cbd320e9e4d9e904e88626a591967514 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 14:38:22 -0400 Subject: [PATCH 3/9] Reverting rq changes, pinning click --- requirements.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index f4c8789..0ed16be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ black~=22.3.0 csh-ldap~=2.2.0 +click~=7.1.2 flask==1.1.2 jinja2==2.11.3 flask-pyoidc==1.3.0 @@ -11,9 +12,9 @@ psycopg2-binary==2.9.3 python-dateutil==2.8.1 redis==3.5.3 requests==2.25.1 -rq==1.10.1 +rq==1.1.0 rq-dashboard==0.6.1 -rq-scheduler==0.11.0 +rq-scheduler==0.10.0 sqlalchemy==1.3.22 sshtunnel==0.2.2 tenacity==5.0.2 From a6f446f0cf1cf69c72d91a33aa154d117a074ad0 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 14:43:55 -0400 Subject: [PATCH 4/9] Fixing version pinning --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 0ed16be..f7efadf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -black~=22.3.0 -csh-ldap~=2.2.0 +black~=21.9b0 +csh-ldap~=2.3.1 click~=7.1.2 flask==1.1.2 jinja2==2.11.3 @@ -20,6 +20,6 @@ sshtunnel==0.2.2 tenacity==5.0.2 websockify==0.9.0 pylint==2.13.9 -pylint-quotes==0.2.1 +pylint-quotes==0.2.3 sentry-sdk[flask] sentry-sdk~=1.5.12 From cfa8323f28d527f6c8f506b7362d5cf24cd0eb77 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 15:21:29 -0400 Subject: [PATCH 5/9] Pinning markupsafe --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index f7efadf..ed4d7e3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ flask==1.1.2 jinja2==2.11.3 flask-pyoidc==1.3.0 gunicorn==20.0.4 +markupsafe==2.0.1 paramiko==2.7.2 proxmoxer==1.1.1 psutil==5.8.0 From f81a3914f3bb42a689edee8f0994727cfc2acb71 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 15:30:26 -0400 Subject: [PATCH 6/9] Add ddtrace for datadog monitoring --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index ed4d7e3..0e46643 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ black~=21.9b0 csh-ldap~=2.3.1 click~=7.1.2 +ddtrace~=1.1.4 flask==1.1.2 jinja2==2.11.3 flask-pyoidc==1.3.0 From 971599027f67c54fd94647da1911077780b910c6 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 15:42:11 -0400 Subject: [PATCH 7/9] Update Flask pin --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0e46643..54c2778 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ black~=21.9b0 csh-ldap~=2.3.1 click~=7.1.2 ddtrace~=1.1.4 -flask==1.1.2 +flask==1.1.4 jinja2==2.11.3 flask-pyoidc==1.3.0 gunicorn==20.0.4 From 7a2c3374caee249e6b6517cd66bef4ce4e26cf1e Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 18:20:04 -0400 Subject: [PATCH 8/9] Update to latest noVNC --- proxstar/static/noVNC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxstar/static/noVNC b/proxstar/static/noVNC index 37b4d13..cdfb336 160000 --- a/proxstar/static/noVNC +++ b/proxstar/static/noVNC @@ -1 +1 @@ -Subproject commit 37b4d13db81e0e80e117c07b86ff98714c7b6b1a +Subproject commit cdfb33665195eb9a73fb00feb6ebaccd1068cd50 From a67380c500c6860aea6b938e5988969902705dd3 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Sat, 28 May 2022 19:03:13 -0400 Subject: [PATCH 9/9] Removing .items() --- .pylintrc | 4 +++- proxstar/user.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pylintrc b/.pylintrc index 261b3e3..52376fb 100644 --- a/.pylintrc +++ b/.pylintrc @@ -26,7 +26,9 @@ disable = consider-using-f-string, unspecified-encoding, consider-iterating-dictionary, - inconsistent-return-statements + inconsistent-return-statements, + consider-using-dict-items, + modified-iterating-dict [REPORTS] output-format = text diff --git a/proxstar/user.py b/proxstar/user.py index 7b2dd7e..9892a26 100644 --- a/proxstar/user.py +++ b/proxstar/user.py @@ -90,7 +90,7 @@ class User: percents['cpu'] = round(self.usage['cpu'] / self.limits['cpu'] * 100) percents['mem'] = round(self.usage['mem'] / self.limits['mem'] * 100) percents['disk'] = round(self.usage['disk'] / self.limits['disk'] * 100) - for resource in percents.items(): + for resource in percents: if percents[resource] > 100: percents[resource] = 100 return percents