leadguru-jobs 0.692.0__py3-none-any.whl → 0.693.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.692.0
3
+ Version: 0.693.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -1,4 +1,4 @@
1
- lgt_jobs/__init__.py,sha256=VepHCuCW4uUqx6Nj5gKdZeJ9IYDSyhlD70FvpnKNmPk,2316
1
+ lgt_jobs/__init__.py,sha256=fQ97ZFeVtbOgODPdB26x7ku45AQPQ8ixeziiCAjNYZM,2451
2
2
  lgt_jobs/basejobs.py,sha256=LPEclvY6fIG17YMGy9pRK0Q58n62gkI5W1BTK6R2p-c,1234
3
3
  lgt_jobs/env.py,sha256=cRO03GGvstUjBsv3uYO-iakrOvAk_ZWUP_fnmf21iZQ,789
4
4
  lgt_jobs/main.py,sha256=cK_nkBtJHnUNDbba1WZotqPtI_6OWxiYQkAgco9OAmE,1539
@@ -14,6 +14,7 @@ lgt_jobs/assets/images/mail.png,sha256=eORzQcAMkFr7DjgtABVhJ_zFuXgO7OXv78lLF4b39
14
14
  lgt_jobs/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  lgt_jobs/jobs/analytics.py,sha256=IIsWt4A1qUw3w-S-8W16uKY1FRVWfXXA41_mu4uCNiM,979
16
16
  lgt_jobs/jobs/bot_stats_update.py,sha256=3gq1Ilj_RHddYeSny_238ITs7YIfCf7d4BmfYU8PKlo,8177
17
+ lgt_jobs/jobs/bots_killer.py,sha256=s2f7kal4vAMJd9YaMQ1X3FkCrLWCKNb-bWeI9RZ1Oco,506
17
18
  lgt_jobs/jobs/chat_history.py,sha256=rj337uHT2XmyDu3oMPbnCBxSsRn4roxDNS0hsbvoI7I,5040
18
19
  lgt_jobs/jobs/connect_sources.py,sha256=vOKu2Q9cmQsj4VMVzOoEJkD1wzE9XurbIChx35rES8I,4957
19
20
  lgt_jobs/jobs/inbox_leads.py,sha256=6UhPp9AfSAGb3elFDT6jm7j2HZ9jPOPngsUj-hUKAYw,4867
@@ -104,9 +105,10 @@ lgt_jobs/lgt_data/repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
104
105
  lgt_jobs/lgt_data/repositories/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
106
  lgt_jobs/lgt_data/repositories/post/posts.py,sha256=ZA19L-CYdxLhlapyMQtSJzP3QMUlHq9UEgW3ab86aDs,1024
106
107
  lgt_jobs/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
+ lgt_jobs/services/k8_manager.py,sha256=bXpka9psIQ5UJ6QG_e4xolmE_3gtmNrzzZeL03bJ62I,995
107
109
  lgt_jobs/services/web_client.py,sha256=oMyWJxwGeIe3f40fPT7xcisjDg3BhA3Ipf8dr1jVT-Y,1549
108
110
  lgt_jobs/templates/new_message.html,sha256=dZl8UmdAOOMq4nidvAgMFroSrTV7Pw0RWt2yLp_2idg,6989
109
- leadguru_jobs-0.692.0.dist-info/METADATA,sha256=MryU6Xz8TH9h3srWm6vchXspthp8KK1nQX51K7CKTvU,1319
110
- leadguru_jobs-0.692.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
111
- leadguru_jobs-0.692.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
112
- leadguru_jobs-0.692.0.dist-info/RECORD,,
111
+ leadguru_jobs-0.693.0.dist-info/METADATA,sha256=LD6pdCdAEo2oTXSGd3WZk0jH3dgux1qvvXp3ByNuoXU,1319
112
+ leadguru_jobs-0.693.0.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
113
+ leadguru_jobs-0.693.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
114
+ leadguru_jobs-0.693.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.5.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
lgt_jobs/__init__.py CHANGED
@@ -15,6 +15,7 @@ from .runner import (BackgroundJobRunner)
15
15
  from .simple_job import (SimpleTestJob, SimpleTestJobData)
