a
This commit is contained in:
		
				commit
				
					
						d51f7fcbfd
					
				
			
		
					 7 changed files with 153 additions and 0 deletions
				
			
		
							
								
								
									
										12
									
								
								Pipfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Pipfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| [[source]] | ||||
| name = "pypi" | ||||
| url = "https://pypi.org/simple" | ||||
| verify_ssl = true | ||||
| 
 | ||||
| [dev-packages] | ||||
| 
 | ||||
| [packages] | ||||
| click = "*" | ||||
| 
 | ||||
| [requires] | ||||
| python_version = "3.7" | ||||
							
								
								
									
										29
									
								
								Pipfile.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Pipfile.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| { | ||||
|     "_meta": { | ||||
|         "hash": { | ||||
|             "sha256": "e6728243c3982bd95c23ad63dc24514046979d9cf07efbb6dc60150bdf182788" | ||||
|         }, | ||||
|         "pipfile-spec": 6, | ||||
|         "requires": { | ||||
|             "python_version": "3.7" | ||||
|         }, | ||||
|         "sources": [ | ||||
|             { | ||||
|                 "name": "pypi", | ||||
|                 "url": "https://pypi.org/simple", | ||||
|                 "verify_ssl": true | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     "default": { | ||||
|         "click": { | ||||
|             "hashes": [ | ||||
|                 "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", | ||||
|                 "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==7.0" | ||||
|         } | ||||
|     }, | ||||
|     "develop": {} | ||||
| } | ||||
							
								
								
									
										0
									
								
								app/__init__
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								app/__init__
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										41
									
								
								app/api.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								app/api.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| import click | ||||
| import subprocess | ||||
| 
 | ||||
| 
 | ||||
| from app.helper import clone, clone_common,\ | ||||
|                        clone_etcd_wrapper, pipenv_install | ||||
| 
 | ||||
| @click.group() | ||||
| def api(): | ||||
|     pass | ||||
| 
 | ||||
| @api.command("setup") | ||||
| @click.option("--auth_name", required=True) | ||||
| @click.option("--auth_seed", required=True) | ||||
| @click.option("--auth_realm", required=True) | ||||
| @click.option("--realm_allowed", multiple=True, required=True) | ||||
| @click.option("--otp_server", default="https://otp.ungleich.ch/ungleichotp/", | ||||
|               help="URL of ungleich OTP server") | ||||
| 
 | ||||
| def setup(auth_name, auth_seed, auth_realm, realm_allowed, otp_server): | ||||
|     if clone("https://code.ungleich.ch/ungleich-public/ucloud-api.git"): | ||||
|         with open(".env", "w") as env_file: | ||||
|             lines = [f"AUTH_NAME={auth_name}", | ||||
|                      f"AUTH_SEED={auth_seed}", | ||||
|                      f"AUTH_REALM={auth_seed}", | ||||
|                      f"REALM_ALLOWED={realm_allowed}", | ||||
|                      f"OTP_SERVER={otp_server}"] | ||||
|              | ||||
|             env_file.writelines(lines) | ||||
|          | ||||
|         result = [] | ||||
|         result.append(clone_common()) | ||||
|         result.append(clone_etcd_wrapper()) | ||||
| 
 | ||||
|         if all(result): | ||||
|             result.append(pipenv_install("ucloud-api")) | ||||
|      | ||||
|     if all(result): | ||||
|         print("Successfull installation :)") | ||||
|     else: | ||||
|         print("Unsuccessful installation ;(") | ||||
							
								
								
									
										36
									
								
								app/helper.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								app/helper.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| import subprocess | ||||
| 
 | ||||
| 
 | ||||
| def clone(repo): | ||||
|     command = f"git clone {repo}" | ||||
|     try: | ||||
|         subprocess.check_output(command.split()) | ||||
|     except subprocess.CalledProcessError as e: | ||||
|         return False | ||||
|     else: | ||||
|         return True | ||||
|          | ||||
| 
 | ||||
| def clone_common(): | ||||
|     return clone("https://code.ungleich.ch/ungleich-public/ucloud_common") | ||||
| 
 | ||||
| def clone_etcd_wrapper(): | ||||
|     return clone("https://code.ungleich.ch/ahmedbilal/etcd3_wrapper") | ||||
| 
 | ||||
| 
 | ||||
| class Operation(object): | ||||
|     def __init__(self): | ||||
|         self.result = [] | ||||
|      | ||||
|     def execute(self, rc): | ||||
|         self.result.append(rc) | ||||
| 
 | ||||
| 
 | ||||
| def pipenv_install(_dir): | ||||
|     command = f"pipenv install" | ||||
|     try: | ||||
|         subprocess.check_output(command.split(), cwd=_dir) | ||||
|     except subprocess.CalledProcessError as e: | ||||
|         return False | ||||
|     else: | ||||
|         return True | ||||
							
								
								
									
										16
									
								
								app/scheduler.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/scheduler.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| import click | ||||
| import subprocess | ||||
| 
 | ||||
| 
 | ||||
| @click.group() | ||||
| def scheduler(): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| @scheduler.command("setup") | ||||
| def setup(): | ||||
|     command = "git clone https://code.ungleich.ch/ungleich-public/ucloud-scheduler.git" | ||||
|     try: | ||||
|         subprocess.check_output(command.split()) | ||||
|     except subprocess.CalledProcessError as e: | ||||
|         print("Some Error Occurrred", e) | ||||
							
								
								
									
										19
									
								
								ucloud-setup.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ucloud-setup.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| import click | ||||
| from app.api import api | ||||
| from app.scheduler import scheduler | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @click.group() | ||||
| def entry_point(): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| entry_point.add_command(api) | ||||
| entry_point.add_command(scheduler) | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     entry_point() | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue