feat: Logfile output
This commit is contained in:
		
							parent
							
								
									672281f5c6
								
							
						
					
					
						commit
						a5861cc016
					
				
							
								
								
									
										42
									
								
								od-cli.py
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								od-cli.py
									
									
									
									
									
								
							| @ -2,9 +2,11 @@ | ||||
| # TODOs: | ||||
| # - Log for past runs (id/link to pipeline) | ||||
| # - Stop / Restart Pipeline | ||||
| # - Use toml config instead of StrEnums for easy extensibility | ||||
| import gitlab | ||||
| import typer | ||||
| import os | ||||
| import tomllib | ||||
| 
 | ||||
| from enum import StrEnum | ||||
| from typing_extensions import Annotated | ||||
| @ -18,12 +20,19 @@ MASTER_PASSWORD = os.environ.get("OD_MASTER_PASSWORD", "sovereign-workplace") | ||||
| USER = os.environ.get("OD_USER", "od-user") | ||||
| GL_USER = os.environ.get("OD_GL_USER", "od-gl-user") | ||||
| GL_PROJECT = os.environ.get("OD_GL_PROJECT", "1317") | ||||
| LOG_FILE = os.environ.get("OD_PIPELINE_LOG", "./__pipelines.log") | ||||
| 
 | ||||
| 
 | ||||
| class ExternalProviders(StrEnum): | ||||
|     kubernetes = "kubernetes" | ||||
|     stackit = "stackit" | ||||
| 
 | ||||
| 
 | ||||
| class Clusters(StrEnum): | ||||
|     qa = "qa" | ||||
|     run = "run" | ||||
|     b1_stackit_butterfly = "b1-stackit-butterfly" | ||||
|     one = "one" | ||||
| 
 | ||||
| 
 | ||||
| class Apps(StrEnum): | ||||
| @ -41,6 +50,8 @@ class Apps(StrEnum): | ||||
|     openproject = "openproject" | ||||
|     jitsi = "jitsi" | ||||
|     notes = "notes" | ||||
|     dev_nextcloud = "dev_nextcloud" | ||||
|     dev_bawu = "dev_bawu" | ||||
| 
 | ||||
| 
 | ||||
| @app.command() | ||||
| @ -76,10 +87,12 @@ def pipeline(pid: str): | ||||
| 
 | ||||
| 
 | ||||
| def _new_pipeline(ref: str, variables: str): | ||||
|     variables = _parse_variables(variables) | ||||
|     parsed_variables = _parse_variables(variables) | ||||
|     opendesk = gl.projects.get(1317) | ||||
|     new_pipeline = opendesk.pipelines.create({"ref": ref, "variables": variables}) | ||||
|     print(new_pipeline) | ||||
|     np = opendesk.pipelines.create({"ref": ref, "variables": parsed_variables}) | ||||
|     log = f"[{np.created_at[:-5].replace('T', ' ')}] {np.web_url} ({ref}): {variables}\n" | ||||
|     print(log) | ||||
|     _write_to_pipeline_log(log) | ||||
| 
 | ||||
| 
 | ||||
| @app.command() | ||||
| @ -92,6 +105,9 @@ def new_pipeline( | ||||
|     ee: bool = False, | ||||
|     env_stop: bool = False, | ||||
|     flush_external: bool = False, | ||||
|     external_provider: Annotated[ | ||||
|         ExternalProviders, typer.Option(case_sensitive=False) | ||||
|     ] = ExternalProviders.stackit, | ||||
|     debug: bool = True, | ||||
|     default_accounts: bool = True, | ||||
|     deploy: Annotated[List[Apps], typer.Option(case_sensitive=False)] = [Apps.none], | ||||
| @ -105,6 +121,7 @@ def new_pipeline( | ||||
|         f"MASTER_PASSWORD_WEB_VAR:{MASTER_PASSWORD}", | ||||
|         f"ENV_STOP_BEFORE:{_tf_to_yn(env_stop)}", | ||||
|         f"FLUSH_EXTERNAL_SERVICES_BEFORE:{_tf_to_yn(flush_external)}", | ||||
|         f"FLUSH_EXTERNAL_SERVICES_TYPE:{external_provider.upper()}", | ||||
|         f"RUN_TESTS:{_tf_to_yn(test)}", | ||||
|         f"TESTS_BRANCH:{test_branch}", | ||||
|         f"DEBUG_ENABLED:{_tf_to_yn(debug)}", | ||||
| @ -125,11 +142,21 @@ def new_pipeline( | ||||
|     elif Apps.all in deploy and len(deploy) > 1: | ||||
|         print("You cannot deploy 'all' but also specify specific apps at the same time") | ||||
|         exit(1) | ||||
|     elif Apps.dev_nextcloud in deploy and len(deploy) == 1: | ||||
|         STACK = ["nextcloud", "collabora", "cryptpad", "ums", "services", "migrations"] | ||||
|         variables += [f"DEPLOY_{app.upper()}:yes" for app in STACK] | ||||
|     elif Apps.dev_nextcloud in deploy and len(deploy) > 1: | ||||
|         print("You cannot deploy 'dev_nextcloud' but also specify specific apps at the same time") | ||||
|         exit(1) | ||||
|     elif Apps.dev_bawu in deploy and len(deploy) == 1: | ||||
|         STACK = ["nextcloud", "collabora", "ums", "ox", "services", "migrations"] | ||||
|         variables += [f"DEPLOY_{app.upper()}:yes" for app in STACK] | ||||
|     elif Apps.dev_bawu in deploy and len(deploy) > 1: | ||||
|         print("You cannot deploy 'dev_bawu' but also specify specific apps at the same time") | ||||
|         exit(1) | ||||
|     else: | ||||
|         variables += [f"DEPLOY_{app.value.upper()}:yes" for app in deploy] | ||||
| 
 | ||||
|     print(variables) | ||||
| 
 | ||||
|     _new_pipeline(ref, ",".join(variables)) | ||||
| 
 | ||||
| 
 | ||||
| @ -170,6 +197,11 @@ def _test_tf(): | ||||
|         assert _tf_to_yn(tf) == yn, f"{tf} != {yn} but is {_tf_to_yn(tf)}" | ||||
| 
 | ||||
| 
 | ||||
| def _write_to_pipeline_log(log: str): | ||||
|     with open(LOG_FILE, "a") as pipeline_log: | ||||
|         pipeline_log.write(log) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     gl.auth() | ||||
|     app() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Philip Gaber
						Philip Gaber