16
16
  from .jobs.load_slack_people import (LoadSlackPeopleJob, LoadSlackPeopleJobData)
17
17
  from .jobs.load_slack_users import LoadSlackUsersJob, LoadSlackUsersJobData
18
+ from .jobs.bots_killer import BotsKillerJob, BotsKillerData
18
19
 
19
20
  jobs_map = {
20
21
  "SimpleTestJob": SimpleTestJob,
@@ -27,6 +28,7 @@ jobs_map = {
27
28
  "SendMassMessageSlackChannelJob": SendMassMessageSlackChannelJob,
28
29
  "ConnectSourceJob": ConnectSourceJob,
29
30
  "LoadSlackPeopleJob": LoadSlackPeopleJob,
31
+ "BotsKillerJob": BotsKillerJob,
30
32
  "LoadSlackUsersJob": LoadSlackUsersJob
31
33
  }
32
34
  __all__ = [
@@ -43,6 +45,7 @@ __all__ = [
43
45
  ConnectSourceJob,
44
46
  LoadSlackPeopleJob,
45
47
  LoadSlackUsersJob,
48
+ BotsKillerJob,
46
49
 
47
50
  # module classes
48
51
  BackgroundJobRunner,
@@ -60,6 +63,7 @@ __all__ = [
60
63
  ConnectSourceJobData,
61
64
  LoadSlackPeopleJobData,
62
65
  LoadSlackUsersJobData,
66
+ BotsKillerData,
63
67
  # mapping
64
68
  jobs_map
65
69
  ]
@@ -0,0 +1,21 @@
1
+ from abc import ABC
2
+ from pydantic import BaseModel
3
+ from lgt_jobs.basejobs import BaseBackgroundJob, BaseBackgroundJobData
4
+ from lgt_jobs.services.k8_manager import K8Manager
5
+
6
+ """
7
+ Kill bots
8
+ """
9
+
10
+
11
+ class BotsKillerData(BaseBackgroundJobData, BaseModel):
12
+ environment: str
13
+
14
+
15
+ class BotsKillerJob(BaseBackgroundJob, ABC):
16
+ @property
17
+ def job_data_type(self) -> type:
18
+ return BotsKillerData
19
+
20
+ def exec(self, data: BotsKillerData):
21
+ K8Manager().delete_bots(f'leadguru-{data.environment}')
@@ -0,0 +1,28 @@
1
+ import json
2
+ import logging as log
3
+ import os
4
+
5
+ from kubernetes import config
6
+ from kubernetes.client.api.core_v1_api import CoreV1Api
7
+ from kubernetes.client.rest import ApiException
8
+
9
+
10
+ class K8Manager:
11
+
12
+ def __init__(self):
13
+ with open(os.environ.get('K8_CONFIG'), 'r') as k8_config:
14
+ config.load_kube_config_from_dict(json.loads(k8_config.read()))
15
+
16
+ @staticmethod
17
+ def delete_bots(namespace: str):
18
+ api_instance = CoreV1Api()
19
+ pod_names_to_delete = ['lgt-slack-bots-v2', 'lgt-discord-bots', 'lgt-bg-worker']
20
+ pods = api_instance.list_namespaced_pod(namespace)
21
+ pods_to_delete = [pod.metadata.name for pod in pods.items for name in pod_names_to_delete
22
+ if name in pod.metadata.name]
23
+ for pod in pods_to_delete:
24
+ try:
25
+ api_instance.delete_namespaced_pod(pod, namespace)
26
+ log.info(f'Killed pod: {pod}')
27
+ except ApiException as e:
28
+ log.error(str(e))