From 2a849ff8be926baa68445d2e48fd226f11ad0ed2 Mon Sep 17 00:00:00 2001 From: Compiler Date: Sun, 27 Nov 2022 20:43:56 +0100 Subject: [PATCH] Adden create and delete environment --- __pycache__/main.cpython-311.pyc | Bin 8015 -> 8544 bytes containers.yaml | 36 ++++++++++++++++++++++++++++++ main.py | 37 +++++++++++++++++++++---------- 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc index 4b557ca33b1f500dad494903cca318b3da338491..b55c005f3a11ce85286f6e4f22a3e7ec72bd2509 100644 GIT binary patch delta 3470 zcmai0U2Gf25xzSf|0&UuC{mL3LrGR8>c_O@IB68ih9%jSQ%nAl(nN9sn&O@)N+gfi zJIeZv`p}s> z(ljYGJ>uqeXNEI7v)|0_A5K3Rs{DCHg@c3VkH2~+@)Pf!$~xhwc&F>j4aqm(gnWFY zMwm4lV~*Q(?+6@sA70~`ZV|W(967Ybkt)f(V*(kxd6{3ARfDW%pRAR5NGIVo`0WS zr&M>hi+ygYd6^?El5;*#FtOWO8WU-g{IddS-xA9_b)%=6BW0dCq#m{_1YbDrF7u}@ z52RQVXJk1}YgxuT=BNe+MdD+fma7(oDy?R3TO$2l9Qu&dA*n~wfCRx!b;TAOwH8Pd ztFiVN7FyYe^(0@zR;=&6)B*B)yk<)*hf=blDgl8aOXE`t7J}bT(TrxFjU|b$L3?4| z&IW8ld^20OEnVz_c|g$YQZk*8XjqkKH*!pQJ2Bb=Qw1x>U$ExZt${^p$*_40q+RT^ zeH?85z<#Ag527>@O{B7{(icFpkNwAf7&Pk~7tSEk%VO5-QAstTp)Y~>IJ`;~kiWuj zlY8Q-{_$wW*_08RXfylRk$DXRrY`~sh?+=Z5tX`-gJEcva4IDw38ZBJr*=$I2z5%* z5Ky-=)E3QJ+w<`YKa~9@w2+1&#ZvzR~C}xq0NbE??Bk5*8tL*63x74gB zyu^c(NO38@Zh8syhuPmNDL9ebkL5Ba#VlD4^mIyh2P7csTdyaKeh0ayfhf2zKtLW) z&UA_tGDgQibcua(Xc0VjRrT;$_IpQv)3Zj*afC;J8_x*$*6_N(K6887=U(52uqF^w zQA)%WP+Q}PxyVD#GrpyaZza}U+YT)5J}yvy)`i<6go8r0k86%$IjM$YNr@^?n~5A* zkm%8v9E`_iXqYYslN-@ka%mtAp(v^*Cc_EoDc?uizz%H(GI>wb%&|l`D$xm;Y8E1? z;mDj;l}gXVW6E489FGHPC={NVVg@zWayStWMZl|+R1t3^5l)6vG0lNIV_wH5dUNFA35xUvIC&jjs~I;Jj^j zd$YB{94DC91cPqdzwk6=JzanD^gi_TW=>3Gre-pcSaxb-KC_VAn@VQnn>mhK=7)uU za$JfZ5x(NMY4`y1oG@z4MsapgxQd@^!t1DcQFz0Uy@AXd0>RHsVO7X@dci{N8Y%(Z zwr|@XiH^PK_xX!lMxwOb!l}K znx!d{ASHEW#mdEOFMt`sx;$!Cz7^yP4rJ`E$ICzbKS&>XhIH=+09`18mzeTE7mGX{ z=mmax0a%D-*IIgu0iX}-K(~$4tC$qTD4j%7L~y{Qxe!+yI`%>_qM2u98j&=9F^^d~ zh5wjFavg|fp;AI#l;~S9DQWzAI&>08(YrtnK;Rd(t$FgVt z5K(nmM-^J#w&!e|*@?JfV_u)b3QKwi-hce^LDJjC_jq8Oe~7J^Xy`#b>!Mm&ka66+ zlYQiCnX<2m#8K2Euw}c>vhE_@?p2E_9Biv=x1#i#2EC_pe8pBk^(38P*1B$wu}Rm! ztFcqB!HC_etKF!9f#yg^Bo+>-%PA>PL8GXJD5i5rBB%k~2T`n<SvL&fauFeDDq*++pT3bn)5t=}qDJ?fd!=%hlKF_nN?q%-L{ae{p0tm~jv6xd*cDflb$g zA2t4qZ@2T#4|{SPe2U~N6DOR`@`E`6*>&uG^C@|I?CxT=^Xz8B9zT@jhjN0AcYXkc t0-qwmKMwN+an1{8!Mnci`L=y~d{vgO$_Wkp2%qDSqH1*+&yeWN`oClqE{OmD delta 2780 zcmaJ?O>7%Q6y9C09sebET*pqDICYwY#QCYy@>i77pQQh#p@p>2R3x~bY2sq9t=ToS zp~V3rC{NX51|m_d5Xym8a6tj79D3rtaojX<#8~^Scix-t z&HI@*^L;;Vt@^yO(k;Q*d*l72wB|}xt@4lUO8focJreOvO2kinQ#MJu1y6AdMHC5S z)gTL$$r{NT5+pSwbj?P>q?Xj-zfomq9a%dm4Mj;kU=yvqzMjj0nzn{18JOWI4icG^ zrr__b(u6eBT+(fBT%o(JOt*y(D|Nk%)N|^I62WwIN&!B2ii0%K$Vr8)pHx@aX)D?3 zZeC%hg|@?r*0L2bSkZxAG&O_8&XR>Pi?E(wP~xlciruKBt&Dqv@TC2JJ&Dmq*jGo{ z+V~?+I?FuiffZe4D>jxq>0W(B_o^#I24fpm*oc>9WfO6|EX8{Gkb0MIvH##*1Cg@S z6WMH<1$oGE&|M7^3?albj>C?K_~bK=uUoS8EtxvXyJF@@ojCFgXkjA)c0jpaI-(umMtn9lWl!r3QB z_+J%u{8#75zBZVPDVB?B`3z+VgR&UT*cQ1`tOGuEJSNc+qfambD?MH0jf1p}Pr3$x z_h;9kUg5}cZ!DE%vj%$-G`o;60PqL=CZu_9jT!DTJ>90-%_4l*y=PlH2v z=qGyy#63uY;VqE_KHY12BBmMvj^Ewp5ex-;8X%@xDoG^`=EWIw&T=GjIjRu|*mL;l z!tjlt&a%LHlZ-+<7L9HN&8N7_`$7maH13Iun8)8vk#izcJRS=1cfFV7&D>vEFL&~; z%9d8K3AC|{*jaLg?FLaV&sQE+kyKF3SN_(y9X{9&gg%640b)*uQD!QF3t<;RjQ?5H z+JR;)yGY0~LmooYbkPHL0F?UpW*-xklvMb}P>|2~W(wPpXvx}A;2f)(>_v4^BdTy* z#E|XB+2;Xt+#!_8V)c3QIZ_HDI|w4&hMoZ^Chne>@AdWazUoe>9S!g_-xzFCi88A2 zTrdPr*kdEMX?4mD9na1$2SbI=q;twy1&*J6z_KM1hNY%cx-kfecIXDl<_+N z7)`!msRli5fY`0)PvlrONp;<_vAkxfhxQ%X#a@ElK*0~d3-~g`asWpzZ!E8R_hLEF z{o0%CIOraQN8b#v=!rXcal_Tt>yE39Uye@~z8jw@n8PQ`RK|2`vuv;Y;viJ28hlWA7yuul=tA^tbd=Ftv{fIxX%pLGFXN`{`WQ{88J=pk9pO>7 ztN_*COtGw%p&FDhH4>@x%?gHFW3M2*3ShYzHS$bLW(i$UKsTXhh=d;ly=Apifkg`B zjDTdAe^FyRs!@3ca&(7CV{%G{EVu^PYoIg8h5=XG8ZUaqVH{l#(0%`eui zJK!WPq7Y@;Jq0Cs3(HcBbE<)TcX6Cmh-ccn{5l1nDhI}$rL2HsTwU8CkMnl}O$CGM zSW5O(CNWAaRZC>3<-ouv$E@mH{siQ4Y$TCRL)&16KJJHBlTHCuDyzj$=~)e$4)#9F zouMR^7%|S|Xw17JVIuX&iW#%)>Fiq+YB|SJn$e2giewU6BA2opViUTh=JM&ZTe3YMVXprN#Rdi&!|unwQ^851m^wS&~oF zt?Ux$$nfaj-_AtB^6hJl|H{p(9Jt!KAi--1{M9sj8xuQe_^gr<4 BjzItb diff --git a/containers.yaml b/containers.yaml index e69de29..378df23 100644 --- a/containers.yaml +++ b/containers.yaml @@ -0,0 +1,36 @@ +Containers: +- name: nlcdcds1 + cpu: 2 + memory: 2 + image: + version: +- name: nlcdcds2 + cpu: 2 + memory: 2 + image: + version: +- name: nlcdcrs2 + cpu: 2 + memory: 2 + image: + version: +- name: nlcdcrs3 + cpu: 2 + memory: 2 + image: + version: +- name: brcdcds1 + cpu: 2 + memory: 2 + image: + version: +- name: brcdcds2 + cpu: 2 + memory: 2 + image: + version: +- name: brcdcrs5 + cpu: 2 + memory: 2 + image: + version: diff --git a/main.py b/main.py index 5b493e9..6a54d69 100644 --- a/main.py +++ b/main.py @@ -18,6 +18,7 @@ uri = "unix:///run/user/1000/podman/podman.sock" podmanapi = PodmanClient(base_url=uri) yaml_file = open("containers.yaml", 'r') +yaml_content = yaml.load(yaml_file,Loader=yaml.FullLoader) class Post(BaseModel): title: str @@ -85,10 +86,15 @@ async def update_post(id: int, post: Post): @app.post("/create_env", status_code=status.HTTP_201_CREATED) async def create_env(env: Environment): - cmd = subprocess.run(["cat","list"],stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True, text=True) + env_dict = env.dict() + #print(env_dict) + #cmd = subprocess.run(["cat","list"],stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True, text=True) # store the output in the list - output = (f"{cmd.stdout}") - return output + #output = (f"{cmd.stdout}") + for container in yaml_content['Containers']: + #print(container['name'],'-', env_dict['username'],'-',env_dict['uid'],sep='') + container = podmanapi.containers.run(image="docker.io/library/nginx:latest",name=container['name']+'-'+env_dict['username']+'-'+env_dict['uid'],detach=True,publish_all_ports=True) + return @app.get("/environment/{id}") @@ -99,13 +105,16 @@ async def get_env(id: str): else: return {"environment_detail": cmd} -@app.delete("/environment/{id}") -async def get_env(id: str): - cmd = subprocess.run(["cat list | grep %s" % id],stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) - if cmd.returncode != 0: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Post id {id} not found") - else: - return {"Deleted environment": {id}} +@app.delete("/delete_env", status_code=status.HTTP_204_NO_CONTENT) +async def get_env(env: Environment): + env_dict = env.dict() + #cmd = subprocess.run(["cat list | grep %s" % id],stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + for container in yaml_content['Containers']: + container = podmanapi.containers.remove(container_id=container['name']+'-'+env_dict['username']+'-'+env_dict['uid'],force=True,v=True) + #if container: + # raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Post id {id} not found") + #else: + return @app.get("/list") @@ -123,11 +132,15 @@ async def ping_host(): print (output2) #for image in podmanapi.images.list(): # print(image, image.id, "\n") + #for key, value in yaml_content.items(): + # print(f"{key}: {value}") + image = podmanapi.images.pull("docker.io/nginx", tag="latest") + for container in yaml_content['Containers']: + container = podmanapi.containers.run(image="docker.io/library/nginx:latest",name=container['name'],detach=True,publish_all_ports=True) #output = podmanapi.images.list() #json_str = json.dumps(podmanapi.df(), indent=4) - image = podmanapi.images.pull("docker.io/nginx", tag="latest") #container = podmanapi.containers.create(image="docker.io/library/nginx:latest",name='test',detach=True,publish_all_ports=True) - container = podmanapi.containers.run(image="docker.io/library/nginx:latest",name='test',detach=True,publish_all_ports=True) + #container = podmanapi.containers.run(image="docker.io/library/nginx:latest",name='test',detach=True,publish_all_ports=True) #run_container = podmanapi.containers.run(image="docker.io/library/nginx:latest",name='test',stdout=True, stderr=False) #json_str = json.dumps(podmanapi.containers.list(), indent=4) #print(json.dumps(podmanapi.version(), indent=4))