From 28f34e2ae729c0e40874ebfc2e60f3854d95f724 Mon Sep 17 00:00:00 2001 From: Ulas Kozat Date: Fri, 3 Jun 2016 22:48:03 -0700 Subject: [PATCH] added sqlite3 support at Domino Server for label subscriptions and client registrations Change-Id: Ia3d741adadb20eb92525a4640ad70fa3fdc435a2 Signed-off-by: Ulas Kozat --- DominoServer.py | 58 +++++++++++++++++++++++++++----- domino_conf.py | 2 +- lib/thrift/protocol/TBinaryProtocol.pyc | Bin 10720 -> 0 bytes lib/thrift/protocol/TProtocol.pyc | Bin 14621 -> 0 bytes lib/thrift/protocol/__init__.pyc | Bin 254 -> 0 bytes lib/thrift/server/TServer.pyc | Bin 8801 -> 0 bytes lib/thrift/server/__init__.pyc | Bin 177 -> 0 bytes lib/thrift/transport/TSocket.pyc | Bin 5822 -> 0 bytes lib/thrift/transport/TTransport.pyc | Bin 17217 -> 0 bytes lib/thrift/transport/__init__.pyc | Bin 213 -> 0 bytes 10 files changed, 50 insertions(+), 10 deletions(-) delete mode 100644 lib/thrift/protocol/TBinaryProtocol.pyc delete mode 100644 lib/thrift/protocol/TProtocol.pyc delete mode 100644 lib/thrift/protocol/__init__.pyc delete mode 100644 lib/thrift/server/TServer.pyc delete mode 100644 lib/thrift/server/__init__.pyc delete mode 100644 lib/thrift/transport/TSocket.pyc delete mode 100644 lib/thrift/transport/TTransport.pyc delete mode 100644 lib/thrift/transport/__init__.pyc diff --git a/DominoServer.py b/DominoServer.py index 39c4632..f2a22e2 100755 --- a/DominoServer.py +++ b/DominoServer.py @@ -14,6 +14,7 @@ import sys, os, glob, random, errno import getopt, socket import logging, json +import sqlite3 #sys.path.append('gen-py') #sys.path.insert(0, glob.glob('./lib/py/build/lib.*')[0]) sys.path.insert(0, glob.glob('./lib')[0]) @@ -131,15 +132,21 @@ class CommunicationHandler: #Logic for a new UDID assignment self.seqno = self.seqno + 1 - - # Store the Domino Client info - # TBD: check the sequence number to ensure the most recent record is saved - self.dominoServer.registration_record[reg_r.domino_udid_assigned] = reg_msg - data = {} - data[reg_r.domino_udid_assigned] = [reg_msg.ipaddr, reg_msg.tcpport, reg_msg.supported_templates, reg_msg.seq_no] - with open(SERVER_DBFILE, 'a') as f: - json.dump(data, f) - f.close() + + #commit to the database + dbconn = sqlite3.connect(SERVER_DBFILE) + c = dbconn.cursor() + try: + newrow = [(reg_r.domino_udid_assigned, reg_msg.ipaddr, reg_msg.tcpport, ','.join(reg_msg.supported_templates), reg_msg.seq_no),] + c.executemany('INSERT INTO clients VALUES (?,?,?,?,?)',newrow) + except sqlite3.OperationalError as ex: + logging.error('Could not add the new registration record into %s for Domino Client %d : %s', SERVER_DBFILE, reg_r.domino_udid_assigned, ex.message) + except: + logging.error('Could not add the new registration record into %s for Domino Client %d', SERVER_DBFILE, reg_r.domino_udid_assigned) + logging.error('Unexpected error: %s', sys.exc_info()[0]) + + dbconn.commit() + dbconn.close() return reg_r @@ -177,6 +184,23 @@ class CommunicationHandler: self.dominoServer.subscribed_labels[sub_msg.domino_udid].difference_update(set(sub_msg.labels)) logging.debug('Supported Template: %s Supported Labels: %s' , self.dominoServer.subscribed_templateformats[sub_msg.domino_udid] , self.dominoServer.subscribed_labels[sub_msg.domino_udid]) + + #commit to the database + dbconn = sqlite3.connect(SERVER_DBFILE) + c = dbconn.cursor() + newlabelset = self.dominoServer.subscribed_labels[sub_msg.domino_udid] + try: + c.execute("REPLACE INTO labels (udid, label_list) VALUES ({udid}, '{newvalue}')".\ + format(udid=sub_msg.domino_udid, newvalue=','.join(list(newlabelset)) )) + except sqlite3.OperationalError as ex1: + logging.error('Could not add the new labels to %s for Domino Client %d : %s', SERVER_DBFILE, sub_msg.domino_udid, ex1.message) + except: + logging.error('Could not add the new labels to %s for Domino Client %d', SERVER_DBFILE, sub_msg.domino_udid) + logging.error('Unexpected error: %s', sys.exc_info()[0]) + + dbconn.commit() + dbconn.close() + #Fill in the details sub_r = SubscribeResponseMessage() @@ -329,6 +353,22 @@ def main(argv): print ex.message sys.exit(2) + #start the database with schemas + dbconn = sqlite3.connect(SERVER_DBFILE) + c = dbconn.cursor() + try: + c.execute('''CREATE TABLE labels (udid INTEGER PRIMARY KEY, label_list TEXT)''') + except sqlite3.OperationalError as ex: + logging.debug('In database file %s, no table is created as %s', SERVER_DBFILE, ex.message) + + try: + c.execute('''CREATE TABLE clients (udid INTEGER PRIMARY KEY, ipaddr TEXT, tcpport INTEGER, templatetypes TEXT, seqno INTEGER)''') + except sqlite3.OperationalError as ex: + logging.debug('In database file %s, no table is created as %s', SERVER_DBFILE, ex.message) + + dbconn.commit() + dbconn.close() + logging.debug('Domino Server Starting...') server.start_communicationService() print 'done.' diff --git a/domino_conf.py b/domino_conf.py index f311d43..55f8367 100644 --- a/domino_conf.py +++ b/domino_conf.py @@ -16,4 +16,4 @@ DEFAULT_TOSCA_PUBFILE = './tosca-templates/tosca_helloworld_nfv.yaml' SERVER_UDID = 0 TOSCADIR = './toscafiles/' TOSCA_DEFAULT_FNAME = 'template1.yaml' -SERVER_DBFILE = 'dominoserver.json' +SERVER_DBFILE = 'dominoserver.db' diff --git a/lib/thrift/protocol/TBinaryProtocol.pyc b/lib/thrift/protocol/TBinaryProtocol.pyc deleted file mode 100644 index 8c895567464dfbe70f1cbeddcff947b4578cad7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10720 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 diff --git a/lib/thrift/protocol/TProtocol.pyc b/lib/thrift/protocol/TProtocol.pyc deleted file mode 100644 index 8ec8411aea978ca7c14d7bb03e4011477f4a4d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14621 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 F{{kIeSCjw% diff --git a/lib/thrift/protocol/__init__.pyc b/lib/thrift/protocol/__init__.pyc deleted file mode 100644 index a259bbd3fd3b31a7f4ca5ed11ef22f275ebc41a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmYL?!3u&v5QfK0D?#eeu}e2k`T`MAw+QpP7G;E`bil^8?zk%C$zw5}TA-}W>EQ;7XV~i`sSU?v3V&)XXNXaC^ gTP<^ps`g*Rm@FkS7FG`&($%8S;;ypgl)RyV5B79C1ONa4 diff --git a/lib/thrift/server/TServer.pyc b/lib/thrift/server/TServer.pyc deleted file mode 100644 index 5a9174df87f10a207ee73221a786a96e5edc9297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8801 zcmds7%Wot{8Lyrhk9WqeeTU7n2_czav1KQAZeVYf ztE;=ds{S6o@6lWQ=T!CY-}&^drpkVb_3u?KLkBe%# zn2$?pxs;E`)bg0pW2#kFdR%Q|`4PEQQ0f3KlrKF91PPcy2Tqw+|vnXy9tX44s_QPUCtADBI5KI{Yo>8xER}XU zqhnscQ|HgRwQl~}=dwG4S38R*p8Cuu&bevMhbumJ>7R2!PneZWkjT@YO$1NyCycti zbg=n=UffIfnjc-1%V*b`UDG^ClaeW*9YMQFcK;P!s?;5astfUK6jbu2x}#Lf;UwgA zhJT9cOj=N_BGq#^D5=(%%;baZvT~vyj1Vjd!4LN&NV<+CpZyuLSNJ1@=0^yXh0v#; zM<}CEvV_JnLSoztHNJE`G@Tw5YcpsivoSd#Cke(y7UEQFYy3O*!yEw}!t;I`c3_vvcimWiDM$!qs%n zYW`eiWwYIW$~UoRYBbJaY)+z6&T;3YQ<2}J7(b8JqY)=xs!wIApp z17SB^_fxk;kni?7UE}&m+=~J?j`R?7X9sXbqE|_n$^$qfc!`?7?})d}^_KjU_Y*FO zDO$auE)Q9C5H69;^Jtljef*e z*#!coFi`;VU9nGu7QoqTMhvwzu3ATEy?jP2wpEcC(8SD`>OZEo9+K^TB->S0YeH-r zcwJD=t?#O(rRZ5z0=l)P)J9b$A1miB(c8u3w9Nb-GvmsEWw(y1I}+PCk)v*6+tx9{ zz5~?AMmYV_hy@(SyNem7gwl3sQUEEfWHIS!ne&@X-A%Tg1!*7#A^r ztWb4o+}{&s^X)xqzqS7_X!`VOSI`XEgq;hOq5%6M<0+cwex`pG&+EeldM{&1PIiaY zo36hZ!Q$OWZvqFnvD?*&t9`_M2o+zJ?ZRaXa7-DRg>sHsx55hw z^)j0I1-hLG@7|uBCs^z1!5~ME;EJ$b|975Rs{kI7&0!mju0#y zURT7Nmte&uxE8{}wsIWjdy24Bf)#S=r@(_E@IW8~rq9K=eRE*@WSwPb3V!I+qv_Se z2a8K)P~_dm?n~&z{;YW60)&rN9b~xfM?qW5Ge)Pch=7Fu)TSI|$r!uMo}L&t+npv_e|v!w}vyX3Ds3 z()xF}fnQ@{AjBQ04!#Tc6R|C-15N?vqo|I&5;MC{y{wX!(6n9v4`irb&ru!Dz>4v` z5mdKQ{8@(TR*E}OeR_cEb`%UFJ_({EraFTc8X~kueppx*$w~nB0O!QlKFHBdiFhvN zh9K)vEZ(E+zQT^!=Y5skhT)i4_M1J82!Zjeb-YH#7AB1MH7@u%yFH-TJBJ%0Dd`R(E*|B5 zG!Yj;c!u#kH8*dUd6#+*(}fu$XTp10-(jA|^ny;oP3=a#&I)`Kc)J-V8yICr#$N=o zWyH z7h7*omdSP1cLheAOpc62;W2I9y0_s^dVfBeOJF|70(FvfC$s%`&1*xj~ zvV>&2U}eNF3!)qvIEM5sA3wmxHuo!3Y{d2dhwlSbW>w%uCIU&m=WM2JCFW-Wv^6y2 zwqwZDH-Hmk!j-nJ*Zz0h13~u36s*9R*`g z{-pYIVyCzvZkh>TNtut-=Dj?Hv?&|TfnAqw-Gdd|y*}A%uY0iKd$8gHaE(}DE}>gs zgyrVWV_$R=)9t0XexPO>W09D(_aw;FYYdzO*^xV~X+b=17IWSlyO-FVXGcKyo?^Ev zT-YOY^au)qmMD$du$`_%g1gXrhD2!o5?UMzOr>P8p z`c482Y!I_o`bBfH??!d|qJ@}evG)6Df9>8L16^PwsBeAZ zu*d@l2~#(SwQ-{uO62#9MwR;N{59rztQj!RBjI|S3LQFI&|k;OAY5J537)}8J3bz5 zqQ;;57rPT(k9dq^7Bm*Rx*4v9I8_^U`d&AHBZk9?;hn`9-S(4^=S5f);yXbU3(mon z!)@C~NM$~?w~-LWa%%c})TJ;R1@WfIK0n})%{ahU3>;Sbx5IWH1%A^F>Gf9n?n2z$ z(5V&OY$nJz!marTPmxvF=tdu3Ga}cd0ZPH#Ss;miokn^U&CpVIM`dd^9+U4@dD)8# zM&c~mN^?DI2jJc?`mos=ZXG-+V)*nsw4FID4R#Q3{01roSbR?rC<$j4JAr{)KXF(N z`<0W;+DukZ6GiGr}KE}+%V3P^i1h;RZaR>WZu0BvcN_K%VC$jaY zGntb6OLB62LPEIs92^Z8Yd;m?kWc}fY8y2Lo?OUMlk4&&14TG|Us;VUlDn9fpnv}Q zt4R_klFQ2ksw@#qT1p6_w;-w1YKS@k<6M0xsJG>Zq~DOD-yg6(O9F~W=4YG`6ZQ*H zO~TMUybxYaso2;<00g{?xR&CD-|gxsNcqhHpH17SS2c2bv)?85&7nU(eHLHZ&|6_z zlQYqnJ)(hlJL?p~V6TK)R%)V>O|7qR5&h($_$JQm6Ra|?p;Jz!Jgid|oykJEaMY=m z7*c)ypYo8uiPG!ZF;XOBMAZObvhoK%uspnR+E!^&g>s&q{e1!1fF3 z9ax)G$(N%0q2-vi*~(Q`ub^ePDHUr+C4NSV>5ENokhyd2a4HA*mJoVF_IUKWJ$Koj{x1la6 zXA;bM1o23Tm_p%Yy* zeIwyqW={BAzv4GHgi&pj*C8aC@moCc*y#sPKXLly{{q4RsO$g$ diff --git a/lib/thrift/server/__init__.pyc b/lib/thrift/server/__init__.pyc deleted file mode 100644 index 7a11045d62a6c8979b5cf2c6da3177c23d0cad85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmZSn%**v5?r~T$0~9a;X$K%K761|{K*Y$9&cqM}WH2!VYcK-^OW1)#NN{RVS!z*< z5Qy!UpO=)ApPZeUmkts3(_n-tjE_&u$%&8G0P-0SM6o=OtEZonnWSHmQIwfhqF)R) jPd`3BGcU6wK3=b&vV;Su#wIsEr8FniP6Ws<24V&PT4^SH diff --git a/lib/thrift/transport/TSocket.pyc b/lib/thrift/transport/TSocket.pyc deleted file mode 100644 index ff141f31e12ecf74b17ecb8e648b39c638f7770c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5822 zcmbVQTW=f36`oyE6iG{#;|psicC$|6gbondb&I$S($u=pjnb4-mrUdeb%+(YlvY~p zQadBtO6;Pr{ZgPs`cm}r(&s)D=pX5?=tBeKr9j`?e&3np#eiB^rnIwXW@pcwIp;f< z*}}hOtN;A$@1J&6{wv^q3zvR^riXt=#Y%0AXh&^0!*N$_xI?<2HVQ(!DlV#aub{#y z)yLGLda4wd{dA+GdQ&Pa$!KXbI<0!s91Y8=4{qhrg9_Jf)hm!A`VW51x&zX%dE1;o z+is=Z-OwxsIvk15r;E7s%V6ZCpnl=M@1 ze>>Gih(VeebCOF~PMvzjyA8E?JVk>YbFa4&1J6TMwuTR+D&DlPUCyw0tCB6MyJWenR8A%v+j&j zlD~p8G6n4-rg#&CHAVJXPV6|ukpl(dK}V@X%+wMooAm--5N&M-NiPn~6#Csb)uGQP zGRfx-kGl>36kfWDOVbp}sW`JvojNguO{bFtdts*|y6klJ(%wOgu1{^to8#q3Wu%&W;Km8ntH{WV>Q#l9rQZ;!n%c0w=S6#iINS>p6PPGXytMDN+e0jPoAAte zLkEu2ZV(fX(c{-)77EU5WbOCRdFbSJedr1S&$S~3^$`EiH9XLcz~hQCf-NydkdJOc zX)8%&q9Bew552(4)m5!}_}v-=S+M6(hPpP{RnKd0htl;->UGm33A+a5{N!vRx*jDa zpIvV+tzGpv_MO#Ul zg}wQ!ld?bK>JyvDm$e~)s~_mlyC0ct&um9Jm&$6PStsgz;@qbd#gqIwQq;J002A$n z>4EVXOzJeMc-iSiZ{HLID?)) z0vIC5Flx}zWJiJ_5nVFO_SkQqGulx>Iy4_j^jTzw0;nTGo5(VeWrnhFzSV94)Qd+f ziGq<{9fU~(jD~Uy^})O7qzM8#fi`x_DmzbtUgoG|R>mE5&i2vnNTO#-{D_m#MOGw% znCvKL7>dcexrGKr#Fw`uOj^*K!-(un0wwg6!)8M5e0NVDTkpgj__ZwzKV*+X%9(Ly z+*xN3as{NYU{{ti3V<_HH zch)elzMkBjeD&Y?tI+qf%KpaiP2Eqc+M}XMYK-FSm!+++j^YET8c`kX4uUzJL0IMH ztB4B_vbG9|=m$}e4NEQkO{ywAhs)fqfI5$w=9E)%s|Z4;ah-B& zsB)vxE{rlLG|- z!9}PnLt={)2`#-KyN{&E+|bX$a8vgTNaerE#zUjeqRF$bmxV#kyY6isno!rJEMfx5 z4b#2n3ld%%4h7kk9vUCeqbD~|j5hs7tI-xC>O(EY9>js^r`etjC??2^W)_p8OC}=W z`md8OE9^#dxwCq^b9?3EhK))L!q7E@{aj?(Jm~lRx6pqfSa6dJd-^;Y!lDKU)SSyx zRkz|!gPsFW1PX+~2nv5hhlUb70h+J~VTGF~J%3Luac9mnLpdQ?%X%IDb0qfrm z!Gxm7f(ZmLQxyCDoIG>Rs0G1%YRs8Tis~i+f;U0EideY+J+Tt%k*0+P$rn0F2(J6s!uBu0B2UXr z>k}`LDfKIE)#>!oE=~~zj#36GqUG$@T5Bx%M48VMuKx-fMr)tK`8V0T&*uAR#!wdO z`3f1I5%wA`IjZ4+=AJ)QDd4YCsa4KaPD=gOZiU&sFl)(SwTsE}qox;e>F=Tmhlg*T zM}RwE5T}289&v}~5gbe~4d)SiFe&qhLBMDVV7VW4#IUQ6p(qE9|8cbV7B~^xa%3dj zrNqfk6oP(^$hQj;kaS!f3Uw z{AolJ2`;R3SPb4&Yx_49{@2NPN@ZUQKd38z4L4Rfu0ox0c#e?+sfiDZdF`|RwasPI zQv3V^xoirx4>DL;{S0rF)FXTecl+JuQDdwYbt0ww}u|4mSmQ_bE$?kLUdJxO1vmhwLW$KT=7WX)Rr4b)MdQ!ZAV zmytftNy?maUU4ru7eSwK&f4f)#B92uL}vyG+DWhvKOnHAl7iCc7J_n~Q|uuH@Ejhs z$j0iCdJVd)A|>!iRGp|0__!NKNNA!geqR%1p_Dv`&9VKv33h+QrRmHH+vL}zrhMb{ zM=8Mn0MEv;-zR!($fwqP@)$2H)N@9cTX^%=xMX#S?9-JCb%80d=ToT`u-8EerpBeV zd_Wv`7x8V!msH4nVQj@GNnsS0Wy&o)eIaSZU*5ML)IK14eG&~0b^LRyh1!|gXa5BP CU`7-G diff --git a/lib/thrift/transport/TTransport.pyc b/lib/thrift/transport/TTransport.pyc deleted file mode 100644 index c7cf4cb02beb5c099f545b6135e70aa714c3de2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17217 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

k zQJ2NHC5#a0#hh#-31WQA$0X#JVUt)TpHGDwq@F4eZ5l;$ck3;;ufvsqFVzpokO^E6 zpg0Q+I7|7n^CSsdjuIF?#7mBiEQ?e{beYG_~&+-Z>H`$#{+=@`~`2;@f=u4<<_s8U# zxD!n3X=~0pl^xe2GlhE#xJWhKzy!yEAbtzY<`6_OsLI{=s(|d7WfNF!APn&jvQe5t zX)%UK3tB{yQBpSPD2@N=p3lb9C3D{B1)!`LRTSMZvlD{PAcxQvUDV*dN_i8Eto0nLqJb$kMc%tpqB zCx_xsy-+tdX|m~4n!y7THLb?~=Yd%(a3-45P{tlp7bHeAAM4MVkHh6Z0+4V_KFf4S zlf%~K8xCiVSKKXjxJm6SFr&qB?la>^a+Kgs9XU{uc<=-Bx&Mchoy2QX);Vjcc<%Jf X)tO5(r)Eyfj9#3-_%8Af&z<{UCP&!M diff --git a/lib/thrift/transport/__init__.pyc b/lib/thrift/transport/__init__.pyc deleted file mode 100644 index dcbb0129abb401b20daccb3808aa039e45b2a988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmZSn%**v5?r~T$0~D|TX$K%K76TF~K*Y$9!o-lm%#hB)5C!D2Fa&F`0;Nj0fJ8`0 zQDR;`Xw1fnQ0~ZB`~Y>