profile browser deletion/removal:
- ensure profile browser DELETE command is working - ensure profile browser job expires if no initial ping - logging: print exception for base job if init fails
This commit is contained in:
		
							parent
							
								
									df905682a5
								
							
						
					
					
						commit
						b11a5f136a
					
				| @ -3,6 +3,7 @@ | |||||||
| import os | import os | ||||||
| import asyncio | import asyncio | ||||||
| import sys | import sys | ||||||
|  | import traceback | ||||||
| 
 | 
 | ||||||
| import yaml | import yaml | ||||||
| 
 | 
 | ||||||
| @ -41,7 +42,11 @@ class K8SJobMixin(K8sAPI): | |||||||
| 
 | 
 | ||||||
|         data = self.templates.env.get_template(template).render(params) |         data = self.templates.env.get_template(template).render(params) | ||||||
| 
 | 
 | ||||||
|         await create_from_yaml(self.api_client, data, namespace=self.namespace) |         try: | ||||||
|  |             await create_from_yaml(self.api_client, data, namespace=self.namespace) | ||||||
|  |         except Exception: | ||||||
|  |             traceback.print_exc() | ||||||
|  |             return | ||||||
| 
 | 
 | ||||||
|     async def delete_job_objects(self, selector): |     async def delete_job_objects(self, selector): | ||||||
|         """ delete crawl stateful sets, services and pvcs """ |         """ delete crawl stateful sets, services and pvcs """ | ||||||
|  | |||||||
| @ -135,7 +135,7 @@ class K8SManager(BaseCrawlManager, K8sAPI): | |||||||
| 
 | 
 | ||||||
|     async def delete_profile_browser(self, browserid): |     async def delete_profile_browser(self, browserid): | ||||||
|         """ delete browser job, if it is a profile browser job """ |         """ delete browser job, if it is a profile browser job """ | ||||||
|         return await self._handle_completed_job(f"job-{browserid}") |         return await self._delete_job(f"job-{browserid}") | ||||||
| 
 | 
 | ||||||
|     # ======================================================================== |     # ======================================================================== | ||||||
|     # Internal Methods |     # Internal Methods | ||||||
| @ -148,25 +148,19 @@ class K8SManager(BaseCrawlManager, K8sAPI): | |||||||
|         """ decode secret data """ |         """ decode secret data """ | ||||||
|         return base64.standard_b64decode(secret.data[name]).decode() |         return base64.standard_b64decode(secret.data[name]).decode() | ||||||
| 
 | 
 | ||||||
|     async def _handle_completed_job(self, job_name): |     async def _delete_job(self, name): | ||||||
|         """ Handle completed job: delete """ |         """ delete job """ | ||||||
|         # until ttl controller is ready |  | ||||||
|         if self.no_delete_jobs: |  | ||||||
|             return |  | ||||||
| 
 |  | ||||||
|         try: |         try: | ||||||
|             await self._delete_job(job_name) |             await self.batch_api.delete_namespaced_job( | ||||||
|  |                 name=name, | ||||||
|  |                 namespace=self.namespace, | ||||||
|  |                 grace_period_seconds=60, | ||||||
|  |                 propagation_policy="Foreground", | ||||||
|  |             ) | ||||||
|  |             return True | ||||||
|         # pylint: disable=bare-except |         # pylint: disable=bare-except | ||||||
|         except: |         except: | ||||||
|             pass |             return False | ||||||
| 
 |  | ||||||
|     async def _delete_job(self, name): |  | ||||||
|         await self.batch_api.delete_namespaced_job( |  | ||||||
|             name=name, |  | ||||||
|             namespace=self.namespace, |  | ||||||
|             grace_period_seconds=60, |  | ||||||
|             propagation_policy="Foreground", |  | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|     async def _create_config_map(self, crawlconfig, **kwargs): |     async def _create_config_map(self, crawlconfig, **kwargs): | ||||||
|         """ Create Config Map based on CrawlConfig """ |         """ Create Config Map based on CrawlConfig """ | ||||||
|  | |||||||
| @ -33,6 +33,9 @@ class ProfileJob(ABC): | |||||||
| 
 | 
 | ||||||
|         self.loop.create_task(self.async_init("profilebrowser.yaml", params)) |         self.loop.create_task(self.async_init("profilebrowser.yaml", params)) | ||||||
| 
 | 
 | ||||||
|  |         print(f"running browser for at least {self.idle_timeout} secs", flush=True) | ||||||
|  |         signal.setitimer(signal.ITIMER_REAL, self.idle_timeout, 0) | ||||||
|  | 
 | ||||||
|     async def async_init(self, template, params): |     async def async_init(self, template, params): | ||||||
|         """ async init, overridable by subclass """ |         """ async init, overridable by subclass """ | ||||||
|         await self.init_job_objects(template, params) |         await self.init_job_objects(template, params) | ||||||
| @ -52,12 +55,12 @@ class ProfileJob(ABC): | |||||||
| 
 | 
 | ||||||
|         signal.setitimer(signal.ITIMER_REAL, self.idle_timeout, 0) |         signal.setitimer(signal.ITIMER_REAL, self.idle_timeout, 0) | ||||||
| 
 | 
 | ||||||
|     def timeout_handler(self): |     def exit_handler(self): | ||||||
|         """ handle SIGTERM  """ |         """ handle SIGTERM  """ | ||||||
|         print("sigterm: shutting down browser...", flush=True) |         print("sigterm: shutting down browser...", flush=True) | ||||||
|         self._do_exit() |         self._do_exit() | ||||||
| 
 | 
 | ||||||
|     def exit_handler(self): |     def timeout_handler(self): | ||||||
|         """ handle SIGALRM """ |         """ handle SIGALRM """ | ||||||
|         print("sigalrm: timer expired ending idle browser...", flush=True) |         print("sigalrm: timer expired ending idle browser...", flush=True) | ||||||
|         self._do_exit() |         self._do_exit() | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user