From 8279fcc8b35906f4e4b3a1a1afb0df37d904e608 Mon Sep 17 00:00:00 2001 From: openstackdev86 Date: Wed, 30 Mar 2016 10:56:09 +0530 Subject: [PATCH 1/6] NTT updated scripts --- NTT/ntt-29-3-16-test/.discover_deploy.py.swp | Bin 0 -> 16384 bytes NTT/ntt-29-3-16-test/.discovery.py.swp | Bin 0 -> 16384 bytes NTT/ntt-29-3-16-test/.idea/misc.xml | 14 + NTT/ntt-29-3-16-test/.idea/modules.xml | 8 + .../.idea/ntt-29-2-16-test.iml | 12 + NTT/ntt-29-3-16-test/.idea/workspace.xml | 436 ++++++++++++++++++ NTT/ntt-29-3-16-test/.networks.py.swp | Bin 0 -> 16384 bytes NTT/ntt-29-3-16-test/.t1.py.swp | Bin 0 -> 12288 bytes NTT/ntt-29-3-16-test/.vm_instances.py.swp | Bin 0 -> 16384 bytes NTT/ntt-29-3-16-test/config.py | 75 +++ NTT/ntt-29-3-16-test/config.pyc | Bin 0 -> 2279 bytes NTT/ntt-29-3-16-test/credentials.py | 46 ++ NTT/ntt-29-3-16-test/credentials.pyc | Bin 0 -> 1572 bytes NTT/ntt-29-3-16-test/destroy_deploy.py | 76 +++ NTT/ntt-29-3-16-test/discover_deploy.py | 281 +++++++++++ NTT/ntt-29-3-16-test/discovery.py | 208 +++++++++ NTT/ntt-29-3-16-test/floating_ips.py | 46 ++ NTT/ntt-29-3-16-test/floating_ips.pyc | Bin 0 -> 1996 bytes NTT/ntt-29-3-16-test/networks.py | 178 +++++++ NTT/ntt-29-3-16-test/networks.pyc | Bin 0 -> 5182 bytes .../openstack_clean_script.py | 158 +++++++ NTT/ntt-29-3-16-test/t1.py | 17 + NTT/ntt-29-3-16-test/t2.py | 31 ++ NTT/ntt-29-3-16-test/tenant.txt | 7 + NTT/ntt-29-3-16-test/tenants.py | 145 ++++++ NTT/ntt-29-3-16-test/tenants.pyc | Bin 0 -> 4230 bytes NTT/ntt-29-3-16-test/user.txt | 7 + NTT/ntt-29-3-16-test/vm_instances.py | 154 +++++++ NTT/ntt-29-3-16-test/vm_instances.pyc | Bin 0 -> 5062 bytes 29 files changed, 1899 insertions(+) create mode 100755 NTT/ntt-29-3-16-test/.discover_deploy.py.swp create mode 100755 NTT/ntt-29-3-16-test/.discovery.py.swp create mode 100755 NTT/ntt-29-3-16-test/.idea/misc.xml create mode 100755 NTT/ntt-29-3-16-test/.idea/modules.xml create mode 100755 NTT/ntt-29-3-16-test/.idea/ntt-29-2-16-test.iml create mode 100755 NTT/ntt-29-3-16-test/.idea/workspace.xml create mode 100755 NTT/ntt-29-3-16-test/.networks.py.swp create mode 100755 NTT/ntt-29-3-16-test/.t1.py.swp create mode 100755 NTT/ntt-29-3-16-test/.vm_instances.py.swp create mode 100755 NTT/ntt-29-3-16-test/config.py create mode 100644 NTT/ntt-29-3-16-test/config.pyc create mode 100755 NTT/ntt-29-3-16-test/credentials.py create mode 100644 NTT/ntt-29-3-16-test/credentials.pyc create mode 100755 NTT/ntt-29-3-16-test/destroy_deploy.py create mode 100755 NTT/ntt-29-3-16-test/discover_deploy.py create mode 100755 NTT/ntt-29-3-16-test/discovery.py create mode 100755 NTT/ntt-29-3-16-test/floating_ips.py create mode 100644 NTT/ntt-29-3-16-test/floating_ips.pyc create mode 100755 NTT/ntt-29-3-16-test/networks.py create mode 100644 NTT/ntt-29-3-16-test/networks.pyc create mode 100755 NTT/ntt-29-3-16-test/openstack_clean_script.py create mode 100755 NTT/ntt-29-3-16-test/t1.py create mode 100755 NTT/ntt-29-3-16-test/t2.py create mode 100755 NTT/ntt-29-3-16-test/tenant.txt create mode 100755 NTT/ntt-29-3-16-test/tenants.py create mode 100644 NTT/ntt-29-3-16-test/tenants.pyc create mode 100755 NTT/ntt-29-3-16-test/user.txt create mode 100755 NTT/ntt-29-3-16-test/vm_instances.py create mode 100644 NTT/ntt-29-3-16-test/vm_instances.pyc diff --git a/NTT/ntt-29-3-16-test/.discover_deploy.py.swp b/NTT/ntt-29-3-16-test/.discover_deploy.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..f7c19f04cdca15189bccb5e701522df783d8ea01 GIT binary patch literal 16384 zcmeI3OK2oT7{^Op->!;_7hlxQf}LH*%&v;UN?>P`5eJh=n9N3(Y-oGBYm#Prx`*zX zNhTs5M8u1F6nx-C(1SN02(F?YJa|#?riWD#R0L5EzVPv{NB4AQC&?O65vt+0lm6=c z|Ej91s(YIU7pgP#j`7;m&Se)85=Rji=IySi!@`6+?#Y`SKiVR4 zX(ej2QWP>bh`L^>)@YPYG8Xd{zvTIe8}(Rhd#n>g{qatJi+oIwQNSp$69smYTW>jZ zP^8>f*h}|Zb!;b@m^4NKqkvJsC}0#Y3K#{90!9I&!2eVM-q}SSLfy~R^$+y#IYYmH z>Z_sc?V<2Lba+kM-x&)3U58()?N{gm(sH!f{1^p{0!9I&fKk9GU=%P47zK<1MggOM zQNSqh4=CVxgjmS;N3jvd`~P(R|IHPId=0(?PlI*P11Et4?gV?lrbqN3wDFIFDB$A@FbW7w}Y#|#}^Uu1Xu;f!8PDJeBban_zau|r$8SZ0l!^9$QR&! z@HjXIt^=pfC*(!I!7^w82Fl=0@Y^mzUIWj8hrw}hJ^21SLOuX*fm7g3@H%)6yb4|c zFM{X693bEW9LT%}-UTm%r@$j10rTJpxB*-WgztVh`-2p!ua4IoPZ+m(?6_=fKgsN| zA97ka5f(O@?8J2fW^2+wyc>sfUD||w6RqJ^(>csH?@mIhuP z5ered6S~X}p@X$lB>6b&*kAX$hq#tffUuJ7zd-D~i$n1W=VOD@EK| zOR7JJSkljkCi{lCQ9-!t zN2ghfQyGUQQ8#uWzKYp%f-Xx`CWt==1$n>WGy^uaXytOViqxuVO=R}MFt4T5N=nCc z#E7x8hWTMD8p~QC9VV32j_S*Tg<){P|8f6JNw;*{W@)-jcxI#vRe77FOWoNEoY3~Y zVfUX^TG#jD9VHy@H2pzm+oZZ9dYkA&GPdYznf$5~;fu17od^ZxJCVJkPBieN`pa5? zhO{~*yNh(kCcUS>UGJ-@X(~&e-cMGi>Q*t=_fqd|-SyVUa8;>NY|+wl?T8+?c7`uD zYCn`i-jy3XlAFzyPu4c^2@1^nWM>0=Z98e}^5K#xI~dktrd0!4*H~(rt33v^knxP+ zoa?lHHXXVVo^coxu;?sumegz7w6vefoaL06bz&JfvKLRNiLgI0at51}B^NE-(DXLz zLOOV1hN>X_Y#3e@4CKIbFo^;mGc)tB06@FcBq#qAv)o8kgi%~Mb=ERoG;*hrn^TOE<_Mv$~Xp@_Iv(lA5|Ls5@jBMfG z+?=UZ(o<$uXFa?L30arNSpQ8>H}KKA@k#kJcHjV(e;y22(k1&z?gmkp@$Ai6utFxS zIBH`?5sM5i78%rUccPf**BvTOubr(SuwGJ;Qs>$Tj6z$F0u^81WO3E1bYmRV$l)l; zTBKR-%0Prddfi?t&s6NWdgZR_eZ{;jyGa-JMY=F!PtG2zHDvPgeBHi#cD_-h;;&=# zmAd+Ct~@_~?`(alNU<+CI$g0v@Is|ty{kGYHwc4_MP5a{_O0C4sMKraX}eZwAo)E- zJvX1R7b()I%G~tq@tF!X9aR)_LW!go_gYTfxTEFyie0TuRnRt_v1-B~*}%oAD~4Q~ z`apIP-9vh}*ay?-%0zU*QIh_J36_Wz{S@o50H4mshv{kaJfIbgs8H-TRf=NIrZ_z8%;zex8XFqculC}0#Y3K#{90!9I&fKk9G zU=%P47zO@S1;i1CdQnF364I70LTp>SeY9*_1lYEfy+V`cy!u38>*GzF9EqG|0`Yn& zcg^Detvh(jCy!BS)WXTIdf$|&i0WWe6_veJ&6k{>!u*{BJR&Nf^UT!+$2WtwVMVIX Re#NmO4mxr#6LgXS`3q{qR4@Pl literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/.discovery.py.swp b/NTT/ntt-29-3-16-test/.discovery.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..41fba5294c556162c09462ae279f58972e8fda2c GIT binary patch literal 16384 zcmeHNU2G#)6~0|4P++?iKN9WJkTe>5*GX*0iS2-q(p@hNyX!28H!L{OXzaP(4C~B9 z_Bd4tD-Z~HT;PEp!9#fgs)7IsP*o}??o=WPv+@=T9>BL*QG$ z!@#G3o4`Xr8+ZqBFYv+}8T$?JV;}%b;F&i-4wwS|^Lp3^ehWMXdqrEbvL-!+-@`0PX{By_PW!lz^9B!`PF+7lDrg z72sarZNN)+GWIm^S)dKf0snqAV}Amk10DrF2Ydq913mz}7svspfLqu&xeB}+_%$|J zo&~-Sd=K~x@FBnf>cBgJEbvFf;wQl40LA6ofIbX;u*Ahq-}M5+rGLZlI^1%2V7omb z5y~BSIAibN-!`0#{?7|*ciZwk%j3aAe*bzV;GXRTEz`5Nxw)CmhGrn_zc-a>r@U40vD#eY?XmSwoZ_@Tu0?WDf5dp-=j`a!1(9F0!y@ zLmeG|h~}TE8HLejWJ4(G7WeF-*V#IdZ}}R#V)C)ElBD5w(LHK6Qp_G?hSYr1Zg+uteR3wM$|ZCnA5x4 z(L{!-%(d`g)Ssk1vPp;RcM~1g>2Cza)L>#N zGZ?m^)-tIKxxs{-`cdLi#B!aahRCIH^4g7q3Q_qX6{!wMsVu8XCc#+eHoOgQBI-sI zLg_EXT3!vJ3{wSQY8do=Z-$7oRH5#*t`jDoXkyD$0;Y^Kkuwr)#aMXKZIwft?#n10 zWZ7NPf*1p(Y0*z-uJIr*a!k`S-bbx%BF64_x*|m9zNR4(#T zC1Ka$+y0Tps&j=dw9C9wD$P4~r99tmR}1rYvFha8?QX)D?QFZAwiZj=n$coJ>7>pI zOFqPuQ)Nv|SieR_WL39NqT>BoGn)0rQln`#mM+zgN}iaQo{No4erfd3euUXeGuyBe zs5!Pyar6=zinNZpRj(?%d^$asd%?_Eamt)N-NB>~1ukZUSr)s2DBg-ztR$0V-M+uA z2eX0UZtwX0z(|f+QU-HLJ@ty@l>f;Ib#B}&TN;sV2=(ELjj>Ud=Aya3ED*7bF=}02 zt)E}Mnu`Y`yg9pCUurI|G;+rJCF|_Ul}1yjFRiUw53Z~=a|T^qS*x$gtIJDkYwufG zJ(n{O*at4wEqc6OUtK=Gd{)^}H49rgV?&s$Uv1V`8%r0hM!gC33pqIpv<4l!NA17_ zsN;KG_gc<4SHFC5<^7lH$eLwTvmptPPc_e~iU*d~>eh1OTpevwhGi2XwJ4-o_dqC_ zj-;5tsFc_(T6rxmi{7(QM2R;S_z!~5k z;O|)L{|NX3@Oj`SunoKmcq?!cco9DT1E4*D=YgkzUjn}Xo&tUj{0w*!_$lyp;A;T2 z^-Dl{qzt4Cqzt4Cqzt4Cqzt^$7{DsV*tT5{GjxU>7)$ICTb4mvFQ#SDBg-;rCqNt| zuGa_AngWIR!hq$5w4^rA|#H&W=QE4EvdtGF&h!3J&FIR3rPnA1JY}_DE8Gum*|<`FJt0r+E^94 z5JtlfjPv*o;m}sX)If#8G^W&*-pq?w=&@$e{& zS5q0J>XUb^3A&vK!=p9B1PKEOyYLBoRxR|7UKWd8D`V+BA?qSCWqOYByvex6{6s1yf|5}y}^zP*7=MW_j ejelXsqED?DfYisn_ZNQQM literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/.idea/misc.xml b/NTT/ntt-29-3-16-test/.idea/misc.xml new file mode 100755 index 0000000..7c4b884 --- /dev/null +++ b/NTT/ntt-29-3-16-test/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-29-3-16-test/.idea/modules.xml b/NTT/ntt-29-3-16-test/.idea/modules.xml new file mode 100755 index 0000000..64e6bd4 --- /dev/null +++ b/NTT/ntt-29-3-16-test/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-29-3-16-test/.idea/ntt-29-2-16-test.iml b/NTT/ntt-29-3-16-test/.idea/ntt-29-2-16-test.iml new file mode 100755 index 0000000..6f63a63 --- /dev/null +++ b/NTT/ntt-29-3-16-test/.idea/ntt-29-2-16-test.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-29-3-16-test/.idea/workspace.xml b/NTT/ntt-29-3-16-test/.idea/workspace.xml new file mode 100755 index 0000000..59b7f9e --- /dev/null +++ b/NTT/ntt-29-3-16-test/.idea/workspace.xml @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1459230370172 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-29-3-16-test/.networks.py.swp b/NTT/ntt-29-3-16-test/.networks.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..a8931b66ede7d398739a9271fdf2462cc021a947 GIT binary patch literal 16384 zcmeHNON<;x8LklCd4Ozj$N{N5(Wqzbd8|WBq)~=I)^@T1j~(yWkgQj&-tL;2lKVw> z&8)|k73CBuc zzufY8a)5AWoJ6dX#LN$qNzmyJ2A#`{Wn#=bF%x@9b~$gSvjY^^BFlhf;8QSg5BbIe z#}V0t++RCF4?g zuK&{MX`Sycm4B?uKdbZKT`Jd)_F@^Z3|Iy%1C{~HfMvikU>UFsSOzQumI2Ga|9}B6 zAmk9*{kc5wBE61~3DD01SXl;1S?H;BWU5@>75V4*~ZAAKgR9KY;gu zw}BUd7l0oDPXLbsf4>{`fE&P@!0W&s@CeWZz6QK^7a_j_egfP85?~GZ>z4`n5O@=K z7I+G{4|xAeg!~ftG4LEP21Y;&puk68M4P~6;27}X7YKO`=mTE|{`h%9egoV9UIBgx zq`(p2{m&8dD)1a2fHrV9@K3z#_%-kj@EY(W@G!6jd~hcrF9Reh2&(kYn;QV1J@WX~ttgYnS30dZ-hN16S~f(H;#v!Q^c_PWBq| z<|;nCXgC+PI_Er}54rEGtTpm=Ud7QgY@3p-YUw#CQ(3`~m z*hQrzc6E)0V6hjAZAV=Tba zFk{|Ew}*0|8^cJfRfcPyt}V%ZsjZ@`9F>E$DYq*u!H=e*RXh646J#;7QIpSo^>q&{ zrW+aa1W#hsm90q>dD)D1Yv@UptI{^dY3Bwuf^}bbGkbuC$y&m02qBLZZPSeYI7x%ar(^FRj%VIC2kHJOuycsRE=&s3u zm&Ob^#KM{KNtvO_wHFjx(F%f|Wkb(rbQi2L7HdDqC%YhU+mXTG?3DaTMK?_*I(gu9 z=~BcZZ|8ccCuS3oC2`ve0(WkMnXfN7iZ5YmPDovj)@}!-}$Us**OrU>7bY zCOJm!v=`=#R83ViQFQJ4JfB_hS&DEdF7Tt0Em?Cx;UJqV>MQtMqEok_V#%1gio>}v z>c$P2@OZebyP7*Y+v_`XE2S+9a_EF1(3cUwTvgoIO@diZ{WToE%ZjWLn0jc7b*G0gWkY@ilYOnF3R=~fpJU>_a$9aM zojBmW`0qG=znqJe#|3f~F>S7%Kg^W^zw{uyF%CkKoUxF3Idid-ajWI32KMgQ zYzr^OzRJ{Cb$UQkEQ_!o!a})ltWawFBp&jSQP4j%`2N}R-&NcCa)aNbr@wdhJA=*s zWA5fTcjNpi+@I}h1tnib%MwpYPBX6Qo<88N8*!CIG=WKO?$ThFNIyNvrYyvV@mZIS zlGF>oZ9aSFvETNSsBjzjv`RPg=r;7^e#TR|W$x0#ZPl}M+k-rI(MP34_aEs@@~pGV z;|`0ba{R|hOyv2$kF)$$K%W0`bS=^!@cet=d0i&o0oY_2unbrRECZGS%YbFTGGH07 z3|Iy%1C{~H!0j?1PyQJblMMfbRsX3_|56nHEuB{{Qv!;&DfF~{+d?Q-W64VZ literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/.t1.py.swp b/NTT/ntt-29-3-16-test/.t1.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..2053542418481ece30ee4a407c4a537c523f1ee4 GIT binary patch literal 12288 zcmeI&Jx{_w7zgk}7adTeaj!Zs(JK{&kT{S?qKUkOwm3EgN@#ew1`ZNj`~)tpE{=W; zcV9+y^&|KRe2Qoy8f78T_`l?z%RRl^U4L8CD{H00tddaUjM@rg3l~qN@O&XO95B`q zLI&lZn(*CrS2~qO)bYeOlX+dVTrS#fr73z6YlpD$=<&1JdL4yDUAOHafKmY;|fB*y_0D=E4kT>kKWggg8@krTI zB6YfKK21sbDb8aFU5)J~Rb7p1sU1zzcwZlBep+F2`WKtbX3Fcirr7TN1yqek0)j%? zFpl%Z{XoU3w!HSJYG!ijoN4FM+04fWmXRq=R2i#vL`!M7gRUH1xcA()RQtNEDPGGL L9jR2BL5aNp-vp8i literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/.vm_instances.py.swp b/NTT/ntt-29-3-16-test/.vm_instances.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..c31dbb595491af8a89997b221a1f084c78292167 GIT binary patch literal 16384 zcmeHNUyR&F8K0zoNPxD83L#K~re4zBOMTwEOG45Uu6iVwa3#5f`x69FaDD69+tKaX zj_ut`r~(xQ3Gu`W6eJKzD^$T--%vpmgb)$}0fI_AQwd5X1Of@vr}Fz|#$NAb_wt7q zkZkFPc)-Yw7OA0XfCgg|mE5_k#tCU6B<0RFt6u^#{% zfDJqf>;s?goifoA{-bbyZo zP2hgu9^h`^xA!piGvG210}^-&cpvcE-Hd$?2!Lf^0eAxV_g##=415cC29Q7<_!ojL zuL8dZUIe}jtO2XQdx5)vy}%ye59k-_n_uSvnVZ-U$7NX-3q+d-GHpczk$CvJA_~1w zWZO}))yPEXhnW}pJux*8aa1G`Sw9ImzQOPUKl4>u{=i-SbUpt%LlvvfbBH7XHm~EW zjjW#{N#9)40!gSJ1YWxv`I!tiJsErLh*T-pZ&QuxtB)yNWt*Qmb8ca6Y5BCbbly9$ zvWWY0%k%1GoX9Za76ec86a6F+c+z#w^Mk3y51OZ;0{SiV&uejXiV_DoMLM#C(ZF|7 zk$|t%*%Vo$C?f-{92KbX6_F)U3UO!G@!6w16|E=?(4Y(y_}$dz{V?Q^B*X^!9h!R)-4NK)_u+u~|%?%m^ZZQ~S&)*cT`t`ap&9s;-xtfzOt64RgXDD1n>V-;d!6 z0#B2(*`-gt8fDe_a+IB-TISjQA%m_Om+ConhT2=YKGXI>ca`~aKg#^n(F1S1w@KaU zS(~?_MCdyrm{QvEihzo-PA&N^O3=zu71V2kR#(CUIVaR#o8n5b#=9EnRPgQ&8U^}+VIO$+)v4tO^ei^n9z(5A50$~-;gxjp|>6k zrp+?2Ri*V^K9JOHL$f#Qc0Jjs8-|QJijAAGxeI^fOA2Z(x1#O2$($*VH#+{5WW|L@1QukgUrN8nrHBiVU+FA zgS?mD?P~XHW+ydJn6_y{f;Z||L>R;ore)XaWLZ4lY|b8=b7ntu+?jKZ%*;PF_ZYeg zqkBt)uKJx~wcW%~15^*5TlLmg7gv@S&Mw+CcVlT7xJW#|u)6w*b1Nt9+%wSxhxE0@ z<%Q)nPv!UfS;y-qT}oeAU;C)HzH(-YP4tW42l&wIW|?@ z_?5cOU+yrIohGiGy=Lz=o!L~PB*;jP!nVXBLF+JX;cxS$vkRvewbfy3uyEnr`ig!k z+b`c?pY&YVF+Jo)s_P}y4Ox2CgjH%mMZOBTA?t>pV!^LGwgCBklrlzB?MZAYx|ju$dA=FNe)oy|GkF=doL1CBhP0K)IHMJ{p4|2G$mEWV z7H07@pWw}e?5G-Q4>$X1(%g_?Q-lK^U&YcOWVHW3fIakI0NVfCW`Fr}?CW0vUIMNI zUk6rz1HeDA&wmBD4m=0MKnrkz4*-9}p8q;<5qJoA6MOyFfR}+6faihF0H=Y&z#K3O z`~!RcH-Hy`Zv&SA8`uZDh5bLp1YQ6gx^|ut@oS8-qNmh(6DYayh>5}!HaCGpWG+rZP9e5hGGMaV zMjaWZhle1A(IUK!H+-^X(p$Q;beC*r=P8lSfT1$3rh_S8)hA#$fGU+9Mlg3RzH}02 zSNxXj>*_2MgAFyR^3oMP4EwhPz4nB&rgAi_NE+R2BRMP E4<}25OKc;Yb)#$lHw|h%Q0ZhmSplXl> zkk?>RgFJ*u2zebQb;uhqX+WSt_(rKsP<8LDfogbX9aIxW(Ha;0PNuc1U0RtEjV-pt zcxs$jj0JgUMJ`K$Q!R8cH|0nE5&+(eMBXhD6e-F>tl*v$I89sc3+cl;3Z67hJfTs687H+FJbaX!X#Xdv4n%Ag!ib> ztymXwyGhA6(~TLX#~SlljJzhvS&?Yu#mZgyA26R#U52?lCx0=0Mz60i9Yz}zMqW~q zD4Qk;vM^Fx9GjEH0b}Ybr;PJsR(#wh^G6TfyOU$KPIY^^RkKXL@?RScG;2@8jrKMs!0$dj_cw$j z>Ol&U70Lzmpx~`iUZJ8&y()>RtwzH+8e(cbc+@DbQ?Wq31u7cUYf#aoUUT9-NBJTZ zOVnE;p%&;JLM)SN1f@=@O2b>EmgzUluaKG#!+IFDNVRBqn}(|-5vPtN!u>(&4kMt9l)@gW;W4)t_I6+!Jyf(rrhJYIq5E1zVgl9<$K?)=^9 zoU!Bd1H*%YJFwZ?3cCjk?Gx81fQ6>tlTG7{U`>qSAt{D&zrCg)S?M8Mzd|%4JOKwBbzmjqaPE}+PcUYH zU?0Y&ugA(nufFH4PE%fNO)#Y6ROjib&b7aY&PrQ^S*gynfz!y^yc6O(E;ANyM~|G- zeKtP1!Fw-ibB*GF-U2i;p5PgveH@_m%&_aDC3@s0u$Kz_i5ZFjdn#ozWy)hM*(zjC@h|d)P_3+;r5|*2ewe%YtnYn z6K}j7b&dDiQWZ8RyI*bZZtr}#?UnQ0nXO!Bbm7;r$w$c~XSPhn#Re>ni$QZsVnwWq zWqcWrIY~ZWAk_gBkZOn)57*M>716~Oz5R@NcJSi{U4b{SgJ|K-+GH;Mbe~R6Or3-f zM$l`N??q@S_Z@coKO&VXSKtMA_k;o3T{pU%?QA!p!w1!4ECW8W&8G*MK>&5`OKUtg zUap;g4=Ouzmq`TlYGyj-t`Dq_1D9^`5Z|W+4=E*yv{{mbRILmAnr1oSdS|?wd=c{o0errQt_?fMPG{N>T%j?>F_SfvafY2S zUxzW*a?(oSVzlN=_a_~42bO8f**h@iKeCvUi`gUe0WPXhs!JD+j&7F7H?$8fWfPQ9 z>IdO!Q*TG9k+@RIi8HP`td2u>@o~|jGG61|xfVB=e8O(wVtid#d7i6pxV7Cwi22Hr YXrVVAR$7&YXrNbC#F}^@+SSJLzYhiHO#lD@ literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/networks.py b/NTT/ntt-29-3-16-test/networks.py new file mode 100755 index 0000000..befd00e --- /dev/null +++ b/NTT/ntt-29-3-16-test/networks.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +""" +Description: This script is to create network, subnets, router with \ + external gateway mapping. +Developer: gopal@onecloudinc.com +""" +import pdb +import os +from neutronclient.v2_0 import client +from credentials import get_credentials +from config import NETWORK_COUNT, VM_COUNT, FLOATING_IP_CREATION +from vm_instances import launch_vm_on_network, terminate_vm_on_network +from floating_ips import release_all_floating_ips +from datetime import datetime, timedelta +from pytz import timezone + +credentials = get_credentials() +neutron = client.Client(**credentials) +fmt = "%Y-%m-%d %H:%M:%S %Z%z" + + +def create_network(tenant, router, network_index, network_cidr): + """ + This method is used to create network, subnets, interfaces on router with \ + external gateway mapping for the given network name and CIDR. + """ + + try: + prefix = tenant['tenant_name'] + network_name = prefix + '-net-' + network_index + print "\n" + print "=" * 50 + print " Initiated Network Creation for " + network_name + print "=" * 50 + print "\n" + + body_sample = {'network': {'name': network_name, + 'tenant_id': tenant['tenant_id']}} + start_time = datetime.now(timezone('US/Pacific')) + try: + net = neutron.create_network(body=body_sample) + net_dict = net['network'] + network_id = net_dict['id'] + network_vlan = net_dict['provider:segmentation_id'] + print(' - Network %s created' % net_dict['name']) + net_status = True + except Exception: + net_dict = {} + net_status = False + + subnet_name = prefix + "-subnet-" + network_index + try: + tenant_id = tenant['tenant_id'] + body_create_subnet = {'subnets': [{'name': subnet_name, + 'cidr': network_cidr, + 'ip_version': 4, + 'network_id': network_id, + 'tenant_id': tenant_id}]} + subnet_detail = neutron.create_subnet(body=body_create_subnet) + subnet = subnet_detail['subnets'][0] + print(' - Created subnet %s' % subnet['name']) + net_status = True + except Exception: + subnet = {} + net_status = False + + neutron.add_interface_router(router['id'], {'subnet_id': subnet['id'], + 'tenant_id': tenant['tenant_id']}) + print (' - Created interface between %s' % subnet['name']) + finally: + print "\n" + msg = "<== Completed Network Creation with External Gateway " + msg += "Successfully ==>" + print msg + end_time = datetime.now(timezone('US/Pacific')) + print "\n" + print "-"*65 + print (" Network %s Creation Time Summary :" % network_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + print "\n" + print "=" * 50 + print " Initiated VM Deployment " + network_name + print "=" * 50 + print "\n" + + ins_data = [] + for i in range(1, VM_COUNT + 1): + vm_name = network_name + '-vm-' + str(i) + start_time = datetime.now(timezone('US/Pacific')) + ins_data.append(launch_vm_on_network(tenant['tenant_name'], + vm_name, network_id)) + end_time = datetime.now(timezone('US/Pacific')) + + print "\n" + msg = "<== Completed VM Launch on Network with Floating IP Allocation " + msg += "Successfully ==>" + print msg + print "\n" + print "-"*65 + print (" Instance %s Creation Time Summary :" % vm_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + result = {'network_data': {'tenant_name': tenant['tenant_name'], + 'network_name': network_name, + 'network_cidr': network_cidr, + 'subnet_name': subnet_name, + 'network_id': network_id, + 'network_vlan_id': network_vlan, + 'status': net_status}, + 'instance_data': ins_data} + return result + + +def delete_vm(tenant_data,network_data): + """ + This method is used to delete vms, network, subnets, interfaces on router \ + with external gateway mapping for the given network name and CIDR. + """ + pdb.set_trace() + #prefix = tenant_name + network_list = [] + router_list = [] + count=1 + #router_list.append(prefix + '-router') + #for i in range(1, NETWORK_COUNT + 1): + #network_list.append(prefix + '-net-' + str(i)) + for tenant in tenant_data: + for network in network_data: + vm_name=tenant['name'] + '-vm-' + str(count) + if ((network['network_list']['tenant_name'] == tenant['name']) and (network['network_list']['shared'] == False)): + + + terminate_vm_on_network(tenant['name'], vm_name,network['network_list']['network_id']) + count += 1 + + release_all_floating_ips() +def delete_networks(tenant_data,network_data): + pdb.set_trace() + networks=None + for tenant in tenant_data: + networks=neutron.list_networks(tenant_id=tenant['id'])['networks'] + routers=neutron.list_routers(tenant_id=tenant['id'])['routers'] + subnets=neutron.list_subnets(tenant_id=tenant['id'])['subnets'] + + + for router in routers: + ports=neutron.list_ports(tenant_id=tenant['id'])['ports'] + for port in ports: + #for subnet in subnets: + if (port['device_id'] == router['id'] and port['device_owner'] == 'network:router_interface'): + neutron.remove_interface_router(router['id'],{'subnet_id':port['fixed_ips'][0]['subnet_id']}) + neutron.remove_gateway_router(router['id']) + neutron.delete_network(port['network_id']) + neutron.delete_router(router['id']) + #neutron.delete_network(network['id']) + + #for network in networks: + #neutron.delete_network(network['id']) + + #for subnet in subnets: + #for network in networks: + + + + + + #if FLOATING_IP_CREATION: + #release_all_floating_ips() + #print "\n" + #print("<== Released all Floating IPs Successfully ==>") + #return True diff --git a/NTT/ntt-29-3-16-test/networks.pyc b/NTT/ntt-29-3-16-test/networks.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a483e902d5a95727f1615ecb6668aaea79bc71db GIT binary patch literal 5182 zcmb_gTXP#p6+RisY7)2$D%hW2H zafzaFiYKTwL2-pz6^g6Wsv26EqDhLUs5M1#jaoG`J5JFw#WU2JG2;n}W+|Sf7TP&# z&6(K>Me`J&qt-dHf-=1Uqa_N)==lN#CHg&vi{#^|^W;y`*BCC5KP8O*_vFF3+{;zjlWUVP;p+p*W_gvr4T9Mub=v=d~j_Ceb5qR-PLXh&(+50mzdb{bd1 z|KM-CVSz7QM$?YMAkk(#gYiM2T`=ThGV~(VDDuJ@n(ceLdykx7y6ca=+}_m_n0fLr zA1q*S|BFX=cel1T-L1#&x^oZxN81gyxn^qQb(8j?+l$>aadScS5>taL4iiW*N;CXi zz=AA@0#6057e(%VlzJLsx?x9|y_pRkZ|g7)bcOdr#}6XynH`wUQ?H>0bsmG|Up1HG z=CW@uKUiIUxVpS!FSnLox5q%@(^wyE73xnI`7CME#oKx=8*kIG!Va9x_zPKZmbr7G>oC zUbz5CW`tv~2##lj<5}v@GOg|}fxgvvZa`AQ~%t^%vW!r;=^~M;sB;tpran?De^yJ-$J_tK{lRxbh0RT`Iwe8th&fY zEuEZyH&pry^c=c}vJFW4&@zxz{>O8T->*fTs{eTQ-kWhnJBVZ;AP53p7^KHv(m zdxc%#6MO+o*YE|28~Dn>1OWdKBPioj0PRQUE|7m6xLTtA62fSc-SLlTsvH6(dcxNa zQ=g+}R|Wp}hR`rUgxUAnfwI%&TLJaE;;6l!X0|>I?1QiuB!kFoCte)bUgF#9TN};| z;RkTwAeMNEcA2b77&j5&nu@$Gd^07wqzSdK-! zm5FC&>(GbqV%of*s_1{YbMvv+4)?>h<~N?D{xM<+QRpjrO@t47{Os`jLq2y;$co@vZswIivTtBoXmS;} zs77z1Bz~dO&do&YrXR$qbZ-BwdAs@Jm8OP!-OTl-Zgh?v4iX$u)SuB%xoB0bX{%&a zm91)F8nfIVm(LtlOk*^lUb1Gaxk8CoVzj>W7je%A4*zo9W{`3;f9Wk7+rMOH-VH%3Rl z;T#6eznjoG()y zMl^E>=lL4cF@qOTk)d9&xEi!jC5_R`Tl~NG@?+Wq{FzTwdOHoStks{;d|wVm*^R(# z_hQ^!a^s!3%M4xaY$8U6Ft?lcPs9>79l`S;c8<756e{gVvXV!_m@N zLnE#s&3pTYFm2S2Yt%6|m;6hmYM~5pm&a-V?gi_5@v^m85MZ)F`4M2=LdH1-rZ2!e zs`K4vU`|iXi+O*$Q_hvjlM9TT>PENj!XW zn4%TFF7S!CSeRu}Dq{loDXhkQiYH!vL-^n0g>nfKk$FCYXDrbkG-Ph~+Y(zHPG5uI z%r|%?5z$~kIg3o?MA1nzZK@wX=!NZo^CV~6e3ZUQP+M_6$em|3N72x8#LP$<0TNh8 zNuA|zR1_FDcq@l18s`^iq*6pb5ga!;J)0rz-wr^(G08WD^+ z`hWTlJLM>s>JOMwm(dV{c^Uq5kv~QLt`)9Y*Q_~sRD%<&Sle~|wC%cL04c*$B{??< zq<%5KvfSw1c5gYnr$h;);=#`>4i|lrd)sNUA09ZIJ*4b#IGTxZkYWdAlak6qVv>-~ z{xBjzN~$S`J>2N)Sid$k6^F5P`N>Cs;jk7Zy*l@~w}<9bvC@10=rn;%@5HI!je^hk cd?}L4))YRo_*}Nmqs3FGARm{Dm3C$6ze+clX8-^I literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/openstack_clean_script.py b/NTT/ntt-29-3-16-test/openstack_clean_script.py new file mode 100755 index 0000000..bb04cd1 --- /dev/null +++ b/NTT/ntt-29-3-16-test/openstack_clean_script.py @@ -0,0 +1,158 @@ +import logging +import pprint +from novaclient import client as novclient +from neutronclient.v2_0 import client as nclient +import time +import pdb +import MySQLdb +from keystoneclient.v2_0 import client as kclient +def main(): + net_list=['NET-A','NET-B','NET-C'] + ext_net_list=['EXT-NET-A','EXT-NET-B'] + ext_subnet_list=[] + flavor_list={} + + router_list=['Router-A','Router-B'] + subnet_list={'subnets':[{'name':'Subnet-A','network_id':'','ip_version':4,'cidr':'1.1.1.0/24'},{'name':'Subnet-B','network_id':'','ip_version':4,'cidr':'2.2.2.0/24'}]} + count = 0 + instance_detail={} + networks={} + logging.basicConfig(level=logging.INFO) + logger=logging.getLogger(__name__) + logger.info("Keystone authentication started....") + time.sleep(5) + logger.info("Wait for 5 seconds...") + logger.info("done") + neutr=nclient.Client(username='admin',password='admin',tenant_name='admin',auth_url='http://192.168.1.12:5000/v2.0/') + novactr=novclient.Client('2',username='admin',api_key='admin',project_id='admin',auth_url='http://192.168.1.12:5000/v2.0/') + logger.info("Authentication success...") + #logger.info("getting input from user....") + #network_count=int(raw_input("Enter the no of network to created >>\t")) + #ext_network_count=int(raw_input("Enter the no of External network to be created >> \t")) + #instance_detail['name']=raw_input("Please provide name for instance") + #flavor_id=int(raw_input("Provide the flavor for the instance")) + #netw=neutr.list_networks() + #print netw + #ss=db_connection(flavor_list,novactr) + #us=ss.get(flavor_id) + #if us: + #logger.info("You choose %s flavor"%(us)) + #else: + #logger.info("The flavor u choose is doesn't exists..") + #exit + #create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id) + delete_network(neutr,novactr,logger,net_list,subnet_list) + +def create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id): + pdb.set_trace() + logger.info("Start creating external network ") + ext_network=neutr.create_network({'network':{'name':'EXT-NET','admin_state_up':'True','router:external':'True'}}) + ext_id=ext_network['network']['id'] + vm_list=['vm-1','vm-2'] + logger.info("Creating external network subnet...") + ext_subnet=neutr.create_subnet({'subnet':{'name':'EXT_subnet','network_id':ext_id,'ip_version':4,'cidr':'6.6.8.8/24'}}) + time.sleep(2) + logger.info("creating router") + router1=neutr.create_router({'router':{'name':'Router-1','admin_state_up':'True'}}) + router_id=router1['router']['id'] + neutr.add_gateway_router(router_id,{'network_id':ext_id}) + + while count < network_count: + + neut=neutr.create_network({'network':{'name':net_list[count],'admin_state_up':'True'}}) + if neut: + net_id=neut['network']['id'] + logger.info("Network %s sucessfully created.."%(net_list[count])) + time.sleep(4) + logger.info("Start creating subnets") + #nsub=neutr.create_subnet({'subnet':subnet_list['subnets'][count]}) + nsub=neutr.create_subnet({'subnet':{'name':subnet_list['subnets'][count]['name'],'network_id':net_id,'ip_version':subnet_list['subnets'][count]['ip_version'],'cidr':subnet_list['subnets'][count]['cidr']}}) + sub_id=nsub['subnet']['id'] + if nsub: + logger.info("subnet is created for network %s"%(net_list[count])) + time.sleep(4) + logger.info("Adding interface to router") + neutr.add_interface_router(router_id,{'subnet_id':sub_id}) + time.sleep(5) + logger.info("Ready to launch the instances") + pdb.set_trace() + image = novactr.images.find(name="cirros") + print net_id + instance = novactr.servers.create(name=vm_list[count], image=image, flavor=flavor_id, nics=[{'net-id':net_id}]) + logger.info("Instance launched successfully on network %s"%(net_list[count])) + time.sleep(4) + count = count+1 + else: + logger.info("Error in network creation") + time.sleep(3) + logger.info("setup is ready for testing..") + +def db_connection(flavor_list,novactr): + db=MySQLdb.connect(host="localhost",user="root",passwd="dafc1bce95654501",db="nova") + cur=db.cursor() + cur.execute("select id,name from instance_types") + ss=novactr.networks.list() + print ss + return dict(cur.fetchall()) + +def delete_network(neutr,novactr,logger,net_list,subnet_list): + logger.info("Start cleaning the dashboard") + del_net={} + server_delete(novactr,logger) + delete_interface(neutr,logger) + count=0 + +def server_delete(novactr,logger): + #pdb.set_trace() + logger.info("Fetching list of servers") + myserver=novactr.servers.list() + server_len=len(myserver) + for i in range(server_len): + ss=novactr.servers.delete(myserver[i]) + if ss: + logger.info("Instances %s sucessfully deleted"%myserver[i]) + time.sleep(1) +def delete_interface(neutr,logger): + + mynetwork=neutr.list_networks() + net_len=len(mynetwork['networks']) + myrouter=neutr.list_routers() + r_id=myrouter['routers'][0]['id'] + port_delete(neutr,logger,r_id) + my_ports=neutr.list_ports()['ports'] + port_gateway=[] + s=neutr.remove_gateway_router(r_id) + if s: + logger.info("gateway router is detached successful...") + myrouter=neutr.list_routers()['routers'] + for r in range(len(myrouter)): + + neutr.delete_router(myrouter[r]['id']) + logger.info("Deleting networks...") + time.sleep(2) + for j in range(net_len): + dd=neutr.delete_network(mynetwork['networks'][j]['id']) + +def port_delete(neutr,logger,r_id): + logger.info("listing port details..") + myports=neutr.list_ports()['ports'] + port_list=[] + port_gateway=[] + for port in myports: + + if (port['device_id'] == r_id and + port['device_owner'] == 'network:router_interface'): + port_list.append(port) + logger.info("Removing router interfaces..") + + for i in range(len(port_list)): + + del_inf=neutr.remove_interface_router(r_id,{'subnet_id':port_list[i]['fixed_ips'][0]['subnet_id']}) + +#def get_id(novactr,logger): + #welcome=novactr.servers.list(413fb5d3-c1bc-4267-80ab-6a27d0cfd04b) + #print welcome + + +if __name__ == '__main__': + main() diff --git a/NTT/ntt-29-3-16-test/t1.py b/NTT/ntt-29-3-16-test/t1.py new file mode 100755 index 0000000..a93a8ab --- /dev/null +++ b/NTT/ntt-29-3-16-test/t1.py @@ -0,0 +1,17 @@ +from keystoneclient.v2_0 import client + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' + +keystone = client.Client(username=OS_USERNAME, password=OS_PASSWORD, auth_url=OS_AUTH_URL) +import pdb +pdb.set_trace() + +tenants = keystone.tenants.list() +for tenant in tenants: + print tenant.__dict__ + + diff --git a/NTT/ntt-29-3-16-test/t2.py b/NTT/ntt-29-3-16-test/t2.py new file mode 100755 index 0000000..adb670c --- /dev/null +++ b/NTT/ntt-29-3-16-test/t2.py @@ -0,0 +1,31 @@ +from neutronclient.v2_0 import client as neutron_client + + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' +OS_TENANT_ID = '2931fbe17e8445da875bb915a29d0bbf' + +def get_credentials(): + d = {} + d['username'] = OS_USERNAME + d['password'] = OS_PASSWORD + d['auth_url'] = OS_AUTH_URL + d['tenant_id'] = OS_TENANT_ID + return d + +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] + + +credentials = get_credentials() +neutron = neutron_client.Client(**credentials) +netw = neutron.list_networks() +print netw diff --git a/NTT/ntt-29-3-16-test/tenant.txt b/NTT/ntt-29-3-16-test/tenant.txt new file mode 100755 index 0000000..2ecda20 --- /dev/null +++ b/NTT/ntt-29-3-16-test/tenant.txt @@ -0,0 +1,7 @@ +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] diff --git a/NTT/ntt-29-3-16-test/tenants.py b/NTT/ntt-29-3-16-test/tenants.py new file mode 100755 index 0000000..ed40861 --- /dev/null +++ b/NTT/ntt-29-3-16-test/tenants.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python +""" +Description: This script prepares new tenant with the following properties: +1. Creates new tenant. +2. Creates new user and this user is added _member_ to tenant. \ +Password is second argument of script +3. Admin user will be added to tenant with role admin +Developer: gopal@onecloudinc.com +""" + +import os +import pdb +from keystoneclient.v2_0 import client as ksclient +from credentials import get_credentials +from config import USER_COUNT, USER_PASSWORD + +credentials = get_credentials() +keystone = ksclient.Client(**credentials) +assign_admin = True + + +def create_tenant(tenant_name): + """ + This method is used to create tenant and create number of users per tenant + """ + + print "\n" + print "=" * 50 + print " Initiated Tenant Creation for " + tenant_name + print "=" * 50 + print "\n" + + try: + try: + new_tenant = keystone.tenants.create(tenant_name=tenant_name, + description="Scale tenant \ + created", + enabled=True) + print(' - Tenant %s created' % tenant_name) + except Exception: + new_tenant = keystone.tenants.find(name=tenant_name) + tenant_id = new_tenant.id + tenant_status = True + user_data = [] + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + user_data.append(create_user(user_name, tenant_id)) + except Exception: + tenant_status = False + + print "\n" + msg = ('<== Completed Tenant Creation and Users per Tenant ' + 'with _member_ role ') + msg += 'Successfully ==>' + print msg + print "\n" + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def discover_tenant(): + """ + This method is used to discover tenant and discover number of users per tenant + """ + global tenant_id,tenant_status + try: + pdb.set_trace() + new_tenant = keystone.tenants.list() + tenant_id = new_tenant.id + tenant_status = True + print "\n" + print(' - Tenant %s Discovered' % tenant_name) + print(' - Tenant_ID %s Discovered' % tenant_id) + except Exception: + pass + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def create_user(user_name, tenant_id): + """ + This method is to create users per Tenant + """ + + try: + new_user = keystone.users.create(name=user_name, + password=USER_PASSWORD, + tenant_id=tenant_id) + print(' - Created User %s' % user_name) + except Exception: + new_user = keystone.users.find(name=user_name) + member_role = keystone.roles.find(name='_member_') + try: + keystone.roles.add_user_role(new_user, member_role, tenant_id) + except Exception: + pass + if assign_admin: + admin_user = keystone.users.find(name='admin') + admin_role = keystone.roles.find(name='admin') + try: + keystone.roles.add_user_role(admin_user, admin_role, tenant_id) + except Exception: + pass + user_data = {'name': new_user.name, + 'id': new_user.id} + return user_data + + +def delete_tenant(tenant_name): + """ + This method is used to delete tenant and users + """ + + try: + tenant = keystone.tenants.find(name=tenant_name) + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + delete_user(user_name, tenant.id) + tenant.delete() + print(' - Deleted Tenant %s ' % tenant_name) + except Exception: + pass + return True + + +def delete_user(user_name, tenant_id): + """ + This method is to delete users per Tenant + """ + try: + user = keystone.users.find(name=user_name) + user.delete() + except Exception: + print(" - User Not Found: %s" % user_name) + pass + print(' - Deleted User %s' % user_name) + return True diff --git a/NTT/ntt-29-3-16-test/tenants.pyc b/NTT/ntt-29-3-16-test/tenants.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a20174b0c0c014d1f511f215ff524880c9cf5a86 GIT binary patch literal 4230 zcmb_fU2hx56}`(PDRC|NL;g_hHp!-i0~V>MS}D|2joi3W9Q&b8u#zJ~KtQayBWmg8 zF3nk5CLs1jL4iK>2lTP%&*;zUL(%4;Ip^+@v|J--QFFP&nY*)h?#w;++)MZG%U*r! zUte{k{8aG!DQ^2$G?B<5T1TRaB#s=SQ}ioxSkb;Ki7Wl89M;6)v#KO@=`YCPLNTsM zvMBwA95$ry$)P8XS&%cRt&6Ei?}C`R{0YM)G0SpzQKGthgW)BK7PNC&qDAdok*J}a z6^T6UT%}ce%?mWvcSO8hV>`omkjGiNwSWQRx4Wr0Je!Fk_ zPtCCH=UKUC%l|U8_9PodK5a9d3~z?R?x=5IPwVPn??wGMEfk)_N#Z{>rPi6U zVgti0;S)^8?q8UM8`$!@*&s|l%~I1zvQZSLomMC7d-1>VdDO&7NnS_ONn)&9j4xr_ zHF>);G!cYxnAj$fkb7tz?|l}ucfNT1Xg^<`4!^v&w|DSGu-l=!2JQviJGkw~kN^pv zKY({4SFWK`l~a+`S0#Kt{+o0xe-v*3St9zM@qz{H&ZQVq&)eE#4d{XnXD zRi1e={Jl7iQ@&awATZ@j986Cgd2$Mcb(vJCWa3I!WKxxv4tPFS7P<+Lh2Px1?Lihf1T@O8v_{uenoNLOc;{8KGi;yPTq*!i+d z7UUHBxCrgq!{)i?*wv+KvI&jRCH%M&U6#$sqMR-Q%vX4V`)E8LAH{Ir1-hTHxbr;bz8_lF~+sy=(!F-ln~ zK8n*QXW&6~4L`#$?V3O%(Z$f_Lsb+G1_l%9h~n7V+`GPUAE9fSG%}z94Pek-yRair z>(x^Abi1%!Euo5b6k;uC<=J38 z&GWU$^fT>j{Az7u?at;JxHVrdkEb;lE4P%pDWvqiy~_n^HK(Cht>QYavr?&Jw2bQ} ze(SidI-YaQc^49|QgiAR^zvrB`KUng~O* zSCg<#!Uz{ll@mgZf|0V*CJ=P)QY(J(fOzChr2#PYd%4tqgV-;05r#f zOGO6JQ^kcvuE>XB#{|S+u!KhOo5VH`NMgmy7uov(8=if@ETd^9Smp2?4spLF{80P! zluEeYgGe_kH5W*@q-Y_Qh@I*bAH)Xz!dvli69I58HNkn%t@#A*ha;JqK;W9#UQ101 zg?VbySDBhBnjiR}PIR$YLaM<7SH`y#i;yE%R0KJJOSs}3q=Z}DSOIAY^z<^UeybgZ6MRY@U9ak}0P{eDo z#>6>e!arg#em(^g5IuvdBQJl;`U&XMg6S8mr&zR9P|~1>cyLiL0ZdvKtpdhiyaKv_ zF{&l!`E5A>)Osknz_G6c3qjpb-uz|;Y7fYwS@vTzZ$cK%U8|qSFsn~X4d!z7{2X5Y zQ4x@A6kNOd>a5BE<;^jq9Hw{)Rxn?4Zg3U7vfSaK>RbhfX5qq;0%&BqCXcqrx~xaa zjC+eh!szWGKyh5GUJ@N>MYLKX9Ilt?@ERyjiO%Ve;usY($Nvt4@lW35_#*gOeUpD~ z%^2c0bQQc0&x7%_*41Jb1E63}H~)RKQ2I@srIqRHv|wj`dd%Q|l;!^YY?MY@;DI?o zOns!!jEf|Y`WUUt)?Vkq_m(`>##M5eT`u{9om8Lkv|Hz}b zTOgKuRpE~QyDLtHrx5&<&AV)V%!VWq++joG=Vzh4|GSo3gw9X;Su{$_U9zWT6x1tA Y&XRK(*NsX8$++$|K5X1*ywh0u4)DR4G5`Po literal 0 HcmV?d00001 diff --git a/NTT/ntt-29-3-16-test/user.txt b/NTT/ntt-29-3-16-test/user.txt new file mode 100755 index 0000000..9e5d3d9 --- /dev/null +++ b/NTT/ntt-29-3-16-test/user.txt @@ -0,0 +1,7 @@ +#cloud-config +chpasswd: + list: | + root:ubuntu + ubuntu:ubuntu + expire: False +ssh_pwauth: True diff --git a/NTT/ntt-29-3-16-test/vm_instances.py b/NTT/ntt-29-3-16-test/vm_instances.py new file mode 100755 index 0000000..239e157 --- /dev/null +++ b/NTT/ntt-29-3-16-test/vm_instances.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python +""" +Description: This script is to launching VMs on the network. +Developer: gopal@onecloudinc.com +""" + +import os +import time +import pdb +import novaclient.v1_1.client as nvclient +from novaclient.base import * +from novaclient.exceptions import NotFound +from config import FLOATING_IP_CREATION, IMAGE_NAME, FLAVOUR_NAME,OS_USERNAME, OS_TENANT_NAME, OS_PASSWORD, OS_AUTH_URL +from credentials import get_nova_credentials, get_tenant_nova_credentials,get_credentials +from floating_ips import add_floating_ip_for_vm +import glanceclient.v2.client as glance_client +import keystoneclient.v2_0.client as ksclient +keystone = ksclient.Client(auth_url="http://172.168.2.40:35357/v2.0", + username="admin", + password="admin", + tenant_name="admin") +token = keystone.auth_ref['token']['id'] + +credentials = get_nova_credentials() +nova = nvclient.Client(**credentials) +#glance=glance_client.Client(username=OS_USERNAME,password=OS_PASSWORD,tenant_name=OS_TENANT_NAME,auth_url=OS_AUTH_URL) +glance=glance_client.Client(endpoint="http://172.168.2.40:9292", token=token) + + +if not nova.keypairs.findall(name="admin"): + with open(os.path.expanduser('~/.ssh/id_rsa.pub')) as fpubkey: + nova.keypairs.create(name="admin", public_key=fpubkey.read()) + +def upload_image_glance(): + #pdb.set_trace() + image_list=glance.images.list() + image_file="/home/onecloud/NTT/keerthi/ubuntu.img" + image=glance.images.create(disk_format="qcow2",container_format="bare",name="ubuntu") + print("image status %s"%(image.status)) + ss=glance.images.upload(image.id,open('/home/onecloud/NTT/keerthi/ubuntu.img','rb')) + print("Current Image status <%s>"%(image.status)) + + #with open(image_file) as img: + #image=glance.images.create(name="ubuntu",disk_format="raw",container_format="bare",data=img) + + #print("Current Image status %s"%(image.status)) + + +def launch_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to launch VM on the given network & VM Name. + """ + #pdb.set_trace() + instance=None + tenant_credentials = get_tenant_nova_credentials(tenant_name) + + nova = nvclient.Client(**tenant_credentials) + nova.quotas.update(tenant_name, instances=-1, cores=-1, ram=-1, fixed_ips=-1, floating_ips=-1) + with open('user.txt') as userdata: + user_data = userdata.read() + try: + image_list=nova.images.find(name="ubuntu") + except NotFound: + upload_image_glance() + + #for img in image: + #if img.name == 'ubuntu': + #print "image found" + try: + + flavor = nova.flavors.find(name='traffic') + except: + flavor = nova.flavors.create(name="traffic",ram="2048",vcpus="1",disk="10") + + + try: + + instance = nova.servers.create(name=vm_name, image=image_list, + flavor=flavor, + key_name="admin", + nics=[{'net-id': network_id}],userdata=user_data) + except Exception: + pass + + # Poll at 15 second intervals, until the status is no longer 'BUILD' + print " * Instance <%s> created on network <%s>: "%(vm_name,str(network_id)) + status = instance.status + while status == 'BUILD': + time.sleep(15) + # Retrieve the instance again so the status field updates + instance = nova.servers.get(instance.id) + status = instance.status + + print " - Current status: %s" % status + if FLOATING_IP_CREATION: + add_floating_ip_for_vm(tenant_name, instance) + + ins_data = {'instance_name': vm_name, 'status': status} + return ins_data + +#def endpoint_discovery(tenant_data,network_data): + +# tenant_credentials = get_tenant_nova_credentials(tenant_name) +# nova = nvclient.Client(**tenant_credentials) +# instance_list = nova.servers.list() + + +def discover_vm_on_network(tenant_name): + """ + This method is used to discover instances per tenant + """ + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + inst_find=nova.servers.find(id=instance_id) + print(' - Instance %s Discovered' % inst.name) + print(' - Instance ID %s Discovered' % instance_id) + print(' - Instance %s Status' % inst.status) + status=inst.status + except Exception: + print(' - Instance Not Found') + status = False + + ins_data = {'instance_name': name, + 'status': status } + return ins_data + + +def terminate_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to terminate VM on the given network & VM Name. + """ + pdb.set_trace() + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + nova.quotas.delete(tenant_name) + try: + instance = nova.servers.find(name=vm_name) + nova.servers.delete(instance.id) + print " * Instance terminated on network: " + str(network_id) + except Exception: + print " * Instance Not Found on network: " + str(network_id) + pass + return True diff --git a/NTT/ntt-29-3-16-test/vm_instances.pyc b/NTT/ntt-29-3-16-test/vm_instances.pyc new file mode 100644 index 0000000000000000000000000000000000000000..147b8d37d21411c819918c252634bbe0cab954c4 GIT binary patch literal 5062 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 b{+cR+&SpSuQ@JJN`b$nFSDGq)R=WCM4bogl literal 0 HcmV?d00001 From 34309e7791728913f4b1159e9c73ed838240753e Mon Sep 17 00:00:00 2001 From: openstackdev86 Date: Wed, 30 Mar 2016 18:51:30 +0530 Subject: [PATCH 2/6] discovered vm on each subnet with its allocation range --- .idea/encodings.xml | 6 + .idea/misc.xml | 14 + .idea/modules.xml | 8 + .idea/openstack-scripts.iml | 11 + .idea/vcs.xml | 6 + .../ntt-30-3-16/.discover_deploy.py.swp | Bin 0 -> 16384 bytes NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swo | Bin 0 -> 32768 bytes NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swp | Bin 0 -> 16384 bytes NTT/ntt-30-3-16/ntt-30-3-16/.idea/misc.xml | 14 + NTT/ntt-30-3-16/ntt-30-3-16/.idea/modules.xml | 8 + .../ntt-30-3-16/.idea/ntt-29-2-16-test.iml | 12 + .../ntt-30-3-16/.idea/workspace.xml | 426 ++++++++++++++++++ NTT/ntt-30-3-16/ntt-30-3-16/.networks.py.swp | Bin 0 -> 16384 bytes NTT/ntt-30-3-16/ntt-30-3-16/.t1.py.swp | Bin 0 -> 12288 bytes .../ntt-30-3-16/.vm_instances.py.swo | Bin 0 -> 20480 bytes .../ntt-30-3-16/.vm_instances.py.swp | Bin 0 -> 16384 bytes NTT/ntt-30-3-16/ntt-30-3-16/config.py | 75 +++ NTT/ntt-30-3-16/ntt-30-3-16/config.pyc | Bin 0 -> 2235 bytes NTT/ntt-30-3-16/ntt-30-3-16/credentials.py | 46 ++ NTT/ntt-30-3-16/ntt-30-3-16/credentials.pyc | Bin 0 -> 1484 bytes NTT/ntt-30-3-16/ntt-30-3-16/destroy_deploy.py | 76 ++++ .../ntt-30-3-16/discover_deploy.py | 281 ++++++++++++ NTT/ntt-30-3-16/ntt-30-3-16/discovery.py | 296 ++++++++++++ NTT/ntt-30-3-16/ntt-30-3-16/floating_ips.py | 46 ++ NTT/ntt-30-3-16/ntt-30-3-16/floating_ips.pyc | Bin 0 -> 1930 bytes NTT/ntt-30-3-16/ntt-30-3-16/networks.py | 178 ++++++++ NTT/ntt-30-3-16/ntt-30-3-16/networks.pyc | Bin 0 -> 5094 bytes .../ntt-30-3-16/openstack_clean_script.py | 158 +++++++ NTT/ntt-30-3-16/ntt-30-3-16/t1.py | 17 + NTT/ntt-30-3-16/ntt-30-3-16/t2.py | 31 ++ NTT/ntt-30-3-16/ntt-30-3-16/tenant.txt | 7 + NTT/ntt-30-3-16/ntt-30-3-16/tenants.py | 145 ++++++ NTT/ntt-30-3-16/ntt-30-3-16/tenants.pyc | Bin 0 -> 4098 bytes NTT/ntt-30-3-16/ntt-30-3-16/user.txt | 7 + NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.py | 179 ++++++++ NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.pyc | Bin 0 -> 5562 bytes 36 files changed, 2047 insertions(+) create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/openstack-scripts.iml create mode 100644 .idea/vcs.xml create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/.discover_deploy.py.swp create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swo create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swp create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.idea/misc.xml create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.idea/modules.xml create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.idea/ntt-29-2-16-test.iml create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.idea/workspace.xml create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/.networks.py.swp create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/.t1.py.swp create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/.vm_instances.py.swo create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/.vm_instances.py.swp create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/config.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/config.pyc create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/credentials.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/credentials.pyc create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/destroy_deploy.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/discover_deploy.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/discovery.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/floating_ips.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/floating_ips.pyc create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/networks.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/networks.pyc create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/openstack_clean_script.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/t1.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/t2.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/tenant.txt create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/tenants.py create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/tenants.pyc create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/user.txt create mode 100755 NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.py create mode 100644 NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.pyc diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7c4b884 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9f615f2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/openstack-scripts.iml b/.idea/openstack-scripts.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/.idea/openstack-scripts.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.discover_deploy.py.swp b/NTT/ntt-30-3-16/ntt-30-3-16/.discover_deploy.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..f7c19f04cdca15189bccb5e701522df783d8ea01 GIT binary patch literal 16384 zcmeI3OK2oT7{^Op->!;_7hlxQf}LH*%&v;UN?>P`5eJh=n9N3(Y-oGBYm#Prx`*zX zNhTs5M8u1F6nx-C(1SN02(F?YJa|#?riWD#R0L5EzVPv{NB4AQC&?O65vt+0lm6=c z|Ej91s(YIU7pgP#j`7;m&Se)85=Rji=IySi!@`6+?#Y`SKiVR4 zX(ej2QWP>bh`L^>)@YPYG8Xd{zvTIe8}(Rhd#n>g{qatJi+oIwQNSp$69smYTW>jZ zP^8>f*h}|Zb!;b@m^4NKqkvJsC}0#Y3K#{90!9I&!2eVM-q}SSLfy~R^$+y#IYYmH z>Z_sc?V<2Lba+kM-x&)3U58()?N{gm(sH!f{1^p{0!9I&fKk9GU=%P47zK<1MggOM zQNSqh4=CVxgjmS;N3jvd`~P(R|IHPId=0(?PlI*P11Et4?gV?lrbqN3wDFIFDB$A@FbW7w}Y#|#}^Uu1Xu;f!8PDJeBban_zau|r$8SZ0l!^9$QR&! z@HjXIt^=pfC*(!I!7^w82Fl=0@Y^mzUIWj8hrw}hJ^21SLOuX*fm7g3@H%)6yb4|c zFM{X693bEW9LT%}-UTm%r@$j10rTJpxB*-WgztVh`-2p!ua4IoPZ+m(?6_=fKgsN| zA97ka5f(O@?8J2fW^2+wyc>sfUD||w6RqJ^(>csH?@mIhuP z5ered6S~X}p@X$lB>6b&*kAX$hq#tffUuJ7zd-D~i$n1W=VOD@EK| zOR7JJSkljkCi{lCQ9-!t zN2ghfQyGUQQ8#uWzKYp%f-Xx`CWt==1$n>WGy^uaXytOViqxuVO=R}MFt4T5N=nCc z#E7x8hWTMD8p~QC9VV32j_S*Tg<){P|8f6JNw;*{W@)-jcxI#vRe77FOWoNEoY3~Y zVfUX^TG#jD9VHy@H2pzm+oZZ9dYkA&GPdYznf$5~;fu17od^ZxJCVJkPBieN`pa5? zhO{~*yNh(kCcUS>UGJ-@X(~&e-cMGi>Q*t=_fqd|-SyVUa8;>NY|+wl?T8+?c7`uD zYCn`i-jy3XlAFzyPu4c^2@1^nWM>0=Z98e}^5K#xI~dktrd0!4*H~(rt33v^knxP+ zoa?lHHXXVVo^coxu;?sumegz7w6vefoaL06bz&JfvKLRNiLgI0at51}B^NE-(DXLz zLOOV1hN>X_Y#3e@4CKIbFo^;mGc)tB06@FcBq#qAv)o8kgi%~Mb=ERoG;*hrn^TOE<_Mv$~Xp@_Iv(lA5|Ls5@jBMfG z+?=UZ(o<$uXFa?L30arNSpQ8>H}KKA@k#kJcHjV(e;y22(k1&z?gmkp@$Ai6utFxS zIBH`?5sM5i78%rUccPf**BvTOubr(SuwGJ;Qs>$Tj6z$F0u^81WO3E1bYmRV$l)l; zTBKR-%0Prddfi?t&s6NWdgZR_eZ{;jyGa-JMY=F!PtG2zHDvPgeBHi#cD_-h;;&=# zmAd+Ct~@_~?`(alNU<+CI$g0v@Is|ty{kGYHwc4_MP5a{_O0C4sMKraX}eZwAo)E- zJvX1R7b()I%G~tq@tF!X9aR)_LW!go_gYTfxTEFyie0TuRnRt_v1-B~*}%oAD~4Q~ z`apIP-9vh}*ay?-%0zU*QIh_J36_Wz{S@o50H4mshv{kaJfIbgs8H-TRf=NIrZ_z8%;zex8XFqculC}0#Y3K#{90!9I&fKk9G zU=%P47zO@S1;i1CdQnF364I70LTp>SeY9*_1lYEfy+V`cy!u38>*GzF9EqG|0`Yn& zcg^Detvh(jCy!BS)WXTIdf$|&i0WWe6_veJ&6k{>!u*{BJR&Nf^UT!+$2WtwVMVIX Re#NmO4mxr#6LgXS`3q{qR4@Pl literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swo b/NTT/ntt-30-3-16/ntt-30-3-16/.discovery.py.swo new file mode 100644 index 0000000000000000000000000000000000000000..16b9ced002fe18e3d926be4b9f9d498aaedee4f0 GIT binary patch literal 32768 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 ejelXsqED?DfYisn_ZNQQM literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.idea/misc.xml b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/misc.xml new file mode 100644 index 0000000..7c4b884 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.idea/modules.xml b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/modules.xml new file mode 100644 index 0000000..64e6bd4 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.idea/ntt-29-2-16-test.iml b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/ntt-29-2-16-test.iml new file mode 100644 index 0000000..6f63a63 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/ntt-29-2-16-test.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.idea/workspace.xml b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/workspace.xml new file mode 100644 index 0000000..5570e2d --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/.idea/workspace.xml @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1459230370172 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.networks.py.swp b/NTT/ntt-30-3-16/ntt-30-3-16/.networks.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..a8931b66ede7d398739a9271fdf2462cc021a947 GIT binary patch literal 16384 zcmeHNON<;x8LklCd4Ozj$N{N5(Wqzbd8|WBq)~=I)^@T1j~(yWkgQj&-tL;2lKVw> z&8)|k73CBuc zzufY8a)5AWoJ6dX#LN$qNzmyJ2A#`{Wn#=bF%x@9b~$gSvjY^^BFlhf;8QSg5BbIe z#}V0t++RCF4?g zuK&{MX`Sycm4B?uKdbZKT`Jd)_F@^Z3|Iy%1C{~HfMvikU>UFsSOzQumI2Ga|9}B6 zAmk9*{kc5wBE61~3DD01SXl;1S?H;BWU5@>75V4*~ZAAKgR9KY;gu zw}BUd7l0oDPXLbsf4>{`fE&P@!0W&s@CeWZz6QK^7a_j_egfP85?~GZ>z4`n5O@=K z7I+G{4|xAeg!~ftG4LEP21Y;&puk68M4P~6;27}X7YKO`=mTE|{`h%9egoV9UIBgx zq`(p2{m&8dD)1a2fHrV9@K3z#_%-kj@EY(W@G!6jd~hcrF9Reh2&(kYn;QV1J@WX~ttgYnS30dZ-hN16S~f(H;#v!Q^c_PWBq| z<|;nCXgC+PI_Er}54rEGtTpm=Ud7QgY@3p-YUw#CQ(3`~m z*hQrzc6E)0V6hjAZAV=Tba zFk{|Ew}*0|8^cJfRfcPyt}V%ZsjZ@`9F>E$DYq*u!H=e*RXh646J#;7QIpSo^>q&{ zrW+aa1W#hsm90q>dD)D1Yv@UptI{^dY3Bwuf^}bbGkbuC$y&m02qBLZZPSeYI7x%ar(^FRj%VIC2kHJOuycsRE=&s3u zm&Ob^#KM{KNtvO_wHFjx(F%f|Wkb(rbQi2L7HdDqC%YhU+mXTG?3DaTMK?_*I(gu9 z=~BcZZ|8ccCuS3oC2`ve0(WkMnXfN7iZ5YmPDovj)@}!-}$Us**OrU>7bY zCOJm!v=`=#R83ViQFQJ4JfB_hS&DEdF7Tt0Em?Cx;UJqV>MQtMqEok_V#%1gio>}v z>c$P2@OZebyP7*Y+v_`XE2S+9a_EF1(3cUwTvgoIO@diZ{WToE%ZjWLn0jc7b*G0gWkY@ilYOnF3R=~fpJU>_a$9aM zojBmW`0qG=znqJe#|3f~F>S7%Kg^W^zw{uyF%CkKoUxF3Idid-ajWI32KMgQ zYzr^OzRJ{Cb$UQkEQ_!o!a})ltWawFBp&jSQP4j%`2N}R-&NcCa)aNbr@wdhJA=*s zWA5fTcjNpi+@I}h1tnib%MwpYPBX6Qo<88N8*!CIG=WKO?$ThFNIyNvrYyvV@mZIS zlGF>oZ9aSFvETNSsBjzjv`RPg=r;7^e#TR|W$x0#ZPl}M+k-rI(MP34_aEs@@~pGV z;|`0ba{R|hOyv2$kF)$$K%W0`bS=^!@cet=d0i&o0oY_2unbrRECZGS%YbFTGGH07 z3|Iy%1C{~H!0j?1PyQJblMMfbRsX3_|56nHEuB{{Qv!;&DfF~{+d?Q-W64VZ literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.t1.py.swp b/NTT/ntt-30-3-16/ntt-30-3-16/.t1.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..2053542418481ece30ee4a407c4a537c523f1ee4 GIT binary patch literal 12288 zcmeI&Jx{_w7zgk}7adTeaj!Zs(JK{&kT{S?qKUkOwm3EgN@#ew1`ZNj`~)tpE{=W; zcV9+y^&|KRe2Qoy8f78T_`l?z%RRl^U4L8CD{H00tddaUjM@rg3l~qN@O&XO95B`q zLI&lZn(*CrS2~qO)bYeOlX+dVTrS#fr73z6YlpD$=<&1JdL4yDUAOHafKmY;|fB*y_0D=E4kT>kKWggg8@krTI zB6YfKK21sbDb8aFU5)J~Rb7p1sU1zzcwZlBep+F2`WKtbX3Fcirr7TN1yqek0)j%? zFpl%Z{XoU3w!HSJYG!ijoN4FM+04fWmXRq=R2i#vL`!M7gRUH1xcA()RQtNEDPGGL L9jR2BL5aNp-vp8i literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/.vm_instances.py.swo b/NTT/ntt-30-3-16/ntt-30-3-16/.vm_instances.py.swo new file mode 100644 index 0000000000000000000000000000000000000000..3d84a7a4dc93caaedf94c6505a90eafb36b4ca5c GIT binary patch literal 20480 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 H+F1P;`)|>@ literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/networks.py b/NTT/ntt-30-3-16/ntt-30-3-16/networks.py new file mode 100755 index 0000000..befd00e --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/networks.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +""" +Description: This script is to create network, subnets, router with \ + external gateway mapping. +Developer: gopal@onecloudinc.com +""" +import pdb +import os +from neutronclient.v2_0 import client +from credentials import get_credentials +from config import NETWORK_COUNT, VM_COUNT, FLOATING_IP_CREATION +from vm_instances import launch_vm_on_network, terminate_vm_on_network +from floating_ips import release_all_floating_ips +from datetime import datetime, timedelta +from pytz import timezone + +credentials = get_credentials() +neutron = client.Client(**credentials) +fmt = "%Y-%m-%d %H:%M:%S %Z%z" + + +def create_network(tenant, router, network_index, network_cidr): + """ + This method is used to create network, subnets, interfaces on router with \ + external gateway mapping for the given network name and CIDR. + """ + + try: + prefix = tenant['tenant_name'] + network_name = prefix + '-net-' + network_index + print "\n" + print "=" * 50 + print " Initiated Network Creation for " + network_name + print "=" * 50 + print "\n" + + body_sample = {'network': {'name': network_name, + 'tenant_id': tenant['tenant_id']}} + start_time = datetime.now(timezone('US/Pacific')) + try: + net = neutron.create_network(body=body_sample) + net_dict = net['network'] + network_id = net_dict['id'] + network_vlan = net_dict['provider:segmentation_id'] + print(' - Network %s created' % net_dict['name']) + net_status = True + except Exception: + net_dict = {} + net_status = False + + subnet_name = prefix + "-subnet-" + network_index + try: + tenant_id = tenant['tenant_id'] + body_create_subnet = {'subnets': [{'name': subnet_name, + 'cidr': network_cidr, + 'ip_version': 4, + 'network_id': network_id, + 'tenant_id': tenant_id}]} + subnet_detail = neutron.create_subnet(body=body_create_subnet) + subnet = subnet_detail['subnets'][0] + print(' - Created subnet %s' % subnet['name']) + net_status = True + except Exception: + subnet = {} + net_status = False + + neutron.add_interface_router(router['id'], {'subnet_id': subnet['id'], + 'tenant_id': tenant['tenant_id']}) + print (' - Created interface between %s' % subnet['name']) + finally: + print "\n" + msg = "<== Completed Network Creation with External Gateway " + msg += "Successfully ==>" + print msg + end_time = datetime.now(timezone('US/Pacific')) + print "\n" + print "-"*65 + print (" Network %s Creation Time Summary :" % network_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + print "\n" + print "=" * 50 + print " Initiated VM Deployment " + network_name + print "=" * 50 + print "\n" + + ins_data = [] + for i in range(1, VM_COUNT + 1): + vm_name = network_name + '-vm-' + str(i) + start_time = datetime.now(timezone('US/Pacific')) + ins_data.append(launch_vm_on_network(tenant['tenant_name'], + vm_name, network_id)) + end_time = datetime.now(timezone('US/Pacific')) + + print "\n" + msg = "<== Completed VM Launch on Network with Floating IP Allocation " + msg += "Successfully ==>" + print msg + print "\n" + print "-"*65 + print (" Instance %s Creation Time Summary :" % vm_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + result = {'network_data': {'tenant_name': tenant['tenant_name'], + 'network_name': network_name, + 'network_cidr': network_cidr, + 'subnet_name': subnet_name, + 'network_id': network_id, + 'network_vlan_id': network_vlan, + 'status': net_status}, + 'instance_data': ins_data} + return result + + +def delete_vm(tenant_data,network_data): + """ + This method is used to delete vms, network, subnets, interfaces on router \ + with external gateway mapping for the given network name and CIDR. + """ + pdb.set_trace() + #prefix = tenant_name + network_list = [] + router_list = [] + count=1 + #router_list.append(prefix + '-router') + #for i in range(1, NETWORK_COUNT + 1): + #network_list.append(prefix + '-net-' + str(i)) + for tenant in tenant_data: + for network in network_data: + vm_name=tenant['name'] + '-vm-' + str(count) + if ((network['network_list']['tenant_name'] == tenant['name']) and (network['network_list']['shared'] == False)): + + + terminate_vm_on_network(tenant['name'], vm_name,network['network_list']['network_id']) + count += 1 + + release_all_floating_ips() +def delete_networks(tenant_data,network_data): + pdb.set_trace() + networks=None + for tenant in tenant_data: + networks=neutron.list_networks(tenant_id=tenant['id'])['networks'] + routers=neutron.list_routers(tenant_id=tenant['id'])['routers'] + subnets=neutron.list_subnets(tenant_id=tenant['id'])['subnets'] + + + for router in routers: + ports=neutron.list_ports(tenant_id=tenant['id'])['ports'] + for port in ports: + #for subnet in subnets: + if (port['device_id'] == router['id'] and port['device_owner'] == 'network:router_interface'): + neutron.remove_interface_router(router['id'],{'subnet_id':port['fixed_ips'][0]['subnet_id']}) + neutron.remove_gateway_router(router['id']) + neutron.delete_network(port['network_id']) + neutron.delete_router(router['id']) + #neutron.delete_network(network['id']) + + #for network in networks: + #neutron.delete_network(network['id']) + + #for subnet in subnets: + #for network in networks: + + + + + + #if FLOATING_IP_CREATION: + #release_all_floating_ips() + #print "\n" + #print("<== Released all Floating IPs Successfully ==>") + #return True diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/networks.pyc b/NTT/ntt-30-3-16/ntt-30-3-16/networks.pyc new file mode 100755 index 0000000000000000000000000000000000000000..12bd62b7205f5b30f781123d59703068346b67ae GIT binary patch literal 5094 zcmbtYTW=f36+TOflt_uXOEi5+H;EauiD?-Dsscik#+7VYXe=8m#YzbXi#2y8t-Tj| zXGu#g*%zm8Ezp-fxIdsjpg{Z3pVHSp^|?Qw{mz*sEjmtsq@s2>GiP?@T)uM|=KoVE zf3p1V$8E~~a`^rNkNOuHm#Br-AU8*WK`nH2KS!;c^z#(tDV(6z1Q|@5prAluky=GP zE>JK@;S{x|C@fK{L}8g)WlbwmFiqhMwPq-+P^+S6Cn=bvaE@AYdOStJJcaYrLc2h% z1wC7$V3EQlYAuoB73mciEs!@sPnXFn&>t{dAs0ujk~>Y`U|1!0Mmm?stw^WFQtdZp zSy;S45DjdcGFbdC+Mr2W)gQ(FEL;E z>8UyP=bd3basu-NFTQZj&Cuy|{OIHsj_P?q-0_kP^Ca##!54AlwS&0p`ceBgXMq&QmX;2DOSo{nyQU z*sQx|{r*P%!A5=Gtheef+Y=!1X{?bgJnDCl`{mz^zJRngn4tayTeaH9GboUor=9!2 zq+6h6bc)n3Q1#*r(|v>d98=s$TIZdnsD@|VEz$a*NGZ`%gHph~Os@?7A57Bu4yAc| zik+va&+sz_Q`Da#yi*&Ls9$2V)dpqhRnVIzcUA_IR9oG-pB88^Lx<5dnt*wql_~ir z8HV8#;q7#iiIG8Hvov#=G!;5eDPwOiOU!kF`W4M}p4@qGyg=?EWGIungs)i^W&H$R zxeQ6>gk!J>j^~8qdFszIt>&(PL%h36eYD@jVIK?%hYJ@tWGz5moB?@Rjo1J^w>qZE zS2=j?r3rpyG?g#8!XsZxp`^cfeis0o#s;02&3LjM+ ztiBs6{bhOz-9yv{g6=Z8H-W1v^{WV@O?JmWp(%3+l;{axKaE|E zo?Yd+-y1^x2odJkX?x0yqi+S&?~0@5ah#axsb`+}JuezYW;1d^&vYW!+}ho?ZV5kt z0|&9liBg-%s(^755w58?#FkTTH~ml1st?dWgx$zTXidTRo{sqD7AF8C2YoEZBHl{J zGrhI%!gn#PUr=TAzuI4WQgQ+93pZsPOyDIe)~?4Fk>a4N%$8*D1fWoZkc2C{Ojl~Y7E z$f~JkU5QwF#O%EP_QH|H%qNi6gZk@gPyGzbKHJ}em4xA{yT56o?^6U66iClm1(T(QoZy|Af%fzG(#SpKD? zQ%3XBvo^@5ydYoMq7sXZkhmZTuh-X zfl){01FPsD>1sc@d)D@(z(N8Y+C96>ir5A7wXJ>mzu2$T4>UAVl(Rn?eoS@lD=w6*T7%UEQw>e59ta>Teon8D1J zu9rG~pe-i_s0bXY6FC>sYG&9>u$~xB+{hO@p|TS&u;CL=b%V5l9!VoEwssna-rBGl zUE4c2SbOGqNqXw9Wg1eqI_DOL1CAZ)FZ_BjZ)G3JbgT!B|&x0N?LV%-wvhx-?e%f>S3^LV#5T0f#=^Rcc9EmMC=U;5H-fve)1Vfpy1yqVo{kDNRrwSRaFAUFU`u zS)6SfY|x7do`aQjjmaF9g`yqZ<})Q;wBv4+S~qzO$3<%sjW~fcKfn`&J*{Y5jn1)+ zkr7s0{iv9=;9C&^liM_(WV5^fD=bF@ZZ0 zR^yJu6VG20{ttPfT&zT7o=@NdRXT)*^o@N_;-$qYX&7+%R<0z%Hk@;`Xw5v z$o3FIEt5y=0gSt0Le!~NW->m76`9a6UP*qC3C%dyf{7Q#Jup5jl!qyiWz1;VuM9&9 zCzK4CnOMS0Hl@#&Kw>czwZrUiPu$`@_jq%w$;~br5sW$dah}4CHqMXwBc{|7RGKj@IL30q?j!lGx*HobJbWyizin? LHZA5$?NarBSBZOx literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/openstack_clean_script.py b/NTT/ntt-30-3-16/ntt-30-3-16/openstack_clean_script.py new file mode 100755 index 0000000..bb04cd1 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/openstack_clean_script.py @@ -0,0 +1,158 @@ +import logging +import pprint +from novaclient import client as novclient +from neutronclient.v2_0 import client as nclient +import time +import pdb +import MySQLdb +from keystoneclient.v2_0 import client as kclient +def main(): + net_list=['NET-A','NET-B','NET-C'] + ext_net_list=['EXT-NET-A','EXT-NET-B'] + ext_subnet_list=[] + flavor_list={} + + router_list=['Router-A','Router-B'] + subnet_list={'subnets':[{'name':'Subnet-A','network_id':'','ip_version':4,'cidr':'1.1.1.0/24'},{'name':'Subnet-B','network_id':'','ip_version':4,'cidr':'2.2.2.0/24'}]} + count = 0 + instance_detail={} + networks={} + logging.basicConfig(level=logging.INFO) + logger=logging.getLogger(__name__) + logger.info("Keystone authentication started....") + time.sleep(5) + logger.info("Wait for 5 seconds...") + logger.info("done") + neutr=nclient.Client(username='admin',password='admin',tenant_name='admin',auth_url='http://192.168.1.12:5000/v2.0/') + novactr=novclient.Client('2',username='admin',api_key='admin',project_id='admin',auth_url='http://192.168.1.12:5000/v2.0/') + logger.info("Authentication success...") + #logger.info("getting input from user....") + #network_count=int(raw_input("Enter the no of network to created >>\t")) + #ext_network_count=int(raw_input("Enter the no of External network to be created >> \t")) + #instance_detail['name']=raw_input("Please provide name for instance") + #flavor_id=int(raw_input("Provide the flavor for the instance")) + #netw=neutr.list_networks() + #print netw + #ss=db_connection(flavor_list,novactr) + #us=ss.get(flavor_id) + #if us: + #logger.info("You choose %s flavor"%(us)) + #else: + #logger.info("The flavor u choose is doesn't exists..") + #exit + #create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id) + delete_network(neutr,novactr,logger,net_list,subnet_list) + +def create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id): + pdb.set_trace() + logger.info("Start creating external network ") + ext_network=neutr.create_network({'network':{'name':'EXT-NET','admin_state_up':'True','router:external':'True'}}) + ext_id=ext_network['network']['id'] + vm_list=['vm-1','vm-2'] + logger.info("Creating external network subnet...") + ext_subnet=neutr.create_subnet({'subnet':{'name':'EXT_subnet','network_id':ext_id,'ip_version':4,'cidr':'6.6.8.8/24'}}) + time.sleep(2) + logger.info("creating router") + router1=neutr.create_router({'router':{'name':'Router-1','admin_state_up':'True'}}) + router_id=router1['router']['id'] + neutr.add_gateway_router(router_id,{'network_id':ext_id}) + + while count < network_count: + + neut=neutr.create_network({'network':{'name':net_list[count],'admin_state_up':'True'}}) + if neut: + net_id=neut['network']['id'] + logger.info("Network %s sucessfully created.."%(net_list[count])) + time.sleep(4) + logger.info("Start creating subnets") + #nsub=neutr.create_subnet({'subnet':subnet_list['subnets'][count]}) + nsub=neutr.create_subnet({'subnet':{'name':subnet_list['subnets'][count]['name'],'network_id':net_id,'ip_version':subnet_list['subnets'][count]['ip_version'],'cidr':subnet_list['subnets'][count]['cidr']}}) + sub_id=nsub['subnet']['id'] + if nsub: + logger.info("subnet is created for network %s"%(net_list[count])) + time.sleep(4) + logger.info("Adding interface to router") + neutr.add_interface_router(router_id,{'subnet_id':sub_id}) + time.sleep(5) + logger.info("Ready to launch the instances") + pdb.set_trace() + image = novactr.images.find(name="cirros") + print net_id + instance = novactr.servers.create(name=vm_list[count], image=image, flavor=flavor_id, nics=[{'net-id':net_id}]) + logger.info("Instance launched successfully on network %s"%(net_list[count])) + time.sleep(4) + count = count+1 + else: + logger.info("Error in network creation") + time.sleep(3) + logger.info("setup is ready for testing..") + +def db_connection(flavor_list,novactr): + db=MySQLdb.connect(host="localhost",user="root",passwd="dafc1bce95654501",db="nova") + cur=db.cursor() + cur.execute("select id,name from instance_types") + ss=novactr.networks.list() + print ss + return dict(cur.fetchall()) + +def delete_network(neutr,novactr,logger,net_list,subnet_list): + logger.info("Start cleaning the dashboard") + del_net={} + server_delete(novactr,logger) + delete_interface(neutr,logger) + count=0 + +def server_delete(novactr,logger): + #pdb.set_trace() + logger.info("Fetching list of servers") + myserver=novactr.servers.list() + server_len=len(myserver) + for i in range(server_len): + ss=novactr.servers.delete(myserver[i]) + if ss: + logger.info("Instances %s sucessfully deleted"%myserver[i]) + time.sleep(1) +def delete_interface(neutr,logger): + + mynetwork=neutr.list_networks() + net_len=len(mynetwork['networks']) + myrouter=neutr.list_routers() + r_id=myrouter['routers'][0]['id'] + port_delete(neutr,logger,r_id) + my_ports=neutr.list_ports()['ports'] + port_gateway=[] + s=neutr.remove_gateway_router(r_id) + if s: + logger.info("gateway router is detached successful...") + myrouter=neutr.list_routers()['routers'] + for r in range(len(myrouter)): + + neutr.delete_router(myrouter[r]['id']) + logger.info("Deleting networks...") + time.sleep(2) + for j in range(net_len): + dd=neutr.delete_network(mynetwork['networks'][j]['id']) + +def port_delete(neutr,logger,r_id): + logger.info("listing port details..") + myports=neutr.list_ports()['ports'] + port_list=[] + port_gateway=[] + for port in myports: + + if (port['device_id'] == r_id and + port['device_owner'] == 'network:router_interface'): + port_list.append(port) + logger.info("Removing router interfaces..") + + for i in range(len(port_list)): + + del_inf=neutr.remove_interface_router(r_id,{'subnet_id':port_list[i]['fixed_ips'][0]['subnet_id']}) + +#def get_id(novactr,logger): + #welcome=novactr.servers.list(413fb5d3-c1bc-4267-80ab-6a27d0cfd04b) + #print welcome + + +if __name__ == '__main__': + main() diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/t1.py b/NTT/ntt-30-3-16/ntt-30-3-16/t1.py new file mode 100755 index 0000000..a93a8ab --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/t1.py @@ -0,0 +1,17 @@ +from keystoneclient.v2_0 import client + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' + +keystone = client.Client(username=OS_USERNAME, password=OS_PASSWORD, auth_url=OS_AUTH_URL) +import pdb +pdb.set_trace() + +tenants = keystone.tenants.list() +for tenant in tenants: + print tenant.__dict__ + + diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/t2.py b/NTT/ntt-30-3-16/ntt-30-3-16/t2.py new file mode 100755 index 0000000..adb670c --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/t2.py @@ -0,0 +1,31 @@ +from neutronclient.v2_0 import client as neutron_client + + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' +OS_TENANT_ID = '2931fbe17e8445da875bb915a29d0bbf' + +def get_credentials(): + d = {} + d['username'] = OS_USERNAME + d['password'] = OS_PASSWORD + d['auth_url'] = OS_AUTH_URL + d['tenant_id'] = OS_TENANT_ID + return d + +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] + + +credentials = get_credentials() +neutron = neutron_client.Client(**credentials) +netw = neutron.list_networks() +print netw diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/tenant.txt b/NTT/ntt-30-3-16/ntt-30-3-16/tenant.txt new file mode 100755 index 0000000..2ecda20 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/tenant.txt @@ -0,0 +1,7 @@ +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/tenants.py b/NTT/ntt-30-3-16/ntt-30-3-16/tenants.py new file mode 100755 index 0000000..ed40861 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/tenants.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python +""" +Description: This script prepares new tenant with the following properties: +1. Creates new tenant. +2. Creates new user and this user is added _member_ to tenant. \ +Password is second argument of script +3. Admin user will be added to tenant with role admin +Developer: gopal@onecloudinc.com +""" + +import os +import pdb +from keystoneclient.v2_0 import client as ksclient +from credentials import get_credentials +from config import USER_COUNT, USER_PASSWORD + +credentials = get_credentials() +keystone = ksclient.Client(**credentials) +assign_admin = True + + +def create_tenant(tenant_name): + """ + This method is used to create tenant and create number of users per tenant + """ + + print "\n" + print "=" * 50 + print " Initiated Tenant Creation for " + tenant_name + print "=" * 50 + print "\n" + + try: + try: + new_tenant = keystone.tenants.create(tenant_name=tenant_name, + description="Scale tenant \ + created", + enabled=True) + print(' - Tenant %s created' % tenant_name) + except Exception: + new_tenant = keystone.tenants.find(name=tenant_name) + tenant_id = new_tenant.id + tenant_status = True + user_data = [] + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + user_data.append(create_user(user_name, tenant_id)) + except Exception: + tenant_status = False + + print "\n" + msg = ('<== Completed Tenant Creation and Users per Tenant ' + 'with _member_ role ') + msg += 'Successfully ==>' + print msg + print "\n" + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def discover_tenant(): + """ + This method is used to discover tenant and discover number of users per tenant + """ + global tenant_id,tenant_status + try: + pdb.set_trace() + new_tenant = keystone.tenants.list() + tenant_id = new_tenant.id + tenant_status = True + print "\n" + print(' - Tenant %s Discovered' % tenant_name) + print(' - Tenant_ID %s Discovered' % tenant_id) + except Exception: + pass + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def create_user(user_name, tenant_id): + """ + This method is to create users per Tenant + """ + + try: + new_user = keystone.users.create(name=user_name, + password=USER_PASSWORD, + tenant_id=tenant_id) + print(' - Created User %s' % user_name) + except Exception: + new_user = keystone.users.find(name=user_name) + member_role = keystone.roles.find(name='_member_') + try: + keystone.roles.add_user_role(new_user, member_role, tenant_id) + except Exception: + pass + if assign_admin: + admin_user = keystone.users.find(name='admin') + admin_role = keystone.roles.find(name='admin') + try: + keystone.roles.add_user_role(admin_user, admin_role, tenant_id) + except Exception: + pass + user_data = {'name': new_user.name, + 'id': new_user.id} + return user_data + + +def delete_tenant(tenant_name): + """ + This method is used to delete tenant and users + """ + + try: + tenant = keystone.tenants.find(name=tenant_name) + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + delete_user(user_name, tenant.id) + tenant.delete() + print(' - Deleted Tenant %s ' % tenant_name) + except Exception: + pass + return True + + +def delete_user(user_name, tenant_id): + """ + This method is to delete users per Tenant + """ + try: + user = keystone.users.find(name=user_name) + user.delete() + except Exception: + print(" - User Not Found: %s" % user_name) + pass + print(' - Deleted User %s' % user_name) + return True diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/tenants.pyc b/NTT/ntt-30-3-16/ntt-30-3-16/tenants.pyc new file mode 100755 index 0000000000000000000000000000000000000000..a84e29f1a78e407cf6e1422237a759e0dbefc3e0 GIT binary patch literal 4098 zcmbVP-EJGl6+X-5kGPinBmby&n`E290gJ{|;uLBiL~dLuj(rg)Sjmwgpdjeo5w-Mk zm*y-j6A*i&pg=GB00nwe^fCGXeUH9EFNz`;&G(&Ml9p=(aYXHKW_ISxIdi`AokREE zE8ai<`me7;DgP??{uGb>JDN!30IefYMG{92&?)*AIjCsgmBf`nRSs(6@Lg4sx(pg} z&?v?=NtR^Ll!K-WJUQ^hF%3C|*t(dS^v{W@%bzh^7PBG;=OwDkHyB=!sG*&U5-n-x zl0;4ItV-l*=Q6e0ZJndCz9Zu87#oh_VIF7croVR-TfZ3l!;u+wN5=Z8IrejtcGKKH zj`JfwKQjJdmL%D6oc6FR8=6rb8@uU!*!H(arkkJH)b?(logP~=^1EpSK{!oE`0hrL ziTuvM44#-#$Ir9!%(nkk*V^N36#3N6gc){rN4@dDK%wlgRM-2c?ca?CaassGj+4ZH zVoIrVVTA#sEa4k0hV{=)LIXDaUN-C|pJu5ElWZKtY1j_4ffxS|e-B%@Daq?-!X(DI z#rOioJ(G9Bk%=%FcN5zp5^@jCqutMf&i0p&9`5BUv*A~FcX#){40b|_YvO6(*~Vi( z#te|~`F(gNa^(s-RXGt^dwGWMC;yO1TXK=UBYmu`aTWXz&%@`r3z)c5K&r|4YoFiW zPv4VjUX`bwjQ${wpA%idpLPn)^eOx_+3<2q)V9tO{_?0v1n1~~i2u14y4CN{nXXz_1XS)^O=1D(CgL59FFj~hObdK?U_I$(Z$f_BNfyg4h_Nu9Rx>M+`novY1>cSXaX@4=NPUrCh+j|)dT-(C5Xk%}pw|?mF@FQPr1D2tSO7qj%Uy+cv8n$y%zt>QYavs$TRw1UrdeAn^0?0C)<=WWb* zm6}tpcuvi!p>1G3qy%0TEmtynj?QGeB$-nY2bbG-rC((ZnhJxlUz2W~)X-g;^A>Ce z;efqx+sZtb5bvHc&)1B1MmjpS7KzRl!^%Y+1a<92RlB3Xt6*+qNoT+^_oq=nj*vKi6X!vE99eY zXab@wSVp5rO=6n|q^n}{dG>z7hIbz@pJ)OJ);N5NLp*Pc6v~<1M+xD(m{PN(=ECO} z6csoZncPs+VIKTn5%4^ZaK+hA38o^A{bdFwU}yC0EEg7n>ME!@lk)Op?W}ZY zj0{#vfA;NM`hO@L_=!`2i8T(Aw?8vWl!lt zR|njz#5XL<8-;|uf@uY&W)mbAaxT!POJ_{0oTUYff=ThGNYfX3UO>7Eh)IQ2Kvpiu z5yg*HGC{?q4A>!W=fo&9iF;|MkW2*&@q|P0Q#MM3d_i*LIm&Eh&8A`)54yj2y%_Rs zz_4rKc~eLSSFvXwkA0uJf#FrK+Kl6_g7a<=$C$f{PcdpJwzbq^+MBc6pD>s_o52Ry zodeU67r$fm1Dt8O^J`W^EIBGDNYDfFU6eb3jaD^l04!Ln04V^ATE}^IQ}zL>J_;uA z=1XBg_%@XbznR0=1BR%U{TR*bFoYY{+9fi~$+JR%nOJ?i0Mh^Ea}tQcXh*lsYZTDf z0xil*ii}_t>osErm(eSW6&|W?R2XOuEi@@0MfPg(YKxr7YNE`SH#kYa{1{&=Hj8sg z@&Z+eRyB0|)iRk~0gWknIU#9_NT0j-3k)W|c%6%jfM%6UPPs9U`rpzi@H2c27Sozk zi%tyS?_D+X`$E0+kh(=H$X7$%&OP#o0sSz`{d?IsjW!Y6i=dx*OV`}AE#7I7Lf&JK zK^&~JA;kyk01fd)aMB;t;>X;4(8lIJ;?WvTs=Vy;xa1}xtLd~zOdi6Quq4V7P5t-Uv>u9mR-lR*}Z6LW_wXNlo@W!YJFF5+{o(nQj%yUkxU KuQlIlu6_q1cy0>- literal 0 HcmV?d00001 diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/user.txt b/NTT/ntt-30-3-16/ntt-30-3-16/user.txt new file mode 100755 index 0000000..9e5d3d9 --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/user.txt @@ -0,0 +1,7 @@ +#cloud-config +chpasswd: + list: | + root:ubuntu + ubuntu:ubuntu + expire: False +ssh_pwauth: True diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.py b/NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.py new file mode 100755 index 0000000..792d9ca --- /dev/null +++ b/NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python +""" +Description: This script is to launching VMs on the network. +Developer: gopal@onecloudinc.com +""" + +import os +import time +import pdb +import novaclient.v1_1.client as nvclient +from novaclient.base import * +from novaclient.exceptions import NotFound +from config import FLOATING_IP_CREATION, IMAGE_NAME, FLAVOUR_NAME,OS_USERNAME, OS_TENANT_NAME, OS_PASSWORD, OS_AUTH_URL +from credentials import get_nova_credentials, get_tenant_nova_credentials,get_credentials +from floating_ips import add_floating_ip_for_vm +import glanceclient.v2.client as glance_client +import keystoneclient.v2_0.client as ksclient +keystone = ksclient.Client(auth_url="http://172.168.2.40:35357/v2.0", + username="admin", + password="admin", + tenant_name="admin") +token = keystone.auth_ref['token']['id'] + +credentials = get_nova_credentials() +nova = nvclient.Client(**credentials) +#glance=glance_client.Client(username=OS_USERNAME,password=OS_PASSWORD,tenant_name=OS_TENANT_NAME,auth_url=OS_AUTH_URL) +glance=glance_client.Client(endpoint="http://172.168.2.40:9292", token=token) + + +if not nova.keypairs.findall(name="admin"): + with open(os.path.expanduser('~/.ssh/id_rsa.pub')) as fpubkey: + nova.keypairs.create(name="admin", public_key=fpubkey.read()) + +def upload_image_glance(): + #pdb.set_trace() + image_list=glance.images.list() + image_file="/home/onecloud/NTT/keerthi/ubuntu.img" + image=glance.images.create(disk_format="qcow2",container_format="bare",name="ubuntu") + print("image status %s"%(image.status)) + ss=glance.images.upload(image.id,open('/home/onecloud/NTT/keerthi/ubuntu.img','rb')) + print("Current Image status <%s>"%(image.status)) + + #with open(image_file) as img: + #image=glance.images.create(name="ubuntu",disk_format="raw",container_format="bare",data=img) + + #print("Current Image status %s"%(image.status)) + + +def launch_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to launch VM on the given network & VM Name. + """ + #pdb.set_trace() + instance=None + tenant_credentials = get_tenant_nova_credentials(tenant_name) + + nova = nvclient.Client(**tenant_credentials) + nova.quotas.update(tenant_name, instances=-1, cores=-1, ram=-1, fixed_ips=-1, floating_ips=-1) + with open('user.txt') as userdata: + user_data = userdata.read() + try: + image_list=nova.images.find(name="ubuntu") + except NotFound: + upload_image_glance() + + #for img in image: + #if img.name == 'ubuntu': + #print "image found" + try: + + flavor = nova.flavors.find(name='traffic') + except: + flavor = nova.flavors.create(name="traffic",ram="2048",vcpus="1",disk="10") + + + try: + + instance = nova.servers.create(name=vm_name, image=image_list, + flavor=flavor, + key_name="admin", + availability_zone="compute:openstack-aio", + nics=[{'net-id': network_id}],userdata=user_data) + except Exception: + pass + + # Poll at 15 second intervals, until the status is no longer 'BUILD' + print " * Instance <%s> created on network <%s>: "%(vm_name,str(network_id)) + status = instance.status + while status == 'BUILD': + time.sleep(15) + # Retrieve the instance again so the status field updates + instance = nova.servers.get(instance.id) + status = instance.status + + print " - Current status: %s" % status + if FLOATING_IP_CREATION: + add_floating_ip_for_vm(tenant_name, instance) + + ins_data = {'instance_name': vm_name, 'status': status} + return ins_data + +#def endpoint_discovery(tenant_data,network_data): + +# tenant_credentials = get_tenant_nova_credentials(tenant_name) +# nova = nvclient.Client(**tenant_credentials) +# instance_list = nova.servers.list() + + +def vm_endpoint_discovery(tenant_name): + pdb.set_trace() + + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + networks=inst.networks + + + + except Exception: + print(' - Instance Not Found') + + +def discover_vm_on_network(tenant_name): + """ + This method is used to discover instances per tenant + """ + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + inst_find=nova.servers.find(id=instance_id) + print(' - Instance %s Discovered' % inst.name) + print(' - Instance ID %s Discovered' % instance_id) + print(' - Instance %s Status' % inst.status) + status=inst.status + except Exception: + print(' - Instance Not Found') + status = False + + ins_data = {'instance_name': name, + 'status': status } + return ins_data + + +def terminate_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to terminate VM on the given network & VM Name. + """ + pdb.set_trace() + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + nova.quotas.delete(tenant_name) + try: + instance = nova.servers.find(name=vm_name) + nova.servers.delete(instance.id) + print " * Instance terminated on network: " + str(network_id) + except Exception: + print " * Instance Not Found on network: " + str(network_id) + pass + return True diff --git a/NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.pyc b/NTT/ntt-30-3-16/ntt-30-3-16/vm_instances.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d6b4221844d9eb0500ac06a9e23d349880c882d GIT binary patch literal 5562 zcmb_gO>Z056}>}Jlt@X|w=Bh9<2ZI%C!#FIaT3K1qFA!6)~1t@Yy|{@!H6@Gh9YO^ zd5?@#NZGhu76rP=CO{X>s=uO(F53UlRoC5h*+qNqeH@A^93Vgv}b?W^T@c$Eh)ZZ*3pQr|Fk)NTaMKu&mIYYHfTFz1}o0fCb7@|g=YQxf! zrRE52^PC(t3)Cu7twfL2(T#=Tm6kMgo zHS$NuFOXj(f0X<&vEyuCQLbiFU{m8d`4?!>pPp-lcoDJ+w}AcZ^RFG^vBL$_6WgCpv~ z6xRb)Pr|ki<7n01J_wa<>NZL`wwqojsvm^WzWw54qMYaceK0J$FpQC>ow^xzD#Y92s!I)VDXP zYt`*@Lq1#E+S+;Mtn1#CwddQ9-RI7eQWjIhf&D*xcwlQh*;R1UOmuP!gIyk9A= z-20$hDc`-b`tE!0zW4rew^F_%<2x!yBCi$bAz8N-M$+8<M6k*;VReI!woh*hU5u zLSIG)k>8FnQ!RYYLqDv1SkXCj@}txg3STdml{#1seK%2Fx!u{7kl=qathq$j*5JCK-lv316yfNca(io z$(bj+Y7t!zI!S^k*qehx?%z}&mly`J(0VXtxAtfPbhDu8tpyg@PZJuDB-UhII zXNDJH-*6A35*H*uvW_cD@D(!Ey|8KUBUN!ysS>(LjCvoX*PI=nU!?U?<-?`Q(#pLh z9VorrZMk6tci^}xw~saZ(Gizi^DwiiH_@#4)>3A|%3Ig1F?{NL<+za#S}^kuR+kYD zD|q4r{ASTs+ z++&>syZ#V3X06cr6*U7aj#Zs8@+}3~;eheEpbJ%lb%HvFLwckX^5t9R?|juIVPkq#ygxkM{>oLfAJNnx+)b>l?X7VPLUk2=f{ zn#t7bdSTPs4V$4pc7F|mQcNaL%63Nwt9*lTqw0rCUKq<0qOh(MuL{Xs>Tx)`?0ec% zZ=>C|Z`+%_YiKj6*oG{8KE|F-OZ%!VTln<(=9Bf1{ZSWXy1itl1ZB8omFa67ed+O< zEnG)SiB&`Vs={@Lc}4aab?eO#6es(Ca8`WTiQ#6Ctl)Cs+(;JyqxlXipDec*M!v)O zfx|o`0Wim?96N2muDd~^B&Zul^*~Y<3ANIR!|usaI_ycLY6cj?P=I<1OFArs4%1GF zjl%(vXMxH@S$RXfGjn@~ogM;i2?m=KU_j|jkdQJsA8Bpi5; zy}{&$tFyx1Ii_*E3G_Hv$Q&Ggn4{!tI(mn>aQ(~cDN#cShJ~>UygE~Nk-*F^Ux4rk zpLvkpsF2<_OuJzGM~|6Q;m4NbbJY-D4q&{0N04^fChuen2tL~Wu0&38mX~<-!1)MW z0&nL&mwv&9_wHO{!%An801j#I$d$8>N{LTOfMxiE1MfUx^AzU%wGwU4p_wrz$w&$| zfX~@N$4`V3rWn8@&HY@^Rz1dDI&PsuU4|j6m|+-Xq0ST5L}o0*04P|qxp4ykz8QT0 z{1X-E8;2bhVgKWRXd~=Kvo{*_xb%OJxe={owD&dWE-ZCi2_8yjAC_x_${3=_DyB4_o5N_@+NS; ze{&sdJUFCJ+I>Kye@oKNGeYn8^}+6};?Y7wRl|Kh5aG^RI#1v&67mplMS+~o_X6G7 z=4sE_ynvD0#RudH(LY1ePXuj#$4WzRo&tZ19(5ara<4=79FShXXBNaa1oRiJqRC2G zZ2L(629-0a1F+Ay4fzq!Hwbe1qQeZZj*(*ly7*cEhy{V+r5@-7N=+lOQH;jB3{ozD z8@Z;*)Gj`Hyc5}dZu^746*p?2pCOA>W=k@C^%xGm4xT`!4ida0LUeyLyt<@+TGf*;`3Brq&1pc9te;L%L1 zBDC8{Cn#}%4DdF&^h-8Q96%zH0r=p9j}>=#p1x$`yq&CqbQa)(n2fL7+LS zRN={-NV={c*IifA#8^2G(IlsV^cmWL%)z8ijY_Pq$Hs-OT^J$xNp**EQUM$0EbcT$Z4{l&IpXC&_H_Qh@45t_~qJJVk5fA z-kTS^)c;EAJ!e_nifEk~;r6!0UpgTrR$5-nIbke!EAE|ip6nWRlRB&3zFB+IWLjoQ zMZP>qf<1@RGSOD&%D}+37a~*SZ870^&E{F++4l5-ydVchZ7=dUTQdXkjRu^PeAD@a zS7jJEpRw6tgD*bG`4Z*~UQ+r|2^=5#{Z{OEn!(2$4|NYFpBV$F#*nZTtx4;ybs2UV ezx@832Ww41naKErnxb{CR&an3Y literal 0 HcmV?d00001 From f24e5e728e45a27e06ebf8bd0ee35960ca60d4b6 Mon Sep 17 00:00:00 2001 From: openstackdev86 Date: Thu, 31 Mar 2016 10:40:35 +0530 Subject: [PATCH 3/6] script to find the vm's with respect to ip-range --- .../ntt-31-3-16/.discover_deploy.py.swp | Bin 0 -> 16384 bytes NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp | Bin 0 -> 16384 bytes NTT/ntt-31-3-16/ntt-31-3-16/.idea/misc.xml | 14 + NTT/ntt-31-3-16/ntt-31-3-16/.idea/modules.xml | 8 + .../ntt-31-3-16/.idea/ntt-29-2-16-test.iml | 12 + .../ntt-31-3-16/.idea/workspace.xml | 426 ++++++++++++++++++ NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp | Bin 0 -> 16384 bytes NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp | Bin 0 -> 12288 bytes .../ntt-31-3-16/.vm_instances.py.swo | Bin 0 -> 20480 bytes .../ntt-31-3-16/.vm_instances.py.swp | Bin 0 -> 16384 bytes NTT/ntt-31-3-16/ntt-31-3-16/config.py | 75 +++ NTT/ntt-31-3-16/ntt-31-3-16/config.pyc | Bin 0 -> 2235 bytes NTT/ntt-31-3-16/ntt-31-3-16/credentials.py | 46 ++ NTT/ntt-31-3-16/ntt-31-3-16/credentials.pyc | Bin 0 -> 1484 bytes NTT/ntt-31-3-16/ntt-31-3-16/destroy_deploy.py | 76 ++++ .../ntt-31-3-16/discover_deploy.py | 281 ++++++++++++ NTT/ntt-31-3-16/ntt-31-3-16/discovery.py | 318 +++++++++++++ NTT/ntt-31-3-16/ntt-31-3-16/floating_ips.py | 46 ++ NTT/ntt-31-3-16/ntt-31-3-16/floating_ips.pyc | Bin 0 -> 1930 bytes NTT/ntt-31-3-16/ntt-31-3-16/networks.py | 178 ++++++++ NTT/ntt-31-3-16/ntt-31-3-16/networks.pyc | Bin 0 -> 5094 bytes .../ntt-31-3-16/openstack_clean_script.py | 158 +++++++ NTT/ntt-31-3-16/ntt-31-3-16/t1.py | 17 + NTT/ntt-31-3-16/ntt-31-3-16/t2.py | 31 ++ NTT/ntt-31-3-16/ntt-31-3-16/tenant.txt | 7 + NTT/ntt-31-3-16/ntt-31-3-16/tenants.py | 145 ++++++ NTT/ntt-31-3-16/ntt-31-3-16/tenants.pyc | Bin 0 -> 4098 bytes NTT/ntt-31-3-16/ntt-31-3-16/user.txt | 7 + NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.py | 179 ++++++++ NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.pyc | Bin 0 -> 5562 bytes 30 files changed, 2024 insertions(+) create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.idea/misc.xml create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.idea/modules.xml create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.idea/ntt-29-2-16-test.iml create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.idea/workspace.xml create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swp create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/config.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/config.pyc create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/credentials.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/credentials.pyc create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/destroy_deploy.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/discover_deploy.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/discovery.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/floating_ips.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/floating_ips.pyc create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/networks.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/networks.pyc create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/openstack_clean_script.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/t1.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/t2.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/tenant.txt create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/tenants.py create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/tenants.pyc create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/user.txt create mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.py create mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.pyc diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..f7c19f04cdca15189bccb5e701522df783d8ea01 GIT binary patch literal 16384 zcmeI3OK2oT7{^Op->!;_7hlxQf}LH*%&v;UN?>P`5eJh=n9N3(Y-oGBYm#Prx`*zX zNhTs5M8u1F6nx-C(1SN02(F?YJa|#?riWD#R0L5EzVPv{NB4AQC&?O65vt+0lm6=c z|Ej91s(YIU7pgP#j`7;m&Se)85=Rji=IySi!@`6+?#Y`SKiVR4 zX(ej2QWP>bh`L^>)@YPYG8Xd{zvTIe8}(Rhd#n>g{qatJi+oIwQNSp$69smYTW>jZ zP^8>f*h}|Zb!;b@m^4NKqkvJsC}0#Y3K#{90!9I&!2eVM-q}SSLfy~R^$+y#IYYmH z>Z_sc?V<2Lba+kM-x&)3U58()?N{gm(sH!f{1^p{0!9I&fKk9GU=%P47zK<1MggOM zQNSqh4=CVxgjmS;N3jvd`~P(R|IHPId=0(?PlI*P11Et4?gV?lrbqN3wDFIFDB$A@FbW7w}Y#|#}^Uu1Xu;f!8PDJeBban_zau|r$8SZ0l!^9$QR&! z@HjXIt^=pfC*(!I!7^w82Fl=0@Y^mzUIWj8hrw}hJ^21SLOuX*fm7g3@H%)6yb4|c zFM{X693bEW9LT%}-UTm%r@$j10rTJpxB*-WgztVh`-2p!ua4IoPZ+m(?6_=fKgsN| zA97ka5f(O@?8J2fW^2+wyc>sfUD||w6RqJ^(>csH?@mIhuP z5ered6S~X}p@X$lB>6b&*kAX$hq#tffUuJ7zd-D~i$n1W=VOD@EK| zOR7JJSkljkCi{lCQ9-!t zN2ghfQyGUQQ8#uWzKYp%f-Xx`CWt==1$n>WGy^uaXytOViqxuVO=R}MFt4T5N=nCc z#E7x8hWTMD8p~QC9VV32j_S*Tg<){P|8f6JNw;*{W@)-jcxI#vRe77FOWoNEoY3~Y zVfUX^TG#jD9VHy@H2pzm+oZZ9dYkA&GPdYznf$5~;fu17od^ZxJCVJkPBieN`pa5? zhO{~*yNh(kCcUS>UGJ-@X(~&e-cMGi>Q*t=_fqd|-SyVUa8;>NY|+wl?T8+?c7`uD zYCn`i-jy3XlAFzyPu4c^2@1^nWM>0=Z98e}^5K#xI~dktrd0!4*H~(rt33v^knxP+ zoa?lHHXXVVo^coxu;?sumegz7w6vefoaL06bz&JfvKLRNiLgI0at51}B^NE-(DXLz zLOOV1hN>X_Y#3e@4CKIbFo^;mGc)tB06@FcBq#qAv)o8kgi%~Mb=ERoG;*hrn^TOE<_Mv$~Xp@_Iv(lA5|Ls5@jBMfG z+?=UZ(o<$uXFa?L30arNSpQ8>H}KKA@k#kJcHjV(e;y22(k1&z?gmkp@$Ai6utFxS zIBH`?5sM5i78%rUccPf**BvTOubr(SuwGJ;Qs>$Tj6z$F0u^81WO3E1bYmRV$l)l; zTBKR-%0Prddfi?t&s6NWdgZR_eZ{;jyGa-JMY=F!PtG2zHDvPgeBHi#cD_-h;;&=# zmAd+Ct~@_~?`(alNU<+CI$g0v@Is|ty{kGYHwc4_MP5a{_O0C4sMKraX}eZwAo)E- zJvX1R7b()I%G~tq@tF!X9aR)_LW!go_gYTfxTEFyie0TuRnRt_v1-B~*}%oAD~4Q~ z`apIP-9vh}*ay?-%0zU*QIh_J36_Wz{S@o50H4mshv{kaJfIbgs8H-TRf=NIrZ_z8%;zex8XFqculC}0#Y3K#{90!9I&fKk9G zU=%P47zO@S1;i1CdQnF364I70LTp>SeY9*_1lYEfy+V`cy!u38>*GzF9EqG|0`Yn& zcg^Detvh(jCy!BS)WXTIdf$|&i0WWe6_veJ&6k{>!u*{BJR&Nf^UT!+$2WtwVMVIX Re#NmO4mxr#6LgXS`3q{qR4@Pl literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..41fba5294c556162c09462ae279f58972e8fda2c GIT binary patch literal 16384 zcmeHNU2G#)6~0|4P++?iKN9WJkTe>5*GX*0iS2-q(p@hNyX!28H!L{OXzaP(4C~B9 z_Bd4tD-Z~HT;PEp!9#fgs)7IsP*o}??o=WPv+@=T9>BL*QG$ z!@#G3o4`Xr8+ZqBFYv+}8T$?JV;}%b;F&i-4wwS|^Lp3^ehWMXdqrEbvL-!+-@`0PX{By_PW!lz^9B!`PF+7lDrg z72sarZNN)+GWIm^S)dKf0snqAV}Amk10DrF2Ydq913mz}7svspfLqu&xeB}+_%$|J zo&~-Sd=K~x@FBnf>cBgJEbvFf;wQl40LA6ofIbX;u*Ahq-}M5+rGLZlI^1%2V7omb z5y~BSIAibN-!`0#{?7|*ciZwk%j3aAe*bzV;GXRTEz`5Nxw)CmhGrn_zc-a>r@U40vD#eY?XmSwoZ_@Tu0?WDf5dp-=j`a!1(9F0!y@ zLmeG|h~}TE8HLejWJ4(G7WeF-*V#IdZ}}R#V)C)ElBD5w(LHK6Qp_G?hSYr1Zg+uteR3wM$|ZCnA5x4 z(L{!-%(d`g)Ssk1vPp;RcM~1g>2Cza)L>#N zGZ?m^)-tIKxxs{-`cdLi#B!aahRCIH^4g7q3Q_qX6{!wMsVu8XCc#+eHoOgQBI-sI zLg_EXT3!vJ3{wSQY8do=Z-$7oRH5#*t`jDoXkyD$0;Y^Kkuwr)#aMXKZIwft?#n10 zWZ7NPf*1p(Y0*z-uJIr*a!k`S-bbx%BF64_x*|m9zNR4(#T zC1Ka$+y0Tps&j=dw9C9wD$P4~r99tmR}1rYvFha8?QX)D?QFZAwiZj=n$coJ>7>pI zOFqPuQ)Nv|SieR_WL39NqT>BoGn)0rQln`#mM+zgN}iaQo{No4erfd3euUXeGuyBe zs5!Pyar6=zinNZpRj(?%d^$asd%?_Eamt)N-NB>~1ukZUSr)s2DBg-ztR$0V-M+uA z2eX0UZtwX0z(|f+QU-HLJ@ty@l>f;Ib#B}&TN;sV2=(ELjj>Ud=Aya3ED*7bF=}02 zt)E}Mnu`Y`yg9pCUurI|G;+rJCF|_Ul}1yjFRiUw53Z~=a|T^qS*x$gtIJDkYwufG zJ(n{O*at4wEqc6OUtK=Gd{)^}H49rgV?&s$Uv1V`8%r0hM!gC33pqIpv<4l!NA17_ zsN;KG_gc<4SHFC5<^7lH$eLwTvmptPPc_e~iU*d~>eh1OTpevwhGi2XwJ4-o_dqC_ zj-;5tsFc_(T6rxmi{7(QM2R;S_z!~5k z;O|)L{|NX3@Oj`SunoKmcq?!cco9DT1E4*D=YgkzUjn}Xo&tUj{0w*!_$lyp;A;T2 z^-Dl{qzt4Cqzt4Cqzt4Cqzt^$7{DsV*tT5{GjxU>7)$ICTb4mvFQ#SDBg-;rCqNt| zuGa_AngWIR!hq$5w4^rA|#H&W=QE4EvdtGF&h!3J&FIR3rPnA1JY}_DE8Gum*|<`FJt0r+E^94 z5JtlfjPv*o;m}sX)If#8G^W&*-pq?w=&@$e{& zS5q0J>XUb^3A&vK!=p9B1PKEOyYLBoRxR|7UKWd8D`V+BA?qSCWqOYByvex6{6s1yf|5}y}^zP*7=MW_j ejelXsqED?DfYisn_ZNQQM literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.idea/misc.xml b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/misc.xml new file mode 100644 index 0000000..7c4b884 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.idea/modules.xml b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/modules.xml new file mode 100644 index 0000000..64e6bd4 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.idea/ntt-29-2-16-test.iml b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/ntt-29-2-16-test.iml new file mode 100644 index 0000000..6f63a63 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/ntt-29-2-16-test.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.idea/workspace.xml b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/workspace.xml new file mode 100644 index 0000000..5570e2d --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/.idea/workspace.xml @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1459230370172 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..a8931b66ede7d398739a9271fdf2462cc021a947 GIT binary patch literal 16384 zcmeHNON<;x8LklCd4Ozj$N{N5(Wqzbd8|WBq)~=I)^@T1j~(yWkgQj&-tL;2lKVw> z&8)|k73CBuc zzufY8a)5AWoJ6dX#LN$qNzmyJ2A#`{Wn#=bF%x@9b~$gSvjY^^BFlhf;8QSg5BbIe z#}V0t++RCF4?g zuK&{MX`Sycm4B?uKdbZKT`Jd)_F@^Z3|Iy%1C{~HfMvikU>UFsSOzQumI2Ga|9}B6 zAmk9*{kc5wBE61~3DD01SXl;1S?H;BWU5@>75V4*~ZAAKgR9KY;gu zw}BUd7l0oDPXLbsf4>{`fE&P@!0W&s@CeWZz6QK^7a_j_egfP85?~GZ>z4`n5O@=K z7I+G{4|xAeg!~ftG4LEP21Y;&puk68M4P~6;27}X7YKO`=mTE|{`h%9egoV9UIBgx zq`(p2{m&8dD)1a2fHrV9@K3z#_%-kj@EY(W@G!6jd~hcrF9Reh2&(kYn;QV1J@WX~ttgYnS30dZ-hN16S~f(H;#v!Q^c_PWBq| z<|;nCXgC+PI_Er}54rEGtTpm=Ud7QgY@3p-YUw#CQ(3`~m z*hQrzc6E)0V6hjAZAV=Tba zFk{|Ew}*0|8^cJfRfcPyt}V%ZsjZ@`9F>E$DYq*u!H=e*RXh646J#;7QIpSo^>q&{ zrW+aa1W#hsm90q>dD)D1Yv@UptI{^dY3Bwuf^}bbGkbuC$y&m02qBLZZPSeYI7x%ar(^FRj%VIC2kHJOuycsRE=&s3u zm&Ob^#KM{KNtvO_wHFjx(F%f|Wkb(rbQi2L7HdDqC%YhU+mXTG?3DaTMK?_*I(gu9 z=~BcZZ|8ccCuS3oC2`ve0(WkMnXfN7iZ5YmPDovj)@}!-}$Us**OrU>7bY zCOJm!v=`=#R83ViQFQJ4JfB_hS&DEdF7Tt0Em?Cx;UJqV>MQtMqEok_V#%1gio>}v z>c$P2@OZebyP7*Y+v_`XE2S+9a_EF1(3cUwTvgoIO@diZ{WToE%ZjWLn0jc7b*G0gWkY@ilYOnF3R=~fpJU>_a$9aM zojBmW`0qG=znqJe#|3f~F>S7%Kg^W^zw{uyF%CkKoUxF3Idid-ajWI32KMgQ zYzr^OzRJ{Cb$UQkEQ_!o!a})ltWawFBp&jSQP4j%`2N}R-&NcCa)aNbr@wdhJA=*s zWA5fTcjNpi+@I}h1tnib%MwpYPBX6Qo<88N8*!CIG=WKO?$ThFNIyNvrYyvV@mZIS zlGF>oZ9aSFvETNSsBjzjv`RPg=r;7^e#TR|W$x0#ZPl}M+k-rI(MP34_aEs@@~pGV z;|`0ba{R|hOyv2$kF)$$K%W0`bS=^!@cet=d0i&o0oY_2unbrRECZGS%YbFTGGH07 z3|Iy%1C{~H!0j?1PyQJblMMfbRsX3_|56nHEuB{{Qv!;&DfF~{+d?Q-W64VZ literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp new file mode 100755 index 0000000000000000000000000000000000000000..2053542418481ece30ee4a407c4a537c523f1ee4 GIT binary patch literal 12288 zcmeI&Jx{_w7zgk}7adTeaj!Zs(JK{&kT{S?qKUkOwm3EgN@#ew1`ZNj`~)tpE{=W; zcV9+y^&|KRe2Qoy8f78T_`l?z%RRl^U4L8CD{H00tddaUjM@rg3l~qN@O&XO95B`q zLI&lZn(*CrS2~qO)bYeOlX+dVTrS#fr73z6YlpD$=<&1JdL4yDUAOHafKmY;|fB*y_0D=E4kT>kKWggg8@krTI zB6YfKK21sbDb8aFU5)J~Rb7p1sU1zzcwZlBep+F2`WKtbX3Fcirr7TN1yqek0)j%? zFpl%Z{XoU3w!HSJYG!ijoN4FM+04fWmXRq=R2i#vL`!M7gRUH1xcA()RQtNEDPGGL L9jR2BL5aNp-vp8i literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo b/NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo new file mode 100644 index 0000000000000000000000000000000000000000..3d84a7a4dc93caaedf94c6505a90eafb36b4ca5c GIT binary patch literal 20480 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 H+F1P;`)|>@ literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/networks.py b/NTT/ntt-31-3-16/ntt-31-3-16/networks.py new file mode 100755 index 0000000..befd00e --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/networks.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +""" +Description: This script is to create network, subnets, router with \ + external gateway mapping. +Developer: gopal@onecloudinc.com +""" +import pdb +import os +from neutronclient.v2_0 import client +from credentials import get_credentials +from config import NETWORK_COUNT, VM_COUNT, FLOATING_IP_CREATION +from vm_instances import launch_vm_on_network, terminate_vm_on_network +from floating_ips import release_all_floating_ips +from datetime import datetime, timedelta +from pytz import timezone + +credentials = get_credentials() +neutron = client.Client(**credentials) +fmt = "%Y-%m-%d %H:%M:%S %Z%z" + + +def create_network(tenant, router, network_index, network_cidr): + """ + This method is used to create network, subnets, interfaces on router with \ + external gateway mapping for the given network name and CIDR. + """ + + try: + prefix = tenant['tenant_name'] + network_name = prefix + '-net-' + network_index + print "\n" + print "=" * 50 + print " Initiated Network Creation for " + network_name + print "=" * 50 + print "\n" + + body_sample = {'network': {'name': network_name, + 'tenant_id': tenant['tenant_id']}} + start_time = datetime.now(timezone('US/Pacific')) + try: + net = neutron.create_network(body=body_sample) + net_dict = net['network'] + network_id = net_dict['id'] + network_vlan = net_dict['provider:segmentation_id'] + print(' - Network %s created' % net_dict['name']) + net_status = True + except Exception: + net_dict = {} + net_status = False + + subnet_name = prefix + "-subnet-" + network_index + try: + tenant_id = tenant['tenant_id'] + body_create_subnet = {'subnets': [{'name': subnet_name, + 'cidr': network_cidr, + 'ip_version': 4, + 'network_id': network_id, + 'tenant_id': tenant_id}]} + subnet_detail = neutron.create_subnet(body=body_create_subnet) + subnet = subnet_detail['subnets'][0] + print(' - Created subnet %s' % subnet['name']) + net_status = True + except Exception: + subnet = {} + net_status = False + + neutron.add_interface_router(router['id'], {'subnet_id': subnet['id'], + 'tenant_id': tenant['tenant_id']}) + print (' - Created interface between %s' % subnet['name']) + finally: + print "\n" + msg = "<== Completed Network Creation with External Gateway " + msg += "Successfully ==>" + print msg + end_time = datetime.now(timezone('US/Pacific')) + print "\n" + print "-"*65 + print (" Network %s Creation Time Summary :" % network_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + print "\n" + print "=" * 50 + print " Initiated VM Deployment " + network_name + print "=" * 50 + print "\n" + + ins_data = [] + for i in range(1, VM_COUNT + 1): + vm_name = network_name + '-vm-' + str(i) + start_time = datetime.now(timezone('US/Pacific')) + ins_data.append(launch_vm_on_network(tenant['tenant_name'], + vm_name, network_id)) + end_time = datetime.now(timezone('US/Pacific')) + + print "\n" + msg = "<== Completed VM Launch on Network with Floating IP Allocation " + msg += "Successfully ==>" + print msg + print "\n" + print "-"*65 + print (" Instance %s Creation Time Summary :" % vm_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + result = {'network_data': {'tenant_name': tenant['tenant_name'], + 'network_name': network_name, + 'network_cidr': network_cidr, + 'subnet_name': subnet_name, + 'network_id': network_id, + 'network_vlan_id': network_vlan, + 'status': net_status}, + 'instance_data': ins_data} + return result + + +def delete_vm(tenant_data,network_data): + """ + This method is used to delete vms, network, subnets, interfaces on router \ + with external gateway mapping for the given network name and CIDR. + """ + pdb.set_trace() + #prefix = tenant_name + network_list = [] + router_list = [] + count=1 + #router_list.append(prefix + '-router') + #for i in range(1, NETWORK_COUNT + 1): + #network_list.append(prefix + '-net-' + str(i)) + for tenant in tenant_data: + for network in network_data: + vm_name=tenant['name'] + '-vm-' + str(count) + if ((network['network_list']['tenant_name'] == tenant['name']) and (network['network_list']['shared'] == False)): + + + terminate_vm_on_network(tenant['name'], vm_name,network['network_list']['network_id']) + count += 1 + + release_all_floating_ips() +def delete_networks(tenant_data,network_data): + pdb.set_trace() + networks=None + for tenant in tenant_data: + networks=neutron.list_networks(tenant_id=tenant['id'])['networks'] + routers=neutron.list_routers(tenant_id=tenant['id'])['routers'] + subnets=neutron.list_subnets(tenant_id=tenant['id'])['subnets'] + + + for router in routers: + ports=neutron.list_ports(tenant_id=tenant['id'])['ports'] + for port in ports: + #for subnet in subnets: + if (port['device_id'] == router['id'] and port['device_owner'] == 'network:router_interface'): + neutron.remove_interface_router(router['id'],{'subnet_id':port['fixed_ips'][0]['subnet_id']}) + neutron.remove_gateway_router(router['id']) + neutron.delete_network(port['network_id']) + neutron.delete_router(router['id']) + #neutron.delete_network(network['id']) + + #for network in networks: + #neutron.delete_network(network['id']) + + #for subnet in subnets: + #for network in networks: + + + + + + #if FLOATING_IP_CREATION: + #release_all_floating_ips() + #print "\n" + #print("<== Released all Floating IPs Successfully ==>") + #return True diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/networks.pyc b/NTT/ntt-31-3-16/ntt-31-3-16/networks.pyc new file mode 100755 index 0000000000000000000000000000000000000000..12bd62b7205f5b30f781123d59703068346b67ae GIT binary patch literal 5094 zcmbtYTW=f36+TOflt_uXOEi5+H;EauiD?-Dsscik#+7VYXe=8m#YzbXi#2y8t-Tj| zXGu#g*%zm8Ezp-fxIdsjpg{Z3pVHSp^|?Qw{mz*sEjmtsq@s2>GiP?@T)uM|=KoVE zf3p1V$8E~~a`^rNkNOuHm#Br-AU8*WK`nH2KS!;c^z#(tDV(6z1Q|@5prAluky=GP zE>JK@;S{x|C@fK{L}8g)WlbwmFiqhMwPq-+P^+S6Cn=bvaE@AYdOStJJcaYrLc2h% z1wC7$V3EQlYAuoB73mciEs!@sPnXFn&>t{dAs0ujk~>Y`U|1!0Mmm?stw^WFQtdZp zSy;S45DjdcGFbdC+Mr2W)gQ(FEL;E z>8UyP=bd3basu-NFTQZj&Cuy|{OIHsj_P?q-0_kP^Ca##!54AlwS&0p`ceBgXMq&QmX;2DOSo{nyQU z*sQx|{r*P%!A5=Gtheef+Y=!1X{?bgJnDCl`{mz^zJRngn4tayTeaH9GboUor=9!2 zq+6h6bc)n3Q1#*r(|v>d98=s$TIZdnsD@|VEz$a*NGZ`%gHph~Os@?7A57Bu4yAc| zik+va&+sz_Q`Da#yi*&Ls9$2V)dpqhRnVIzcUA_IR9oG-pB88^Lx<5dnt*wql_~ir z8HV8#;q7#iiIG8Hvov#=G!;5eDPwOiOU!kF`W4M}p4@qGyg=?EWGIungs)i^W&H$R zxeQ6>gk!J>j^~8qdFszIt>&(PL%h36eYD@jVIK?%hYJ@tWGz5moB?@Rjo1J^w>qZE zS2=j?r3rpyG?g#8!XsZxp`^cfeis0o#s;02&3LjM+ ztiBs6{bhOz-9yv{g6=Z8H-W1v^{WV@O?JmWp(%3+l;{axKaE|E zo?Yd+-y1^x2odJkX?x0yqi+S&?~0@5ah#axsb`+}JuezYW;1d^&vYW!+}ho?ZV5kt z0|&9liBg-%s(^755w58?#FkTTH~ml1st?dWgx$zTXidTRo{sqD7AF8C2YoEZBHl{J zGrhI%!gn#PUr=TAzuI4WQgQ+93pZsPOyDIe)~?4Fk>a4N%$8*D1fWoZkc2C{Ojl~Y7E z$f~JkU5QwF#O%EP_QH|H%qNi6gZk@gPyGzbKHJ}em4xA{yT56o?^6U66iClm1(T(QoZy|Af%fzG(#SpKD? zQ%3XBvo^@5ydYoMq7sXZkhmZTuh-X zfl){01FPsD>1sc@d)D@(z(N8Y+C96>ir5A7wXJ>mzu2$T4>UAVl(Rn?eoS@lD=w6*T7%UEQw>e59ta>Teon8D1J zu9rG~pe-i_s0bXY6FC>sYG&9>u$~xB+{hO@p|TS&u;CL=b%V5l9!VoEwssna-rBGl zUE4c2SbOGqNqXw9Wg1eqI_DOL1CAZ)FZ_BjZ)G3JbgT!B|&x0N?LV%-wvhx-?e%f>S3^LV#5T0f#=^Rcc9EmMC=U;5H-fve)1Vfpy1yqVo{kDNRrwSRaFAUFU`u zS)6SfY|x7do`aQjjmaF9g`yqZ<})Q;wBv4+S~qzO$3<%sjW~fcKfn`&J*{Y5jn1)+ zkr7s0{iv9=;9C&^liM_(WV5^fD=bF@ZZ0 zR^yJu6VG20{ttPfT&zT7o=@NdRXT)*^o@N_;-$qYX&7+%R<0z%Hk@;`Xw5v z$o3FIEt5y=0gSt0Le!~NW->m76`9a6UP*qC3C%dyf{7Q#Jup5jl!qyiWz1;VuM9&9 zCzK4CnOMS0Hl@#&Kw>czwZrUiPu$`@_jq%w$;~br5sW$dah}4CHqMXwBc{|7RGKj@IL30q?j!lGx*HobJbWyizin? LHZA5$?NarBSBZOx literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/openstack_clean_script.py b/NTT/ntt-31-3-16/ntt-31-3-16/openstack_clean_script.py new file mode 100755 index 0000000..bb04cd1 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/openstack_clean_script.py @@ -0,0 +1,158 @@ +import logging +import pprint +from novaclient import client as novclient +from neutronclient.v2_0 import client as nclient +import time +import pdb +import MySQLdb +from keystoneclient.v2_0 import client as kclient +def main(): + net_list=['NET-A','NET-B','NET-C'] + ext_net_list=['EXT-NET-A','EXT-NET-B'] + ext_subnet_list=[] + flavor_list={} + + router_list=['Router-A','Router-B'] + subnet_list={'subnets':[{'name':'Subnet-A','network_id':'','ip_version':4,'cidr':'1.1.1.0/24'},{'name':'Subnet-B','network_id':'','ip_version':4,'cidr':'2.2.2.0/24'}]} + count = 0 + instance_detail={} + networks={} + logging.basicConfig(level=logging.INFO) + logger=logging.getLogger(__name__) + logger.info("Keystone authentication started....") + time.sleep(5) + logger.info("Wait for 5 seconds...") + logger.info("done") + neutr=nclient.Client(username='admin',password='admin',tenant_name='admin',auth_url='http://192.168.1.12:5000/v2.0/') + novactr=novclient.Client('2',username='admin',api_key='admin',project_id='admin',auth_url='http://192.168.1.12:5000/v2.0/') + logger.info("Authentication success...") + #logger.info("getting input from user....") + #network_count=int(raw_input("Enter the no of network to created >>\t")) + #ext_network_count=int(raw_input("Enter the no of External network to be created >> \t")) + #instance_detail['name']=raw_input("Please provide name for instance") + #flavor_id=int(raw_input("Provide the flavor for the instance")) + #netw=neutr.list_networks() + #print netw + #ss=db_connection(flavor_list,novactr) + #us=ss.get(flavor_id) + #if us: + #logger.info("You choose %s flavor"%(us)) + #else: + #logger.info("The flavor u choose is doesn't exists..") + #exit + #create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id) + delete_network(neutr,novactr,logger,net_list,subnet_list) + +def create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id): + pdb.set_trace() + logger.info("Start creating external network ") + ext_network=neutr.create_network({'network':{'name':'EXT-NET','admin_state_up':'True','router:external':'True'}}) + ext_id=ext_network['network']['id'] + vm_list=['vm-1','vm-2'] + logger.info("Creating external network subnet...") + ext_subnet=neutr.create_subnet({'subnet':{'name':'EXT_subnet','network_id':ext_id,'ip_version':4,'cidr':'6.6.8.8/24'}}) + time.sleep(2) + logger.info("creating router") + router1=neutr.create_router({'router':{'name':'Router-1','admin_state_up':'True'}}) + router_id=router1['router']['id'] + neutr.add_gateway_router(router_id,{'network_id':ext_id}) + + while count < network_count: + + neut=neutr.create_network({'network':{'name':net_list[count],'admin_state_up':'True'}}) + if neut: + net_id=neut['network']['id'] + logger.info("Network %s sucessfully created.."%(net_list[count])) + time.sleep(4) + logger.info("Start creating subnets") + #nsub=neutr.create_subnet({'subnet':subnet_list['subnets'][count]}) + nsub=neutr.create_subnet({'subnet':{'name':subnet_list['subnets'][count]['name'],'network_id':net_id,'ip_version':subnet_list['subnets'][count]['ip_version'],'cidr':subnet_list['subnets'][count]['cidr']}}) + sub_id=nsub['subnet']['id'] + if nsub: + logger.info("subnet is created for network %s"%(net_list[count])) + time.sleep(4) + logger.info("Adding interface to router") + neutr.add_interface_router(router_id,{'subnet_id':sub_id}) + time.sleep(5) + logger.info("Ready to launch the instances") + pdb.set_trace() + image = novactr.images.find(name="cirros") + print net_id + instance = novactr.servers.create(name=vm_list[count], image=image, flavor=flavor_id, nics=[{'net-id':net_id}]) + logger.info("Instance launched successfully on network %s"%(net_list[count])) + time.sleep(4) + count = count+1 + else: + logger.info("Error in network creation") + time.sleep(3) + logger.info("setup is ready for testing..") + +def db_connection(flavor_list,novactr): + db=MySQLdb.connect(host="localhost",user="root",passwd="dafc1bce95654501",db="nova") + cur=db.cursor() + cur.execute("select id,name from instance_types") + ss=novactr.networks.list() + print ss + return dict(cur.fetchall()) + +def delete_network(neutr,novactr,logger,net_list,subnet_list): + logger.info("Start cleaning the dashboard") + del_net={} + server_delete(novactr,logger) + delete_interface(neutr,logger) + count=0 + +def server_delete(novactr,logger): + #pdb.set_trace() + logger.info("Fetching list of servers") + myserver=novactr.servers.list() + server_len=len(myserver) + for i in range(server_len): + ss=novactr.servers.delete(myserver[i]) + if ss: + logger.info("Instances %s sucessfully deleted"%myserver[i]) + time.sleep(1) +def delete_interface(neutr,logger): + + mynetwork=neutr.list_networks() + net_len=len(mynetwork['networks']) + myrouter=neutr.list_routers() + r_id=myrouter['routers'][0]['id'] + port_delete(neutr,logger,r_id) + my_ports=neutr.list_ports()['ports'] + port_gateway=[] + s=neutr.remove_gateway_router(r_id) + if s: + logger.info("gateway router is detached successful...") + myrouter=neutr.list_routers()['routers'] + for r in range(len(myrouter)): + + neutr.delete_router(myrouter[r]['id']) + logger.info("Deleting networks...") + time.sleep(2) + for j in range(net_len): + dd=neutr.delete_network(mynetwork['networks'][j]['id']) + +def port_delete(neutr,logger,r_id): + logger.info("listing port details..") + myports=neutr.list_ports()['ports'] + port_list=[] + port_gateway=[] + for port in myports: + + if (port['device_id'] == r_id and + port['device_owner'] == 'network:router_interface'): + port_list.append(port) + logger.info("Removing router interfaces..") + + for i in range(len(port_list)): + + del_inf=neutr.remove_interface_router(r_id,{'subnet_id':port_list[i]['fixed_ips'][0]['subnet_id']}) + +#def get_id(novactr,logger): + #welcome=novactr.servers.list(413fb5d3-c1bc-4267-80ab-6a27d0cfd04b) + #print welcome + + +if __name__ == '__main__': + main() diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/t1.py b/NTT/ntt-31-3-16/ntt-31-3-16/t1.py new file mode 100755 index 0000000..a93a8ab --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/t1.py @@ -0,0 +1,17 @@ +from keystoneclient.v2_0 import client + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' + +keystone = client.Client(username=OS_USERNAME, password=OS_PASSWORD, auth_url=OS_AUTH_URL) +import pdb +pdb.set_trace() + +tenants = keystone.tenants.list() +for tenant in tenants: + print tenant.__dict__ + + diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/t2.py b/NTT/ntt-31-3-16/ntt-31-3-16/t2.py new file mode 100755 index 0000000..adb670c --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/t2.py @@ -0,0 +1,31 @@ +from neutronclient.v2_0 import client as neutron_client + + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' +OS_TENANT_ID = '2931fbe17e8445da875bb915a29d0bbf' + +def get_credentials(): + d = {} + d['username'] = OS_USERNAME + d['password'] = OS_PASSWORD + d['auth_url'] = OS_AUTH_URL + d['tenant_id'] = OS_TENANT_ID + return d + +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] + + +credentials = get_credentials() +neutron = neutron_client.Client(**credentials) +netw = neutron.list_networks() +print netw diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/tenant.txt b/NTT/ntt-31-3-16/ntt-31-3-16/tenant.txt new file mode 100755 index 0000000..2ecda20 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/tenant.txt @@ -0,0 +1,7 @@ +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/tenants.py b/NTT/ntt-31-3-16/ntt-31-3-16/tenants.py new file mode 100755 index 0000000..ed40861 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/tenants.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python +""" +Description: This script prepares new tenant with the following properties: +1. Creates new tenant. +2. Creates new user and this user is added _member_ to tenant. \ +Password is second argument of script +3. Admin user will be added to tenant with role admin +Developer: gopal@onecloudinc.com +""" + +import os +import pdb +from keystoneclient.v2_0 import client as ksclient +from credentials import get_credentials +from config import USER_COUNT, USER_PASSWORD + +credentials = get_credentials() +keystone = ksclient.Client(**credentials) +assign_admin = True + + +def create_tenant(tenant_name): + """ + This method is used to create tenant and create number of users per tenant + """ + + print "\n" + print "=" * 50 + print " Initiated Tenant Creation for " + tenant_name + print "=" * 50 + print "\n" + + try: + try: + new_tenant = keystone.tenants.create(tenant_name=tenant_name, + description="Scale tenant \ + created", + enabled=True) + print(' - Tenant %s created' % tenant_name) + except Exception: + new_tenant = keystone.tenants.find(name=tenant_name) + tenant_id = new_tenant.id + tenant_status = True + user_data = [] + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + user_data.append(create_user(user_name, tenant_id)) + except Exception: + tenant_status = False + + print "\n" + msg = ('<== Completed Tenant Creation and Users per Tenant ' + 'with _member_ role ') + msg += 'Successfully ==>' + print msg + print "\n" + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def discover_tenant(): + """ + This method is used to discover tenant and discover number of users per tenant + """ + global tenant_id,tenant_status + try: + pdb.set_trace() + new_tenant = keystone.tenants.list() + tenant_id = new_tenant.id + tenant_status = True + print "\n" + print(' - Tenant %s Discovered' % tenant_name) + print(' - Tenant_ID %s Discovered' % tenant_id) + except Exception: + pass + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def create_user(user_name, tenant_id): + """ + This method is to create users per Tenant + """ + + try: + new_user = keystone.users.create(name=user_name, + password=USER_PASSWORD, + tenant_id=tenant_id) + print(' - Created User %s' % user_name) + except Exception: + new_user = keystone.users.find(name=user_name) + member_role = keystone.roles.find(name='_member_') + try: + keystone.roles.add_user_role(new_user, member_role, tenant_id) + except Exception: + pass + if assign_admin: + admin_user = keystone.users.find(name='admin') + admin_role = keystone.roles.find(name='admin') + try: + keystone.roles.add_user_role(admin_user, admin_role, tenant_id) + except Exception: + pass + user_data = {'name': new_user.name, + 'id': new_user.id} + return user_data + + +def delete_tenant(tenant_name): + """ + This method is used to delete tenant and users + """ + + try: + tenant = keystone.tenants.find(name=tenant_name) + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + delete_user(user_name, tenant.id) + tenant.delete() + print(' - Deleted Tenant %s ' % tenant_name) + except Exception: + pass + return True + + +def delete_user(user_name, tenant_id): + """ + This method is to delete users per Tenant + """ + try: + user = keystone.users.find(name=user_name) + user.delete() + except Exception: + print(" - User Not Found: %s" % user_name) + pass + print(' - Deleted User %s' % user_name) + return True diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/tenants.pyc b/NTT/ntt-31-3-16/ntt-31-3-16/tenants.pyc new file mode 100755 index 0000000000000000000000000000000000000000..a84e29f1a78e407cf6e1422237a759e0dbefc3e0 GIT binary patch literal 4098 zcmbVP-EJGl6+X-5kGPinBmby&n`E290gJ{|;uLBiL~dLuj(rg)Sjmwgpdjeo5w-Mk zm*y-j6A*i&pg=GB00nwe^fCGXeUH9EFNz`;&G(&Ml9p=(aYXHKW_ISxIdi`AokREE zE8ai<`me7;DgP??{uGb>JDN!30IefYMG{92&?)*AIjCsgmBf`nRSs(6@Lg4sx(pg} z&?v?=NtR^Ll!K-WJUQ^hF%3C|*t(dS^v{W@%bzh^7PBG;=OwDkHyB=!sG*&U5-n-x zl0;4ItV-l*=Q6e0ZJndCz9Zu87#oh_VIF7croVR-TfZ3l!;u+wN5=Z8IrejtcGKKH zj`JfwKQjJdmL%D6oc6FR8=6rb8@uU!*!H(arkkJH)b?(logP~=^1EpSK{!oE`0hrL ziTuvM44#-#$Ir9!%(nkk*V^N36#3N6gc){rN4@dDK%wlgRM-2c?ca?CaassGj+4ZH zVoIrVVTA#sEa4k0hV{=)LIXDaUN-C|pJu5ElWZKtY1j_4ffxS|e-B%@Daq?-!X(DI z#rOioJ(G9Bk%=%FcN5zp5^@jCqutMf&i0p&9`5BUv*A~FcX#){40b|_YvO6(*~Vi( z#te|~`F(gNa^(s-RXGt^dwGWMC;yO1TXK=UBYmu`aTWXz&%@`r3z)c5K&r|4YoFiW zPv4VjUX`bwjQ${wpA%idpLPn)^eOx_+3<2q)V9tO{_?0v1n1~~i2u14y4CN{nXXz_1XS)^O=1D(CgL59FFj~hObdK?U_I$(Z$f_BNfyg4h_Nu9Rx>M+`novY1>cSXaX@4=NPUrCh+j|)dT-(C5Xk%}pw|?mF@FQPr1D2tSO7qj%Uy+cv8n$y%zt>QYavs$TRw1UrdeAn^0?0C)<=WWb* zm6}tpcuvi!p>1G3qy%0TEmtynj?QGeB$-nY2bbG-rC((ZnhJxlUz2W~)X-g;^A>Ce z;efqx+sZtb5bvHc&)1B1MmjpS7KzRl!^%Y+1a<92RlB3Xt6*+qNoT+^_oq=nj*vKi6X!vE99eY zXab@wSVp5rO=6n|q^n}{dG>z7hIbz@pJ)OJ);N5NLp*Pc6v~<1M+xD(m{PN(=ECO} z6csoZncPs+VIKTn5%4^ZaK+hA38o^A{bdFwU}yC0EEg7n>ME!@lk)Op?W}ZY zj0{#vfA;NM`hO@L_=!`2i8T(Aw?8vWl!lt zR|njz#5XL<8-;|uf@uY&W)mbAaxT!POJ_{0oTUYff=ThGNYfX3UO>7Eh)IQ2Kvpiu z5yg*HGC{?q4A>!W=fo&9iF;|MkW2*&@q|P0Q#MM3d_i*LIm&Eh&8A`)54yj2y%_Rs zz_4rKc~eLSSFvXwkA0uJf#FrK+Kl6_g7a<=$C$f{PcdpJwzbq^+MBc6pD>s_o52Ry zodeU67r$fm1Dt8O^J`W^EIBGDNYDfFU6eb3jaD^l04!Ln04V^ATE}^IQ}zL>J_;uA z=1XBg_%@XbznR0=1BR%U{TR*bFoYY{+9fi~$+JR%nOJ?i0Mh^Ea}tQcXh*lsYZTDf z0xil*ii}_t>osErm(eSW6&|W?R2XOuEi@@0MfPg(YKxr7YNE`SH#kYa{1{&=Hj8sg z@&Z+eRyB0|)iRk~0gWknIU#9_NT0j-3k)W|c%6%jfM%6UPPs9U`rpzi@H2c27Sozk zi%tyS?_D+X`$E0+kh(=H$X7$%&OP#o0sSz`{d?IsjW!Y6i=dx*OV`}AE#7I7Lf&JK zK^&~JA;kyk01fd)aMB;t;>X;4(8lIJ;?WvTs=Vy;xa1}xtLd~zOdi6Quq4V7P5t-Uv>u9mR-lR*}Z6LW_wXNlo@W!YJFF5+{o(nQj%yUkxU KuQlIlu6_q1cy0>- literal 0 HcmV?d00001 diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/user.txt b/NTT/ntt-31-3-16/ntt-31-3-16/user.txt new file mode 100755 index 0000000..9e5d3d9 --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/user.txt @@ -0,0 +1,7 @@ +#cloud-config +chpasswd: + list: | + root:ubuntu + ubuntu:ubuntu + expire: False +ssh_pwauth: True diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.py b/NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.py new file mode 100755 index 0000000..792d9ca --- /dev/null +++ b/NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python +""" +Description: This script is to launching VMs on the network. +Developer: gopal@onecloudinc.com +""" + +import os +import time +import pdb +import novaclient.v1_1.client as nvclient +from novaclient.base import * +from novaclient.exceptions import NotFound +from config import FLOATING_IP_CREATION, IMAGE_NAME, FLAVOUR_NAME,OS_USERNAME, OS_TENANT_NAME, OS_PASSWORD, OS_AUTH_URL +from credentials import get_nova_credentials, get_tenant_nova_credentials,get_credentials +from floating_ips import add_floating_ip_for_vm +import glanceclient.v2.client as glance_client +import keystoneclient.v2_0.client as ksclient +keystone = ksclient.Client(auth_url="http://172.168.2.40:35357/v2.0", + username="admin", + password="admin", + tenant_name="admin") +token = keystone.auth_ref['token']['id'] + +credentials = get_nova_credentials() +nova = nvclient.Client(**credentials) +#glance=glance_client.Client(username=OS_USERNAME,password=OS_PASSWORD,tenant_name=OS_TENANT_NAME,auth_url=OS_AUTH_URL) +glance=glance_client.Client(endpoint="http://172.168.2.40:9292", token=token) + + +if not nova.keypairs.findall(name="admin"): + with open(os.path.expanduser('~/.ssh/id_rsa.pub')) as fpubkey: + nova.keypairs.create(name="admin", public_key=fpubkey.read()) + +def upload_image_glance(): + #pdb.set_trace() + image_list=glance.images.list() + image_file="/home/onecloud/NTT/keerthi/ubuntu.img" + image=glance.images.create(disk_format="qcow2",container_format="bare",name="ubuntu") + print("image status %s"%(image.status)) + ss=glance.images.upload(image.id,open('/home/onecloud/NTT/keerthi/ubuntu.img','rb')) + print("Current Image status <%s>"%(image.status)) + + #with open(image_file) as img: + #image=glance.images.create(name="ubuntu",disk_format="raw",container_format="bare",data=img) + + #print("Current Image status %s"%(image.status)) + + +def launch_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to launch VM on the given network & VM Name. + """ + #pdb.set_trace() + instance=None + tenant_credentials = get_tenant_nova_credentials(tenant_name) + + nova = nvclient.Client(**tenant_credentials) + nova.quotas.update(tenant_name, instances=-1, cores=-1, ram=-1, fixed_ips=-1, floating_ips=-1) + with open('user.txt') as userdata: + user_data = userdata.read() + try: + image_list=nova.images.find(name="ubuntu") + except NotFound: + upload_image_glance() + + #for img in image: + #if img.name == 'ubuntu': + #print "image found" + try: + + flavor = nova.flavors.find(name='traffic') + except: + flavor = nova.flavors.create(name="traffic",ram="2048",vcpus="1",disk="10") + + + try: + + instance = nova.servers.create(name=vm_name, image=image_list, + flavor=flavor, + key_name="admin", + availability_zone="compute:openstack-aio", + nics=[{'net-id': network_id}],userdata=user_data) + except Exception: + pass + + # Poll at 15 second intervals, until the status is no longer 'BUILD' + print " * Instance <%s> created on network <%s>: "%(vm_name,str(network_id)) + status = instance.status + while status == 'BUILD': + time.sleep(15) + # Retrieve the instance again so the status field updates + instance = nova.servers.get(instance.id) + status = instance.status + + print " - Current status: %s" % status + if FLOATING_IP_CREATION: + add_floating_ip_for_vm(tenant_name, instance) + + ins_data = {'instance_name': vm_name, 'status': status} + return ins_data + +#def endpoint_discovery(tenant_data,network_data): + +# tenant_credentials = get_tenant_nova_credentials(tenant_name) +# nova = nvclient.Client(**tenant_credentials) +# instance_list = nova.servers.list() + + +def vm_endpoint_discovery(tenant_name): + pdb.set_trace() + + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + networks=inst.networks + + + + except Exception: + print(' - Instance Not Found') + + +def discover_vm_on_network(tenant_name): + """ + This method is used to discover instances per tenant + """ + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + inst_find=nova.servers.find(id=instance_id) + print(' - Instance %s Discovered' % inst.name) + print(' - Instance ID %s Discovered' % instance_id) + print(' - Instance %s Status' % inst.status) + status=inst.status + except Exception: + print(' - Instance Not Found') + status = False + + ins_data = {'instance_name': name, + 'status': status } + return ins_data + + +def terminate_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to terminate VM on the given network & VM Name. + """ + pdb.set_trace() + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + nova.quotas.delete(tenant_name) + try: + instance = nova.servers.find(name=vm_name) + nova.servers.delete(instance.id) + print " * Instance terminated on network: " + str(network_id) + except Exception: + print " * Instance Not Found on network: " + str(network_id) + pass + return True diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.pyc b/NTT/ntt-31-3-16/ntt-31-3-16/vm_instances.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d6b4221844d9eb0500ac06a9e23d349880c882d GIT binary patch literal 5562 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 ezx@832Ww41naKErnxb{CR&an3Y literal 0 HcmV?d00001 From 425c13613a84fb949490e24fb9a06f2cc79f1942 Mon Sep 17 00:00:00 2001 From: openstackdev86 Date: Tue, 19 Apr 2016 17:39:16 +0530 Subject: [PATCH 4/6] deleted .swp files --- .../ntt-31-3-16/.discover_deploy.py.swp | Bin 16384 -> 0 bytes NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp | Bin 16384 -> 0 bytes NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp | Bin 16384 -> 0 bytes NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp | Bin 12288 -> 0 bytes .../ntt-31-3-16/.vm_instances.py.swo | Bin 20480 -> 0 bytes .../ntt-31-3-16/.vm_instances.py.swp | Bin 16384 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp delete mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp delete mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp delete mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp delete mode 100644 NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo delete mode 100755 NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swp diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.discover_deploy.py.swp deleted file mode 100755 index f7c19f04cdca15189bccb5e701522df783d8ea01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI3OK2oT7{^Op->!;_7hlxQf}LH*%&v;UN?>P`5eJh=n9N3(Y-oGBYm#Prx`*zX zNhTs5M8u1F6nx-C(1SN02(F?YJa|#?riWD#R0L5EzVPv{NB4AQC&?O65vt+0lm6=c z|Ej91s(YIU7pgP#j`7;m&Se)85=Rji=IySi!@`6+?#Y`SKiVR4 zX(ej2QWP>bh`L^>)@YPYG8Xd{zvTIe8}(Rhd#n>g{qatJi+oIwQNSp$69smYTW>jZ zP^8>f*h}|Zb!;b@m^4NKqkvJsC}0#Y3K#{90!9I&!2eVM-q}SSLfy~R^$+y#IYYmH z>Z_sc?V<2Lba+kM-x&)3U58()?N{gm(sH!f{1^p{0!9I&fKk9GU=%P47zK<1MggOM zQNSqh4=CVxgjmS;N3jvd`~P(R|IHPId=0(?PlI*P11Et4?gV?lrbqN3wDFIFDB$A@FbW7w}Y#|#}^Uu1Xu;f!8PDJeBban_zau|r$8SZ0l!^9$QR&! z@HjXIt^=pfC*(!I!7^w82Fl=0@Y^mzUIWj8hrw}hJ^21SLOuX*fm7g3@H%)6yb4|c zFM{X693bEW9LT%}-UTm%r@$j10rTJpxB*-WgztVh`-2p!ua4IoPZ+m(?6_=fKgsN| zA97ka5f(O@?8J2fW^2+wyc>sfUD||w6RqJ^(>csH?@mIhuP z5ered6S~X}p@X$lB>6b&*kAX$hq#tffUuJ7zd-D~i$n1W=VOD@EK| zOR7JJSkljkCi{lCQ9-!t zN2ghfQyGUQQ8#uWzKYp%f-Xx`CWt==1$n>WGy^uaXytOViqxuVO=R}MFt4T5N=nCc z#E7x8hWTMD8p~QC9VV32j_S*Tg<){P|8f6JNw;*{W@)-jcxI#vRe77FOWoNEoY3~Y zVfUX^TG#jD9VHy@H2pzm+oZZ9dYkA&GPdYznf$5~;fu17od^ZxJCVJkPBieN`pa5? zhO{~*yNh(kCcUS>UGJ-@X(~&e-cMGi>Q*t=_fqd|-SyVUa8;>NY|+wl?T8+?c7`uD zYCn`i-jy3XlAFzyPu4c^2@1^nWM>0=Z98e}^5K#xI~dktrd0!4*H~(rt33v^knxP+ zoa?lHHXXVVo^coxu;?sumegz7w6vefoaL06bz&JfvKLRNiLgI0at51}B^NE-(DXLz zLOOV1hN>X_Y#3e@4CKIbFo^;mGc)tB06@FcBq#qAv)o8kgi%~Mb=ERoG;*hrn^TOE<_Mv$~Xp@_Iv(lA5|Ls5@jBMfG z+?=UZ(o<$uXFa?L30arNSpQ8>H}KKA@k#kJcHjV(e;y22(k1&z?gmkp@$Ai6utFxS zIBH`?5sM5i78%rUccPf**BvTOubr(SuwGJ;Qs>$Tj6z$F0u^81WO3E1bYmRV$l)l; zTBKR-%0Prddfi?t&s6NWdgZR_eZ{;jyGa-JMY=F!PtG2zHDvPgeBHi#cD_-h;;&=# zmAd+Ct~@_~?`(alNU<+CI$g0v@Is|ty{kGYHwc4_MP5a{_O0C4sMKraX}eZwAo)E- zJvX1R7b()I%G~tq@tF!X9aR)_LW!go_gYTfxTEFyie0TuRnRt_v1-B~*}%oAD~4Q~ z`apIP-9vh}*ay?-%0zU*QIh_J36_Wz{S@o50H4mshv{kaJfIbgs8H-TRf=NIrZ_z8%;zex8XFqculC}0#Y3K#{90!9I&fKk9G zU=%P47zO@S1;i1CdQnF364I70LTp>SeY9*_1lYEfy+V`cy!u38>*GzF9EqG|0`Yn& zcg^Detvh(jCy!BS)WXTIdf$|&i0WWe6_veJ&6k{>!u*{BJR&Nf^UT!+$2WtwVMVIX Re#NmO4mxr#6LgXS`3q{qR4@Pl diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.discovery.py.swp deleted file mode 100755 index 41fba5294c556162c09462ae279f58972e8fda2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNU2G#)6~0|4P++?iKN9WJkTe>5*GX*0iS2-q(p@hNyX!28H!L{OXzaP(4C~B9 z_Bd4tD-Z~HT;PEp!9#fgs)7IsP*o}??o=WPv+@=T9>BL*QG$ z!@#G3o4`Xr8+ZqBFYv+}8T$?JV;}%b;F&i-4wwS|^Lp3^ehWMXdqrEbvL-!+-@`0PX{By_PW!lz^9B!`PF+7lDrg z72sarZNN)+GWIm^S)dKf0snqAV}Amk10DrF2Ydq913mz}7svspfLqu&xeB}+_%$|J zo&~-Sd=K~x@FBnf>cBgJEbvFf;wQl40LA6ofIbX;u*Ahq-}M5+rGLZlI^1%2V7omb z5y~BSIAibN-!`0#{?7|*ciZwk%j3aAe*bzV;GXRTEz`5Nxw)CmhGrn_zc-a>r@U40vD#eY?XmSwoZ_@Tu0?WDf5dp-=j`a!1(9F0!y@ zLmeG|h~}TE8HLejWJ4(G7WeF-*V#IdZ}}R#V)C)ElBD5w(LHK6Qp_G?hSYr1Zg+uteR3wM$|ZCnA5x4 z(L{!-%(d`g)Ssk1vPp;RcM~1g>2Cza)L>#N zGZ?m^)-tIKxxs{-`cdLi#B!aahRCIH^4g7q3Q_qX6{!wMsVu8XCc#+eHoOgQBI-sI zLg_EXT3!vJ3{wSQY8do=Z-$7oRH5#*t`jDoXkyD$0;Y^Kkuwr)#aMXKZIwft?#n10 zWZ7NPf*1p(Y0*z-uJIr*a!k`S-bbx%BF64_x*|m9zNR4(#T zC1Ka$+y0Tps&j=dw9C9wD$P4~r99tmR}1rYvFha8?QX)D?QFZAwiZj=n$coJ>7>pI zOFqPuQ)Nv|SieR_WL39NqT>BoGn)0rQln`#mM+zgN}iaQo{No4erfd3euUXeGuyBe zs5!Pyar6=zinNZpRj(?%d^$asd%?_Eamt)N-NB>~1ukZUSr)s2DBg-ztR$0V-M+uA z2eX0UZtwX0z(|f+QU-HLJ@ty@l>f;Ib#B}&TN;sV2=(ELjj>Ud=Aya3ED*7bF=}02 zt)E}Mnu`Y`yg9pCUurI|G;+rJCF|_Ul}1yjFRiUw53Z~=a|T^qS*x$gtIJDkYwufG zJ(n{O*at4wEqc6OUtK=Gd{)^}H49rgV?&s$Uv1V`8%r0hM!gC33pqIpv<4l!NA17_ zsN;KG_gc<4SHFC5<^7lH$eLwTvmptPPc_e~iU*d~>eh1OTpevwhGi2XwJ4-o_dqC_ zj-;5tsFc_(T6rxmi{7(QM2R;S_z!~5k z;O|)L{|NX3@Oj`SunoKmcq?!cco9DT1E4*D=YgkzUjn}Xo&tUj{0w*!_$lyp;A;T2 z^-Dl{qzt4Cqzt4Cqzt4Cqzt^$7{DsV*tT5{GjxU>7)$ICTb4mvFQ#SDBg-;rCqNt| zuGa_AngWIR!hq$5w4^rA|#H&W=QE4EvdtGF&h!3J&FIR3rPnA1JY}_DE8Gum*|<`FJt0r+E^94 z5JtlfjPv*o;m}sX)If#8G^W&*-pq?w=&@$e{& zS5q0J>XUb^3A&vK!=p9B1PKEOyYLBoRxR|7UKWd8D`V+BA?qSCWqOYByvex6{6s1yf|5}y}^zP*7=MW_j ejelXsqED?DfYisn_ZNQQM diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.networks.py.swp deleted file mode 100755 index a8931b66ede7d398739a9271fdf2462cc021a947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNON<;x8LklCd4Ozj$N{N5(Wqzbd8|WBq)~=I)^@T1j~(yWkgQj&-tL;2lKVw> z&8)|k73CBuc zzufY8a)5AWoJ6dX#LN$qNzmyJ2A#`{Wn#=bF%x@9b~$gSvjY^^BFlhf;8QSg5BbIe z#}V0t++RCF4?g zuK&{MX`Sycm4B?uKdbZKT`Jd)_F@^Z3|Iy%1C{~HfMvikU>UFsSOzQumI2Ga|9}B6 zAmk9*{kc5wBE61~3DD01SXl;1S?H;BWU5@>75V4*~ZAAKgR9KY;gu zw}BUd7l0oDPXLbsf4>{`fE&P@!0W&s@CeWZz6QK^7a_j_egfP85?~GZ>z4`n5O@=K z7I+G{4|xAeg!~ftG4LEP21Y;&puk68M4P~6;27}X7YKO`=mTE|{`h%9egoV9UIBgx zq`(p2{m&8dD)1a2fHrV9@K3z#_%-kj@EY(W@G!6jd~hcrF9Reh2&(kYn;QV1J@WX~ttgYnS30dZ-hN16S~f(H;#v!Q^c_PWBq| z<|;nCXgC+PI_Er}54rEGtTpm=Ud7QgY@3p-YUw#CQ(3`~m z*hQrzc6E)0V6hjAZAV=Tba zFk{|Ew}*0|8^cJfRfcPyt}V%ZsjZ@`9F>E$DYq*u!H=e*RXh646J#;7QIpSo^>q&{ zrW+aa1W#hsm90q>dD)D1Yv@UptI{^dY3Bwuf^}bbGkbuC$y&m02qBLZZPSeYI7x%ar(^FRj%VIC2kHJOuycsRE=&s3u zm&Ob^#KM{KNtvO_wHFjx(F%f|Wkb(rbQi2L7HdDqC%YhU+mXTG?3DaTMK?_*I(gu9 z=~BcZZ|8ccCuS3oC2`ve0(WkMnXfN7iZ5YmPDovj)@}!-}$Us**OrU>7bY zCOJm!v=`=#R83ViQFQJ4JfB_hS&DEdF7Tt0Em?Cx;UJqV>MQtMqEok_V#%1gio>}v z>c$P2@OZebyP7*Y+v_`XE2S+9a_EF1(3cUwTvgoIO@diZ{WToE%ZjWLn0jc7b*G0gWkY@ilYOnF3R=~fpJU>_a$9aM zojBmW`0qG=znqJe#|3f~F>S7%Kg^W^zw{uyF%CkKoUxF3Idid-ajWI32KMgQ zYzr^OzRJ{Cb$UQkEQ_!o!a})ltWawFBp&jSQP4j%`2N}R-&NcCa)aNbr@wdhJA=*s zWA5fTcjNpi+@I}h1tnib%MwpYPBX6Qo<88N8*!CIG=WKO?$ThFNIyNvrYyvV@mZIS zlGF>oZ9aSFvETNSsBjzjv`RPg=r;7^e#TR|W$x0#ZPl}M+k-rI(MP34_aEs@@~pGV z;|`0ba{R|hOyv2$kF)$$K%W0`bS=^!@cet=d0i&o0oY_2unbrRECZGS%YbFTGGH07 z3|Iy%1C{~H!0j?1PyQJblMMfbRsX3_|56nHEuB{{Qv!;&DfF~{+d?Q-W64VZ diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp b/NTT/ntt-31-3-16/ntt-31-3-16/.t1.py.swp deleted file mode 100755 index 2053542418481ece30ee4a407c4a537c523f1ee4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&Jx{_w7zgk}7adTeaj!Zs(JK{&kT{S?qKUkOwm3EgN@#ew1`ZNj`~)tpE{=W; zcV9+y^&|KRe2Qoy8f78T_`l?z%RRl^U4L8CD{H00tddaUjM@rg3l~qN@O&XO95B`q zLI&lZn(*CrS2~qO)bYeOlX+dVTrS#fr73z6YlpD$=<&1JdL4yDUAOHafKmY;|fB*y_0D=E4kT>kKWggg8@krTI zB6YfKK21sbDb8aFU5)J~Rb7p1sU1zzcwZlBep+F2`WKtbX3Fcirr7TN1yqek0)j%? zFpl%Z{XoU3w!HSJYG!ijoN4FM+04fWmXRq=R2i#vL`!M7gRUH1xcA()RQtNEDPGGL L9jR2BL5aNp-vp8i diff --git a/NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo b/NTT/ntt-31-3-16/ntt-31-3-16/.vm_instances.py.swo deleted file mode 100644 index 3d84a7a4dc93caaedf94c6505a90eafb36b4ca5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 E4< Date: Fri, 29 Apr 2016 12:14:00 +0530 Subject: [PATCH 5/6] openstack-script --- openstack-scripts/.idea/encodings.xml | 6 + openstack-scripts/.idea/misc.xml | 14 + openstack-scripts/.idea/modules.xml | 8 + openstack-scripts/.idea/openstack-scripts.iml | 8 + openstack-scripts/.idea/workspace.xml | 43 +++ openstack-scripts/__init__.py | 0 openstack-scripts/config.py | 75 +++++ openstack-scripts/config.pyc | Bin 0 -> 2327 bytes openstack-scripts/credentials.py | 46 +++ openstack-scripts/credentials.pyc | Bin 0 -> 1668 bytes openstack-scripts/destroy_deploy.py | 76 +++++ openstack-scripts/discover_deploy.py | 281 ++++++++++++++++++ openstack-scripts/discovery.py | 252 ++++++++++++++++ openstack-scripts/discovery.pyc | Bin 0 -> 8534 bytes openstack-scripts/floating_ips.py | 48 +++ openstack-scripts/floating_ips.pyc | Bin 0 -> 1866 bytes openstack-scripts/main.py | 7 + openstack-scripts/networks.py | 178 +++++++++++ openstack-scripts/networks.pyc | Bin 0 -> 5278 bytes openstack-scripts/openstack_clean_script.py | 158 ++++++++++ openstack-scripts/samples_test/__init__.py | 0 openstack-scripts/samples_test/main.py | 20 ++ openstack-scripts/samples_test/main.pyc | Bin 0 -> 963 bytes openstack-scripts/t1.py | 17 ++ openstack-scripts/t2.py | 31 ++ openstack-scripts/tenant.txt | 7 + openstack-scripts/tenants.py | 145 +++++++++ openstack-scripts/tenants.pyc | Bin 0 -> 4374 bytes openstack-scripts/user.txt | 7 + openstack-scripts/vm_instances.py | 178 +++++++++++ openstack-scripts/vm_instances.pyc | Bin 0 -> 5548 bytes 31 files changed, 1605 insertions(+) create mode 100644 openstack-scripts/.idea/encodings.xml create mode 100644 openstack-scripts/.idea/misc.xml create mode 100644 openstack-scripts/.idea/modules.xml create mode 100644 openstack-scripts/.idea/openstack-scripts.iml create mode 100644 openstack-scripts/.idea/workspace.xml create mode 100644 openstack-scripts/__init__.py create mode 100644 openstack-scripts/config.py create mode 100644 openstack-scripts/config.pyc create mode 100644 openstack-scripts/credentials.py create mode 100644 openstack-scripts/credentials.pyc create mode 100644 openstack-scripts/destroy_deploy.py create mode 100644 openstack-scripts/discover_deploy.py create mode 100644 openstack-scripts/discovery.py create mode 100644 openstack-scripts/discovery.pyc create mode 100644 openstack-scripts/floating_ips.py create mode 100644 openstack-scripts/floating_ips.pyc create mode 100644 openstack-scripts/main.py create mode 100644 openstack-scripts/networks.py create mode 100644 openstack-scripts/networks.pyc create mode 100644 openstack-scripts/openstack_clean_script.py create mode 100644 openstack-scripts/samples_test/__init__.py create mode 100644 openstack-scripts/samples_test/main.py create mode 100644 openstack-scripts/samples_test/main.pyc create mode 100644 openstack-scripts/t1.py create mode 100644 openstack-scripts/t2.py create mode 100644 openstack-scripts/tenant.txt create mode 100644 openstack-scripts/tenants.py create mode 100644 openstack-scripts/tenants.pyc create mode 100644 openstack-scripts/user.txt create mode 100644 openstack-scripts/vm_instances.py create mode 100644 openstack-scripts/vm_instances.pyc diff --git a/openstack-scripts/.idea/encodings.xml b/openstack-scripts/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/openstack-scripts/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/openstack-scripts/.idea/misc.xml b/openstack-scripts/.idea/misc.xml new file mode 100644 index 0000000..e18a1c7 --- /dev/null +++ b/openstack-scripts/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openstack-scripts/.idea/modules.xml b/openstack-scripts/.idea/modules.xml new file mode 100644 index 0000000..9f615f2 --- /dev/null +++ b/openstack-scripts/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/openstack-scripts/.idea/openstack-scripts.iml b/openstack-scripts/.idea/openstack-scripts.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/openstack-scripts/.idea/openstack-scripts.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/openstack-scripts/.idea/workspace.xml b/openstack-scripts/.idea/workspace.xml new file mode 100644 index 0000000..077d757 --- /dev/null +++ b/openstack-scripts/.idea/workspace.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + 1461766552056 + + + + + + + + + + \ No newline at end of file diff --git a/openstack-scripts/__init__.py b/openstack-scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/openstack-scripts/config.py b/openstack-scripts/config.py new file mode 100644 index 0000000..8284fcb --- /dev/null +++ b/openstack-scripts/config.py @@ -0,0 +1,75 @@ +""" +Description: Define the Scale Test Configuration with the below global \ + parameters. +Developer: gopal@onecloudinc.com +""" + +# Tenant Settings + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.62:5000/v2.0/' + +# TENANT_CREATION = True + +TENANT_COUNT = 2 +TENANT_NAME_PREFIX = 'tenant-test' +TENANT_BASE_INDEX = 101 +USER_COUNT = 1 +USER_PASSWORD = 'secret' +NETWORK_COUNT = 2 +VM_COUNT = 1 +IMAGE_NAME = 'Cirros' +FLAVOUR_NAME = 'm1.tiny' +EXTERNAL_NETWORK = 'public' + +# Floating IP Settings + +FLOATING_IP_CREATION = True +FLOATING_IP_POOL = 'public' + +TENANT_CREATION = False +TENANT_NAME = ['tenant-test-101', 'tenant-test-102', 'tenant-test-103', 'tenant-test-104','tenant-test-105'] + + +# Cisco ASR Settings + +ENABLE_ASR_VERIFICATION = False +DEPLOYMENT_ID = 'ans136' +ASR_HOST = '10.10.10.10' +ASR_USER = 'admin' +ASR_PASSWORD = 'admin' + + +""" +Test Configuration Ends Here with the global parameters. +""" + + +def print_scale_test_config(): + """ + This method is used to print the current test configuration on scale test \ + deployment initialization. + """ + print '=' * 70 + print " Configuration for this Scale Test" + print '=' * 70 + + print " Tenant will be created with prefix : " \ + + TENANT_NAME_PREFIX + print " No of Tenants will be created : " \ + + str(TENANT_COUNT) + print " Tenant base index range starts from : " \ + + str(TENANT_BASE_INDEX) + print " No of Users per Tenant : " \ + + str(USER_COUNT) + print " No of Networks : " \ + + str(NETWORK_COUNT) + print " No of VMs per Network : " \ + + str(VM_COUNT) + print " Name of the External Network with be connected with Router : " \ + + EXTERNAL_NETWORK + print " Name of the Floating IP Pool will be used for Allocation : " \ + + FLOATING_IP_POOL + print '=' * 70 diff --git a/openstack-scripts/config.pyc b/openstack-scripts/config.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3f9f097082f3a1c2f11fbaab3e7299123ebcc84 GIT binary patch literal 2327 zcmcIlZExa65FUp>0(sBnn!ZTY_M}Sr5(2qiTA}uI9GC=^7-S%qT9GWr-Vp1I7kQUU z(vNLF^|$oj^$&Dr!I0c>AM1qi&g|^$vop_*GyiTB9=?0=&WGuf#rGTh$$wA;01iq6 z97D?`Ei(`-fwK%j2AnJe%i!c7$bz#1K@OZ%2v)$!>)C>~tU<5}&N>8na5f+)fU^mF z3!H5|-T}S~&NB$m4SmpI6M`)mV8A^+^&En2aK3>K zdxZKA6oopMeiDvUDB=pM^P4c{Ox<$U^}UF*9+!&MM0^tt#)(Hx>@HNd+T)r>;*Jd> zaqUIy$usg2Z^#u-WD(gXK2xGtKi(x@g7QJ8?#`0Sn-6}Pz z937Q^JT8_`ekvXpPmU|EN~O}#hvQ=DC|n}oYbX?ty;vP81Q>GELxYStn&y7Ol^)i@ zBoR`spmkU-sxW@g=F#{%3VpdnE9PMi%cb%H+wlV1%LTR{7T8|t?Yvl)U!G{x>y5kqyF>peRsrd$*xvSkzk)FdU5~510~cl!UR;bnwSX!f8yD z@t;rzStB)_^c+PC_$U$&L-G&fP=#I;{;ug&)SKZE0e%S^gy4G=wB#uZZ$yH-B9J*x z4G9lqljH|hE(trLe;DtCCKl43byd6ut^9@FmW>tBtMC?aA|5xLrhUzdy?Y; z1AfmEFCK6vm6s^VZW1v}mwfzALrhTgCEg;2*C##L$L@>try(q^?nLrlF7o`W?P-XM z^9hD&sL!r?GBFE*y?_!*UB$e|t`K9tNF(XGP@P1KePLE9Ta3|>Eeg?y1TrNaux5vK zgotJZ(v&1#RHI1vlV-&*gmsWdVyImdJ=3aMJ=dz9n{LN88_i2aw@<1>t(M-~ zo|?L-x{8ff^`hOkwZW#fY8gc@8FNLSy~nAq*(R2uZP|oWe~21hB)Ot5!xVMuqLDs6 z3FQ*$^tNTX)voPcn0B+#tm$wXaoy~++P|Hf$hT%4`zrvsowd8YnL>xskZERiINE$p s1wHz|_&}(B9*STb@z?YjmL(Lq<{9 literal 0 HcmV?d00001 diff --git a/openstack-scripts/credentials.py b/openstack-scripts/credentials.py new file mode 100644 index 0000000..a9b640c --- /dev/null +++ b/openstack-scripts/credentials.py @@ -0,0 +1,46 @@ +""" +Description: This script is to map the environment variables to credentials \ + dict based on the client service API +Developer: gopal@onecloudinc.com +""" + +from config import OS_USERNAME, OS_TENANT_NAME, OS_PASSWORD, OS_AUTH_URL + + +def get_credentials(): + """ + This method is used for authorization with keystone clients + """ + + data = {} + data['username'] = OS_USERNAME + data['password'] = OS_PASSWORD + data['auth_url'] = OS_AUTH_URL + data['tenant_name'] = OS_TENANT_NAME + return data + + +def get_nova_credentials(): + """ + This method is used for authorization with nova clients + """ + + data = {} + data['username'] = OS_USERNAME + data['api_key'] = OS_PASSWORD + data['auth_url'] = OS_AUTH_URL + data['project_id'] = OS_TENANT_NAME + return data + + +def get_tenant_nova_credentials(tenant_name): + """ + This method is used for tenant authorization with nova clients + """ + + data = {} + data['username'] = OS_USERNAME + data['api_key'] = OS_PASSWORD + data['auth_url'] = OS_AUTH_URL + data['project_id'] = tenant_name + return data diff --git a/openstack-scripts/credentials.pyc b/openstack-scripts/credentials.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35cab1a78a4552fba217cfcbf1a677368cea8b1c GIT binary patch literal 1668 zcmcgs!EO^V5S`sk(lijbAaUSg5Qn|A2aZ*Q8qq+JAgP>Gm7+>3ckL#oyX)23NmT?l zK7?Q45BL{80A`$2q$H|@1a;)u@nk&qym{m3N4xdy`_q#YmLtUPK2G}vg#;L*3_ymE z1(1g@4k3?V96?@#aSif1jO!4{2)>|e17yuBTOjLRX@YFPFy5koUs1FUluavLI&F$Q zHkxY77Hfu@Gb|S+b5q4sG1rwTa#c7s7nK%gneq;4r6d})$Sk`tq)r_>6IMxP3LhiQ zG;O!4n(I`t?$KL3eXcT7s%no-OewN`Q>ZjEGpUPoH#K=n|HKj3@TTq_ioq~B9`<;@ z`@ZKMEY_o5zuO-r-n4W%>JEn|1AcJ5rF%R&Opf_Gk7!D=(x~p5o(dwYS2NaVO*!ZJrpfU*`t;#H#L$_n^DT=reb1-rb>Sl1TMSOZptpy zm35dSTVP@Re%HiExT`7zMxjM1ti3dq^a~1;%&N?1<5VFEmyoANg`+oc;s~dtIAs@; zaD^HFYF0wulG&|ON>tu_`*7oUhFJtzBAEo&1g4UPge@RTVA<`7<-~zvSMzb z$=*i+^+wQI{{C$Zx)}U#YfzZExPd?S^rDs!rB1L!yn(u->z9@Jpi-A;c{|#is&+?6 zKfO;3JQAI3MET&F@`o7cR=5}R z+{FCNsB;3@!_BF8W6xn!Rwx~Na#MBg667a%9)Wz_Z+~F@9RFU!x*u<&+0j*#M4B{7 z91$rs#krm=8kMTC(yiprsY7@h#c%$2?Z38b6VL19M$R(z(!XY8XoSzA?e=#27nX~i AO8@`> literal 0 HcmV?d00001 diff --git a/openstack-scripts/destroy_deploy.py b/openstack-scripts/destroy_deploy.py new file mode 100644 index 0000000..3727a54 --- /dev/null +++ b/openstack-scripts/destroy_deploy.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python + +""" +Description: This script is to destory the L3/HA scale test deployment +Developer: gopal@onecloudinc.com +""" + +import os +from neutronclient.v2_0 import client +from keystoneclient.v2_0 import client as ksclient +from credentials import get_credentials +from config import TENANT_BASE_INDEX, TENANT_COUNT, TENANT_NAME_PREFIX, \ + print_scale_test_config +from networks import delete_network +from tenants import delete_tenant +from datetime import datetime, timedelta +from pytz import timezone + +credentials = get_credentials() +neutron = client.Client(**credentials) +keystone = ksclient.Client(**credentials) +fmt = "%Y-%m-%d %H:%M:%S %Z%z" + + +def main(): + """ + This method will destory the scale test deployment based on the global \ + config parameters mentioned on config.py file and creates the router with \ + external gateway connectivity to public network. + """ + + print "\n" + print_scale_test_config() + print "\n" + print "Destroying Scale Test Deployment" + index = TENANT_BASE_INDEX + for i in range(1, TENANT_COUNT + 1): + tenant_name = TENANT_NAME_PREFIX + '-' + str(index) + index += 1 + start_time = datetime.now(timezone('US/Pacific')) + try: + tenant = keystone.tenants.find(name=tenant_name) + delete_network(tenant_name) + delete_tenant(tenant_name) + except Exception: + print "\n" + print(" - Tenant Not Found: %s" % tenant_name) + pass + end_time = datetime.now(timezone('US/Pacific')) + print "\n" + print "-"*65 + print (" Tenant & User Deletion Time Summary :") + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + print "=" * 50 + print "\n" + print "Cleaned Scale Test Deployment" + print "\n" + + +if __name__ == '__main__': + main_start_time = datetime.now(timezone('US/Pacific')) + main() + main_end_time = datetime.now(timezone('US/Pacific')) + total_time = (main_end_time - main_start_time) + print "-"*65 + print (" Scale Test Deployment Consolidated Time Summary :") + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (main_start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (main_end_time.strftime(fmt))) + print(' - Elapsed Time for Cleaned Scale Test Deployment: %d days, %d hours, %d minutes, %d seconds' % (total_time.days, (total_time.seconds/3600), (total_time.seconds % 3600 / 60), (total_time.seconds % 60))) + print "\n" diff --git a/openstack-scripts/discover_deploy.py b/openstack-scripts/discover_deploy.py new file mode 100644 index 0000000..e2dcaa0 --- /dev/null +++ b/openstack-scripts/discover_deploy.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python + +""" +Description: This script is to initialize the L3/HA scale test deployment +Developer: gopal@onecloudinc.com +""" +import pdb +import os +from neutronclient.v2_0 import client +from credentials import get_credentials +from config import TENANT_BASE_INDEX, NETWORK_COUNT, \ + EXTERNAL_NETWORK, print_scale_test_config, DEPLOYMENT_ID, \ + ASR_HOST, ASR_USER, ASR_PASSWORD, ENABLE_ASR_VERIFICATION, TENANT_COUNT, \ + TENANT_NAME_PREFIX, TENANT_NAME, TENANT_CREATION, VM_COUNT +from tenants import create_tenant, discover_tenant +from networks import create_network +from vm_instances import discover_vm_on_network +from prettytable import PrettyTable + +credentials = get_credentials() +neutron = client.Client(**credentials) + + +def print_tenant_info(tenant_data): + + x = PrettyTable(['Tenant Name', 'Status']) + x.align["Tenant Name"] = "l" # Left align source tenant values + x.padding_width = 1 + for entry in tenant_data: + x.add_row([entry['tenant_name'], entry['status']]) + return x + +def print_discovered_tenant(tenant_data,router_data,test_data): + pdb.set_trace() + y=PrettyTable(['Tenant Name','Router Name','Network Name','Network CIDR']) + y.padding_width=1 + for x in tenant_data: + for z in router_data: + for a in test_data: + + y.add_row([x['tenant_name'],z['router_name'],a['network_data']['network_name'],a['network_data']['network_cidr']]) + return y + +def print_consolidated_count(test_count): + pdb.set_trace() + y=PrettyTable(['Tenant Count','Router Count','Network Count','VM Count']) + y.padding_width=1 + for i in test_count: + y.add_row([i['tenant_count'],i['router_count'],i['network_count']]) + return y +def print_router_info(router_data): + x = PrettyTable(['Tenant Name', 'Router Name', 'Status']) + x.align["Tenant Name"] = "l" # Left align source tenant values + x.padding_width = 1 + for entry in router_data: + x.add_row([entry['tenant_name'], entry['router_name'], + entry['router_status']]) + return x + + +def print_network_info(test_data): + y = PrettyTable(['Tenant Name', 'Network Name', 'Network CIDR', + 'Vlan ID', 'Subnet Name', 'Status']) + y.align["Tenant_Name"] = "l" # Left align source tenant values + y.padding_width = 1 + for entry in test_data: + y.add_row([entry['network_data']['tenant_name'], + entry['network_data']['network_name'], + entry['network_data']['network_cidr'], + entry['network_data']['network_vlan_id'], + entry['network_data']['subnet_name'], + entry['network_data']['status']]) + return y + + +def print_instance_info(test_data): + + z = PrettyTable(['Tenant Name', 'Instance Name', 'Status']) + z.align["Tenant Name"] = "l" # Left align source tenant values + z.padding_width = 1 + for data in test_data: + for ins in data['instance_data']: + z.add_row([data['network_data']['tenant_name'], + ins['instance_name'], + ins['status']]) + return z + + + + + + +def main(): + """ + This method will initialize the scale test deployment based on the global \ + config parameters mentioned on config.py file and creates the router with \ + external gateway connectivity to public network. + """ + + tenant_data = [] + router_data = [] + test_data = [] + test_count={} + if TENANT_CREATION == True: + print "\n" + print_scale_test_config() + print "\n" + pdb.set_trace() + print "Starting Scale Test Deployment" + index = TENANT_BASE_INDEX + for i in range(1, TENANT_COUNT + 1): + tenant_name = TENANT_NAME_PREFIX + '-' + str(index) + index += 1 + try: + tenant_data.append(create_tenant(tenant_name)) + except Exception as exc: + print "Exception occured on Tenant Creation: %s" % (exc.message) + pass + test_count["tenant_count"]=len(tenant_data) + for tenant in tenant_data: + + #test= {'count': {'tenant_count': len(tenant_data)}} + #test_count.append(test) + router_dict = {} + prefix = tenant['tenant_name'] + router_name = prefix + '-router' + router_dict['tenant_name'] = tenant['tenant_name'] + router_dict['router_name'] = router_name + router_dict['network_vlan'] = {} + router_dict['router_detail'] = {} + router_dict['ipnatpool_data'] = {} + router_dict['iproute_data'] = {} + router_dict['interface_data'] = [] + router_dict['nat_data'] = [] + + router = neutron.list_routers(name=EXTERNAL_NETWORK)['routers'] + if not router: + router_info = neutron.create_router({'router': { + 'name': router_name, 'tenant_id': tenant['tenant_id']}}) + router = router_info['router'] + status = True + elif router[0]['tenant_id'] == tenant['tenant_id']: + router = router[0] + status = True + else: + router = {} + status = False + + router_dict['router_status'] = status + networks = neutron.list_networks(name=EXTERNAL_NETWORK) + network_id = networks['networks'][0]['id'] + neutron.add_gateway_router(router['id'], + {'network_id': network_id, + 'tenant_id': tenant['tenant_id']}) + router_id = router['id'] + print(' - Created Router %s' % router['name']) + + for i in range(1, NETWORK_COUNT + 1): + network_index = str(i) + network_cidr = str(i) + "." + str(i) + "." + str(i) + ".0/24" + test_data.append(create_network(tenant, router, + network_index, network_cidr)) + network_vlan = {} + for entry in test_data: + network_vlan[str(entry['network_data']['network_vlan_id'])] = \ + entry['network_data']['network_name'] + router_dict['network_vlan'] = network_vlan + + else: + print "\n" + print "=" * 50 + print "Discovering Tenant Topology on Scale Test Deployment" + print "=" * 50 + try: + pdb.set_trace() + for i in range(len(TENANT_NAME)): + tenant_name = TENANT_NAME[i] + tenant_data.append(discover_tenant(tenant_name)) + #test= {'count': {'tenant_count': len(tenant_data)}} + #test_count.append(test) + + for tenant in tenant_data: + router_dict = {} + prefix = tenant['tenant_name'] + router_name = prefix + '-router' + router_dict['tenant_name'] = tenant['tenant_name'] + router_dict['tenant_id'] = tenant['tenant_id'] + router_dict['router_name'] = router_name + router_dict['network_vlan'] = {} + router_dict['router_detail'] = {} + router_dict['ipnatpool_data'] = {} + router_dict['iproute_data'] = {} + router_dict['interface_data'] = [] + router_dict['nat_data'] = [] + pdb.set_trace() + router = neutron.list_routers(name=router_name)['routers'][0] + if router['tenant_id'] == tenant['tenant_id']: + print(' - Router %s Discovered' % router_name) + status = True + else: + print(' - Router %s Not Found' % router_name) + status = False + router_id = router['id'] + router_dict['router_status'] = status + router_data.append(router_dict) + #test1= {'count': {'router_count': len(router_data)}} + #test_count.append(test1) + test_count["router_count"]=len(router_data) + for i in range(1, NETWORK_COUNT + 1): + network_index = str(i) + network_cidr = str(i) + "." + str(i) + "." + str(i) + ".0/24" + network_name = prefix + '-net-' + network_index + subnet_name = prefix + "-subnet-" + network_index + ins_data = [] + networks = neutron.list_networks(name=network_name)['networks'] + for i in range(len(networks)): + if networks[i]['tenant_id'] == tenant['tenant_id']: + network_id = networks[i]['id'] + network_vlan = networks[i]['provider:segmentation_id'] + print(' - Network %s Discovered' % network_name) + print(' - Network ID %s Discovered' % network_id) + print(' - VLAN ID %s Discovered' % network_vlan) + status = True + for j in range(1, VM_COUNT + 1): + vm_name = network_name + '-vm-' + str(j) + ins_data.append(discover_vm_on_network(tenant['tenant_name'], vm_name, network_id)) + else: + print(' - Network %s Not Found' % network_name) + status = False + + result = {'network_data': {'tenant_name': tenant['tenant_name'], + 'network_name': network_name, + 'network_cidr': network_cidr, + 'subnet_name': subnet_name, + 'network_id': network_id, + 'network_vlan_id': network_vlan, + 'status':status}, + 'instance_data': ins_data} + test_data.append(result) + test_count["network_count"]=test_data + + except Exception: + print "\n" + print(' - Tenant %s Not Found' % tenant_name) + + + print "\n" + print "=" * 50 + print "Scale Test Discovery Completed" + print "=" * 50 + + print "*" * 80 + print "Scale Test Deployment OpenStack Report" + print "*" * 80 + + print "\n" + print " Tenant Discovery Results " + print print_tenant_info(tenant_data) + print "\n" + print " Router Discovery Results " + print print_router_info(router_data) + print "\n" + print " Network Discovery Results " + print print_network_info(test_data) + print "\n" + + print " Instance Discovery Results " + print print_instance_info(test_data) + print "\n" + + print " Tenant Name, Router Name, Network Name " + print print_discovered_tenant(tenant_data,router_data,test_data) + print "\n" + + print" Overall Count of resources" + print print_consolidated_count(test_count) + + + +if __name__ == '__main__': + main() diff --git a/openstack-scripts/discovery.py b/openstack-scripts/discovery.py new file mode 100644 index 0000000..6806b50 --- /dev/null +++ b/openstack-scripts/discovery.py @@ -0,0 +1,252 @@ +import pdb +import subprocess + +from netaddr import * +from neutronclient.v2_0 import client +import novaclient.v1_1.client as nvclient + +from credentials import get_credentials,get_tenant_nova_credentials + +from vm_instances import discover_vm_on_network,launch_vm_on_network,vm_endpoint_discovery +from networks import delete_networks,delete_vm +credentials = get_credentials() +neutron = client.Client(**credentials) +tenant_data=[] +router_data=[] +network_dict={} +network_data=[] + +def tenant_discovery(): + pdb.set_trace() + tenant_data = [{'id': u'79bb772c47c24744853824305c796ea7','name': u'admin'}] + network_data=network_discovery(tenant_data) + +# discover_instance(tenant_data) + #launch_instance(tenant_data,network_data) + endpoints=endpoint_discovery(tenant_data,network_data) + print endpoints +# destroy_all(tenant_data,network_data) + +def get_ip_range(): + + ips=IPRange("1.1.1.0","1.1.1.254") + return ips + +def endpoint_discovery(tenant_data,network_data): + pdb.set_trace() + instance_list=[] + endpoint_list=[] + final_data=[] + + for tenant in tenant_data: + print("Get router information") + routers=get_router(tenant) + ports=get_ports(tenant) + instance_ports = get_instance_ports(ports) + for router in routers: + router_detail = {} + router_detail['id'] = router['id'] + router_detail['ports'] = get_router_ports(router, ports) + subnets = [] + instance_list = [] + for port in router_detail['ports']: + + subnets.append(get_port_subnets(tenant, port)) + router_detail['subnets'] = subnets + for subnet in router_detail['subnets']: + if subnet['id'] != '': + endpoint_detail = get_subnet_endpoints(tenant, instance_ports, subnet) + ip_list = [] + subnet['instances'] = endpoint_detail + for entry in endpoint_detail: + server = get_instance_detail(tenant['name'],entry['device_id']) + if entry['device_id'] not in instance_list and \ + server.status == 'ACTIVE': + ips=get_ip_range() + ip_list.append(entry['ip_address']) + + ipset=IPSet(ip_list) + for ip in ips: + if ip in ipset: + print("instance %s found"%(entry['ip_address'])) + instance_list.append(entry['device_id']) + endpoint_list.append({'endpoints': ip_list,'tenant_name':tenant['name'],'subnet':subnet}) + + return endpoint_list + +def get_instance_detail(tenant,instance): + + tenant_credentials = get_tenant_nova_credentials(tenant) + nova = nvclient.Client(**tenant_credentials) + return nova.servers.get(instance) + +def get_router_ports(router,ports): + + router_port_list = [] + for port in ports: + if (port['device_id'] == router['id'] and + port['device_owner'] == 'network:router_interface'): + router_port_list.append(port) + return router_port_list + +def get_port_subnets(tenant,port): + + subnet = get_subnet_detail(tenant, port['fixed_ips'][0]['subnet_id'])['subnet'] + return {'id': port['fixed_ips'][0]['subnet_id'], 'name': subnet['name'], + 'ip_address': port['fixed_ips'][0]['ip_address'],'allocation_pool':subnet['allocation_pools']} + +def get_subnet_detail(tenant, subnet): + + return neutron.show_subnet(subnet) + +def get_subnet_endpoints(tenant,ports,subnet): + + endpoints = [] + for port in ports: + endpoint_detail = {} + if port['fixed_ips'][0]['subnet_id'] == subnet['id']: + device_id = port['device_id'].encode('unicode_escape') + ip = port['fixed_ips'][0]['ip_address'].encode('unicode_escape') + endpoint_detail['device_id'] = device_id + endpoint_detail['ip_address'] = ip + endpoints.append(endpoint_detail) + return endpoints + + +def get_router(tenant): + routers=neutron.list_routers(tenant_id=tenant['id'])['routers'] + return routers +def get_ports(tenant): + ports=neutron.list_ports(tenant_id=tenant['id'])['ports'] + return ports + +def get_instance_ports(ports): + pdb.set_trace() + instance_port_list = [] + for port in ports: + if port['device_owner'] == 'compute:nova' or port['device_owner'] == 'compute:compute' : + instance_port_list.append(port) + return instance_port_list + +def destroy_all(tenant_data,network_data): + + delete_vm(tenant_data,network_data) + delete_networks(tenant_data,network_data) + +def network_discovery(tenant_data): + pdb.set_trace() + network_detail=[] + subnet_detail=[] + instance_list=[] + net_sub={} + for tenant in tenant_data: + + networks=neutron.list_networks(tenant_id=tenant['id'])['networks'] + + +# List all subnets under each network and the tenants + for net in networks: + nets={} + if net['tenant_id'] == tenant['id']: + nets={'network_list':{'tenant_name':tenant['name'], + 'network_name':net['name'],'network_id':net['id'],'shared':net['shared'],'subnets':net['subnets']}} + subnets=neutron.list_subnets(network_id=net['id'])['subnets'] + for subnet in subnets: + #net_sub={'networks':{'tenant_name':tenant['name'],'network_name':net['name'],'network_id':net['id'],'shared':net['shared']},'subnets':{'subnet_name':subnet['name'],'cidr':subnet['cidr']}} + net_sub={'networks':{'tenant_name':tenant['name'],'network_name':net['name'],'network_id':net['id'],'shared':net['shared'],'subnet_name':subnet['name'],'cidr':subnet['cidr']}} + + subnet_detail.append(net_sub) + print "\n" + print "List subnets along with network details" + print "tenant name %s"%(tenant['name']) + print "network_name %s"%(net['name']) + print "subnet_name %s"%(subnet['name']) + print "cidr\t %s"%(subnet['cidr']) + print "allocation pools...%s"%(subnet['allocation_pools']) + print "\n" + + network_detail.append(nets) + + return network_detail + +def launch_instance(tenant_data,network_data): + #pdb.set_trace() + inst_data=[] + count=1 + for tenant in tenant_data: + + for network in network_data: + pdb.set_trace() + vm_name=tenant['name'] + '-vm-' + str(count) + if ((network['network_list']['tenant_name'] == tenant['name']) and (network['network_list']['shared'] == True)): + + inst_data.append(launch_vm_on_network(tenant['name'],vm_name,network['network_list']['network_id'])) + + count += 1 + +def discover_instance(tenant_data): + instance_detail=[] + pdb.set_trace() + for tenant in tenant_data: + + vm_dict={} + instance_detail.append(discover_vm_on_network(tenant['name'])) + print instance_detail + + +def router_discovery(tenant_data): + #pdb.set_trace() + for tenant in tenant_data: + #router_dict = {} + router=neutron.list_routers(tenant_id=tenant['id'])['routers'] + for route in router: + + router_dict={} + #for rout in router: + + if route['tenant_id'] == tenant['id']: + print(' - Router %s Discovered' % route['name']) + status = True + router_id = route['id'] + router_dict['tenant_name']=tenant["name"] + router_dict['router_status'] = status + router_dict['router_name']=route['name'] + router_data.append(router_dict) + + else: + print("Tenant %s not having any router"%(tenant['name'])) + #if rout['tenant_id'] == tenant['id']: + #print(' - Router %s Discovered' % rout['name']) + #status = True + #router_id = rout['id'] + #router_dict['tenant_name']=tenant["name"] + #router_dict['router_status'] = status + #router_dict['router_name']=rout['name'] + + else: + print(' - Router Not Found in %s tenant' % tenant['name']) + status = False + #router_id = rout['id'] + #router_dict['router_status'] = status + #router_data.append(router_dict) + + + #router_id = router['id'] + #router_dict['router_status'] = status + #router_data.append(router_dict) + + print router_data + +def main(): + + tenant_discovery() + + + + + + + +if __name__ == '__main__': + + main() diff --git a/openstack-scripts/discovery.pyc b/openstack-scripts/discovery.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4191812b3ea66aa88c7dd2a5e06928b3ecae26b8 GIT binary patch literal 8534 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 literal 0 HcmV?d00001 diff --git a/openstack-scripts/floating_ips.py b/openstack-scripts/floating_ips.py new file mode 100644 index 0000000..2ff4ded --- /dev/null +++ b/openstack-scripts/floating_ips.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +""" +Description: This script is to allocate & associate the floating IP. +Developer: gopal@onecloudinc.com +""" + +import pdb +from neutronclient.v2_0 import client +import novaclient.v1_1.client as nvclient +from credentials import get_credentials, get_nova_credentials, \ + get_tenant_nova_credentials +from config import FLOATING_IP_POOL + +neutron_credentials = get_credentials() +credentials = get_nova_credentials() +neutron = client.Client(**neutron_credentials) +nova = nvclient.Client(**credentials) + +#if not nova.keypairs.findall(name="admin"): + #with open(os.path.expanduser('~/.ssh/id_rsa.pub')) as fpubkey: + #nova.keypairs.create(name="admin", public_key=fpubkey.read()) + + +def add_floating_ip_for_vm(tenant_name, instance): + """ + This method is used to allocate & associate floating IP to the given VM\ + based on the availability from the defined pool. + """ + tenant_credentials = get_tenant_nova_credentials(tenant_name) + pdb.set_trace() + nova = nvclient.Client(**tenant_credentials) + floating_ip = nova.floating_ips.create(FLOATING_IP_POOL) + instance.add_floating_ip(floating_ip) + print " - Assigned Floating IP: " + str(floating_ip.ip) + return True + + +def release_all_floating_ips(): + """ + This method is used to release all the disallocated floating IPs. + """ + floating_ips = neutron.list_floatingips()['floatingips'] + try: + for ip in floating_ips: + neutron.delete_floatingip(ip['id']) + except: + pass + return True diff --git a/openstack-scripts/floating_ips.pyc b/openstack-scripts/floating_ips.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e20bcd475d13aa809af33ab4c975aba8847eb023 GIT binary patch literal 1866 zcmcgsO>f&q5S^uDeMPbrx2Ws1K-r6-i-jgfBPbHsaB4J-4aTSg!2v;&D|uCtt8!OD z4cMo&$Nqxe`|o<{4`|;k>6l4Bjv=(8-I?Le?t5?8_;b+v?T;_dVyYew|4%T??=T6` z1XfVuQ7UMH34RSqJ<1w1X^^O5O`5OK9IlqjXj0mytV5FyWnG$dDeKXsS7xtKdXKU` zP5LBchu)yXfMnNA+9Vq^Une=BU*X>%*>cOaTMj8{(a-STr=;yBn|!dBqYj^U2Gcu` zCN9*%DxL57r->DprqZyI!sCAeylZM#&2klLZ^CNG&#+vUZ)$LpxrIE>h!druua~SQJTFKo1{yX04BI1{I?gG&&QfYLdQf06FX`wUcP2^PN zNLpx}j$M7jz~SXx|EV!*#=*lo2KW3?AMwEP!Df+M;7+&zc(FwkOUsJMS0!(b!hJ`f z<@at69IAyW=`AF55;PHW^hQY%){=lPwzh?3jG#TvJ1v%S#QXp}n2O#Aka1;|8yn>~ z#^znHt{2{cwcuW^RT{xh&X`x29qyeUSIRtxTzS*@huu=}yEA3~;WYp5J+GB8E>`T{F=3DIcf5IzdDxo9p?@}?!+_rjB z?`>1c=N(*`Wyf4H;?tum0KQz>Lg$uSFIC3ArJIxQ!9l;Vr4y6cQ1Qmym}OV6~IeQ z6fDZyz{Bw2xN0EAZH0Bf*g0@(Y7Y1_88E_SL%I*9&ZlZtb`+nas#*Uw2HYsY78^cQ uz~9i|0n8n$AD|QX5RWsREK~V4BV@QWT3%laq599gq1P2%biqcuyZ$#3``keQ literal 0 HcmV?d00001 diff --git a/openstack-scripts/main.py b/openstack-scripts/main.py new file mode 100644 index 0000000..e5acd04 --- /dev/null +++ b/openstack-scripts/main.py @@ -0,0 +1,7 @@ +import pdb +from discovery import * +def main(): + tenant_discovery() + +if __name__ == '__main__': + main() diff --git a/openstack-scripts/networks.py b/openstack-scripts/networks.py new file mode 100644 index 0000000..befd00e --- /dev/null +++ b/openstack-scripts/networks.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +""" +Description: This script is to create network, subnets, router with \ + external gateway mapping. +Developer: gopal@onecloudinc.com +""" +import pdb +import os +from neutronclient.v2_0 import client +from credentials import get_credentials +from config import NETWORK_COUNT, VM_COUNT, FLOATING_IP_CREATION +from vm_instances import launch_vm_on_network, terminate_vm_on_network +from floating_ips import release_all_floating_ips +from datetime import datetime, timedelta +from pytz import timezone + +credentials = get_credentials() +neutron = client.Client(**credentials) +fmt = "%Y-%m-%d %H:%M:%S %Z%z" + + +def create_network(tenant, router, network_index, network_cidr): + """ + This method is used to create network, subnets, interfaces on router with \ + external gateway mapping for the given network name and CIDR. + """ + + try: + prefix = tenant['tenant_name'] + network_name = prefix + '-net-' + network_index + print "\n" + print "=" * 50 + print " Initiated Network Creation for " + network_name + print "=" * 50 + print "\n" + + body_sample = {'network': {'name': network_name, + 'tenant_id': tenant['tenant_id']}} + start_time = datetime.now(timezone('US/Pacific')) + try: + net = neutron.create_network(body=body_sample) + net_dict = net['network'] + network_id = net_dict['id'] + network_vlan = net_dict['provider:segmentation_id'] + print(' - Network %s created' % net_dict['name']) + net_status = True + except Exception: + net_dict = {} + net_status = False + + subnet_name = prefix + "-subnet-" + network_index + try: + tenant_id = tenant['tenant_id'] + body_create_subnet = {'subnets': [{'name': subnet_name, + 'cidr': network_cidr, + 'ip_version': 4, + 'network_id': network_id, + 'tenant_id': tenant_id}]} + subnet_detail = neutron.create_subnet(body=body_create_subnet) + subnet = subnet_detail['subnets'][0] + print(' - Created subnet %s' % subnet['name']) + net_status = True + except Exception: + subnet = {} + net_status = False + + neutron.add_interface_router(router['id'], {'subnet_id': subnet['id'], + 'tenant_id': tenant['tenant_id']}) + print (' - Created interface between %s' % subnet['name']) + finally: + print "\n" + msg = "<== Completed Network Creation with External Gateway " + msg += "Successfully ==>" + print msg + end_time = datetime.now(timezone('US/Pacific')) + print "\n" + print "-"*65 + print (" Network %s Creation Time Summary :" % network_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + print "\n" + print "=" * 50 + print " Initiated VM Deployment " + network_name + print "=" * 50 + print "\n" + + ins_data = [] + for i in range(1, VM_COUNT + 1): + vm_name = network_name + '-vm-' + str(i) + start_time = datetime.now(timezone('US/Pacific')) + ins_data.append(launch_vm_on_network(tenant['tenant_name'], + vm_name, network_id)) + end_time = datetime.now(timezone('US/Pacific')) + + print "\n" + msg = "<== Completed VM Launch on Network with Floating IP Allocation " + msg += "Successfully ==>" + print msg + print "\n" + print "-"*65 + print (" Instance %s Creation Time Summary :" % vm_name) + print "-"*65 + print "\n" + print(' - Test Started Time :\t %s' % (start_time.strftime(fmt))) + print(' - Test Ended Time :\t %s' % (end_time.strftime(fmt))) + + result = {'network_data': {'tenant_name': tenant['tenant_name'], + 'network_name': network_name, + 'network_cidr': network_cidr, + 'subnet_name': subnet_name, + 'network_id': network_id, + 'network_vlan_id': network_vlan, + 'status': net_status}, + 'instance_data': ins_data} + return result + + +def delete_vm(tenant_data,network_data): + """ + This method is used to delete vms, network, subnets, interfaces on router \ + with external gateway mapping for the given network name and CIDR. + """ + pdb.set_trace() + #prefix = tenant_name + network_list = [] + router_list = [] + count=1 + #router_list.append(prefix + '-router') + #for i in range(1, NETWORK_COUNT + 1): + #network_list.append(prefix + '-net-' + str(i)) + for tenant in tenant_data: + for network in network_data: + vm_name=tenant['name'] + '-vm-' + str(count) + if ((network['network_list']['tenant_name'] == tenant['name']) and (network['network_list']['shared'] == False)): + + + terminate_vm_on_network(tenant['name'], vm_name,network['network_list']['network_id']) + count += 1 + + release_all_floating_ips() +def delete_networks(tenant_data,network_data): + pdb.set_trace() + networks=None + for tenant in tenant_data: + networks=neutron.list_networks(tenant_id=tenant['id'])['networks'] + routers=neutron.list_routers(tenant_id=tenant['id'])['routers'] + subnets=neutron.list_subnets(tenant_id=tenant['id'])['subnets'] + + + for router in routers: + ports=neutron.list_ports(tenant_id=tenant['id'])['ports'] + for port in ports: + #for subnet in subnets: + if (port['device_id'] == router['id'] and port['device_owner'] == 'network:router_interface'): + neutron.remove_interface_router(router['id'],{'subnet_id':port['fixed_ips'][0]['subnet_id']}) + neutron.remove_gateway_router(router['id']) + neutron.delete_network(port['network_id']) + neutron.delete_router(router['id']) + #neutron.delete_network(network['id']) + + #for network in networks: + #neutron.delete_network(network['id']) + + #for subnet in subnets: + #for network in networks: + + + + + + #if FLOATING_IP_CREATION: + #release_all_floating_ips() + #print "\n" + #print("<== Released all Floating IPs Successfully ==>") + #return True diff --git a/openstack-scripts/networks.pyc b/openstack-scripts/networks.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b064abd78cf66f7a03dc12ef61f1ee285e49045 GIT binary patch literal 5278 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 WpILma8p~+$>\t")) + #ext_network_count=int(raw_input("Enter the no of External network to be created >> \t")) + #instance_detail['name']=raw_input("Please provide name for instance") + #flavor_id=int(raw_input("Provide the flavor for the instance")) + #netw=neutr.list_networks() + #print netw + #ss=db_connection(flavor_list,novactr) + #us=ss.get(flavor_id) + #if us: + #logger.info("You choose %s flavor"%(us)) + #else: + #logger.info("The flavor u choose is doesn't exists..") + #exit + #create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id) + delete_network(neutr,novactr,logger,net_list,subnet_list) + +def create_network(neutr,network_count,logger,net_list,count,subnet_list,novactr,flavor_id): + pdb.set_trace() + logger.info("Start creating external network ") + ext_network=neutr.create_network({'network':{'name':'EXT-NET','admin_state_up':'True','router:external':'True'}}) + ext_id=ext_network['network']['id'] + vm_list=['vm-1','vm-2'] + logger.info("Creating external network subnet...") + ext_subnet=neutr.create_subnet({'subnet':{'name':'EXT_subnet','network_id':ext_id,'ip_version':4,'cidr':'6.6.8.8/24'}}) + time.sleep(2) + logger.info("creating router") + router1=neutr.create_router({'router':{'name':'Router-1','admin_state_up':'True'}}) + router_id=router1['router']['id'] + neutr.add_gateway_router(router_id,{'network_id':ext_id}) + + while count < network_count: + + neut=neutr.create_network({'network':{'name':net_list[count],'admin_state_up':'True'}}) + if neut: + net_id=neut['network']['id'] + logger.info("Network %s sucessfully created.."%(net_list[count])) + time.sleep(4) + logger.info("Start creating subnets") + #nsub=neutr.create_subnet({'subnet':subnet_list['subnets'][count]}) + nsub=neutr.create_subnet({'subnet':{'name':subnet_list['subnets'][count]['name'],'network_id':net_id,'ip_version':subnet_list['subnets'][count]['ip_version'],'cidr':subnet_list['subnets'][count]['cidr']}}) + sub_id=nsub['subnet']['id'] + if nsub: + logger.info("subnet is created for network %s"%(net_list[count])) + time.sleep(4) + logger.info("Adding interface to router") + neutr.add_interface_router(router_id,{'subnet_id':sub_id}) + time.sleep(5) + logger.info("Ready to launch the instances") + pdb.set_trace() + image = novactr.images.find(name="cirros") + print net_id + instance = novactr.servers.create(name=vm_list[count], image=image, flavor=flavor_id, nics=[{'net-id':net_id}]) + logger.info("Instance launched successfully on network %s"%(net_list[count])) + time.sleep(4) + count = count+1 + else: + logger.info("Error in network creation") + time.sleep(3) + logger.info("setup is ready for testing..") + +def db_connection(flavor_list,novactr): + db=MySQLdb.connect(host="localhost",user="root",passwd="dafc1bce95654501",db="nova") + cur=db.cursor() + cur.execute("select id,name from instance_types") + ss=novactr.networks.list() + print ss + return dict(cur.fetchall()) + +def delete_network(neutr,novactr,logger,net_list,subnet_list): + logger.info("Start cleaning the dashboard") + del_net={} + server_delete(novactr,logger) + delete_interface(neutr,logger) + count=0 + +def server_delete(novactr,logger): + #pdb.set_trace() + logger.info("Fetching list of servers") + myserver=novactr.servers.list() + server_len=len(myserver) + for i in range(server_len): + ss=novactr.servers.delete(myserver[i]) + if ss: + logger.info("Instances %s sucessfully deleted"%myserver[i]) + time.sleep(1) +def delete_interface(neutr,logger): + + mynetwork=neutr.list_networks() + net_len=len(mynetwork['networks']) + myrouter=neutr.list_routers() + r_id=myrouter['routers'][0]['id'] + port_delete(neutr,logger,r_id) + my_ports=neutr.list_ports()['ports'] + port_gateway=[] + s=neutr.remove_gateway_router(r_id) + if s: + logger.info("gateway router is detached successful...") + myrouter=neutr.list_routers()['routers'] + for r in range(len(myrouter)): + + neutr.delete_router(myrouter[r]['id']) + logger.info("Deleting networks...") + time.sleep(2) + for j in range(net_len): + dd=neutr.delete_network(mynetwork['networks'][j]['id']) + +def port_delete(neutr,logger,r_id): + logger.info("listing port details..") + myports=neutr.list_ports()['ports'] + port_list=[] + port_gateway=[] + for port in myports: + + if (port['device_id'] == r_id and + port['device_owner'] == 'network:router_interface'): + port_list.append(port) + logger.info("Removing router interfaces..") + + for i in range(len(port_list)): + + del_inf=neutr.remove_interface_router(r_id,{'subnet_id':port_list[i]['fixed_ips'][0]['subnet_id']}) + +#def get_id(novactr,logger): + #welcome=novactr.servers.list(413fb5d3-c1bc-4267-80ab-6a27d0cfd04b) + #print welcome + + +if __name__ == '__main__': + main() diff --git a/openstack-scripts/samples_test/__init__.py b/openstack-scripts/samples_test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/openstack-scripts/samples_test/main.py b/openstack-scripts/samples_test/main.py new file mode 100644 index 0000000..04289ef --- /dev/null +++ b/openstack-scripts/samples_test/main.py @@ -0,0 +1,20 @@ +from multiprocessing import * +import multiprocessing + +def myfunction(a,b,q): + + c = a * b + q.put(c) + +def main(): + jobs=[] + q = Queue() + for i in range(2): + p = Process(target=myfunction,args = (2,3,q)) + jobs.append(p) + p.start() + print q.get() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/openstack-scripts/samples_test/main.pyc b/openstack-scripts/samples_test/main.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b0696ddd0f96a7ec8bd7a2ec2fcfd0c0982f3bb GIT binary patch literal 963 zcmcgr!EV$r5FI+e($tR#ED>E2oK*#uJH3-BbBv zJ^&@EmZ5uISk&p*u}AJ`%cD zq!9WvIxn_Ih;Kh~F8=YnGU8>#n}{aI9z_TjU?*=^U%WL+Uivg~VF8i2Z|BM1o6oQq18ofYeN->QKE@2P#u6)hG(FD2nYndV-a9 zY}obNe4Ss%l$TGjv9tGOYhjOt?bC|v0p6F~_FdamV`Gox{|WNoGPSSMX`1b;Kid}C AMF0Q* literal 0 HcmV?d00001 diff --git a/openstack-scripts/t1.py b/openstack-scripts/t1.py new file mode 100644 index 0000000..a93a8ab --- /dev/null +++ b/openstack-scripts/t1.py @@ -0,0 +1,17 @@ +from keystoneclient.v2_0 import client + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' + +keystone = client.Client(username=OS_USERNAME, password=OS_PASSWORD, auth_url=OS_AUTH_URL) +import pdb +pdb.set_trace() + +tenants = keystone.tenants.list() +for tenant in tenants: + print tenant.__dict__ + + diff --git a/openstack-scripts/t2.py b/openstack-scripts/t2.py new file mode 100644 index 0000000..adb670c --- /dev/null +++ b/openstack-scripts/t2.py @@ -0,0 +1,31 @@ +from neutronclient.v2_0 import client as neutron_client + + + +OS_USERNAME = 'admin' +OS_TENANT_NAME = 'admin' +OS_PASSWORD = 'admin' +OS_AUTH_URL = 'http://172.168.2.40:5000/v2.0/' +OS_TENANT_ID = '2931fbe17e8445da875bb915a29d0bbf' + +def get_credentials(): + d = {} + d['username'] = OS_USERNAME + d['password'] = OS_PASSWORD + d['auth_url'] = OS_AUTH_URL + d['tenant_id'] = OS_TENANT_ID + return d + +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] + + +credentials = get_credentials() +neutron = neutron_client.Client(**credentials) +netw = neutron.list_networks() +print netw diff --git a/openstack-scripts/tenant.txt b/openstack-scripts/tenant.txt new file mode 100644 index 0000000..2ecda20 --- /dev/null +++ b/openstack-scripts/tenant.txt @@ -0,0 +1,7 @@ +tenants = [ + {'id': u'2931fbe17e8445da875bb915a29d0bbf', 'name': u'admin'}, + {'id': u'2e93f5f662974b1284e8be13dd472e48', 'name': u'demo'}, + {'id': u'ae9e7941b6764accae72a99662c189a5', 'name': u'tenant-test-101'}, + {'id': u'be0e4b8dc7754668b0e3d57e4f7f6f66', 'name': u'tenant-test-102'}, + {'id': u'fbb4907f073d4b5881a85c1692ae027a', 'name': u'services'} +] diff --git a/openstack-scripts/tenants.py b/openstack-scripts/tenants.py new file mode 100644 index 0000000..ed40861 --- /dev/null +++ b/openstack-scripts/tenants.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python +""" +Description: This script prepares new tenant with the following properties: +1. Creates new tenant. +2. Creates new user and this user is added _member_ to tenant. \ +Password is second argument of script +3. Admin user will be added to tenant with role admin +Developer: gopal@onecloudinc.com +""" + +import os +import pdb +from keystoneclient.v2_0 import client as ksclient +from credentials import get_credentials +from config import USER_COUNT, USER_PASSWORD + +credentials = get_credentials() +keystone = ksclient.Client(**credentials) +assign_admin = True + + +def create_tenant(tenant_name): + """ + This method is used to create tenant and create number of users per tenant + """ + + print "\n" + print "=" * 50 + print " Initiated Tenant Creation for " + tenant_name + print "=" * 50 + print "\n" + + try: + try: + new_tenant = keystone.tenants.create(tenant_name=tenant_name, + description="Scale tenant \ + created", + enabled=True) + print(' - Tenant %s created' % tenant_name) + except Exception: + new_tenant = keystone.tenants.find(name=tenant_name) + tenant_id = new_tenant.id + tenant_status = True + user_data = [] + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + user_data.append(create_user(user_name, tenant_id)) + except Exception: + tenant_status = False + + print "\n" + msg = ('<== Completed Tenant Creation and Users per Tenant ' + 'with _member_ role ') + msg += 'Successfully ==>' + print msg + print "\n" + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def discover_tenant(): + """ + This method is used to discover tenant and discover number of users per tenant + """ + global tenant_id,tenant_status + try: + pdb.set_trace() + new_tenant = keystone.tenants.list() + tenant_id = new_tenant.id + tenant_status = True + print "\n" + print(' - Tenant %s Discovered' % tenant_name) + print(' - Tenant_ID %s Discovered' % tenant_id) + except Exception: + pass + + tenant_data = {'tenant_name': tenant_name, + 'tenant_id': tenant_id, + 'status': tenant_status} + return tenant_data + + +def create_user(user_name, tenant_id): + """ + This method is to create users per Tenant + """ + + try: + new_user = keystone.users.create(name=user_name, + password=USER_PASSWORD, + tenant_id=tenant_id) + print(' - Created User %s' % user_name) + except Exception: + new_user = keystone.users.find(name=user_name) + member_role = keystone.roles.find(name='_member_') + try: + keystone.roles.add_user_role(new_user, member_role, tenant_id) + except Exception: + pass + if assign_admin: + admin_user = keystone.users.find(name='admin') + admin_role = keystone.roles.find(name='admin') + try: + keystone.roles.add_user_role(admin_user, admin_role, tenant_id) + except Exception: + pass + user_data = {'name': new_user.name, + 'id': new_user.id} + return user_data + + +def delete_tenant(tenant_name): + """ + This method is used to delete tenant and users + """ + + try: + tenant = keystone.tenants.find(name=tenant_name) + for j in range(USER_COUNT): + j += 1 + user_name = tenant_name + '-user-' + str(j) + delete_user(user_name, tenant.id) + tenant.delete() + print(' - Deleted Tenant %s ' % tenant_name) + except Exception: + pass + return True + + +def delete_user(user_name, tenant_id): + """ + This method is to delete users per Tenant + """ + try: + user = keystone.users.find(name=user_name) + user.delete() + except Exception: + print(" - User Not Found: %s" % user_name) + pass + print(' - Deleted User %s' % user_name) + return True diff --git a/openstack-scripts/tenants.pyc b/openstack-scripts/tenants.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da06d960a8ab6ecc0cfafbc91ca5ae96bd864883 GIT binary patch literal 4374 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 TjY<>AzEN%dw0WcXUUTIe`$*w6 literal 0 HcmV?d00001 diff --git a/openstack-scripts/user.txt b/openstack-scripts/user.txt new file mode 100644 index 0000000..9e5d3d9 --- /dev/null +++ b/openstack-scripts/user.txt @@ -0,0 +1,7 @@ +#cloud-config +chpasswd: + list: | + root:ubuntu + ubuntu:ubuntu + expire: False +ssh_pwauth: True diff --git a/openstack-scripts/vm_instances.py b/openstack-scripts/vm_instances.py new file mode 100644 index 0000000..5f31854 --- /dev/null +++ b/openstack-scripts/vm_instances.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python +""" +Description: This script is to launching VMs on the network. +Developer: gopal@onecloudinc.com +""" + +import os +import time +import pdb +import novaclient.v1_1.client as nvclient +from novaclient.base import * +from novaclient.exceptions import NotFound +from config import FLOATING_IP_CREATION, IMAGE_NAME, FLAVOUR_NAME,OS_USERNAME, OS_TENANT_NAME, OS_PASSWORD, OS_AUTH_URL +from credentials import get_nova_credentials, get_tenant_nova_credentials,get_credentials +from floating_ips import add_floating_ip_for_vm +import glanceclient.v2.client as glance_client +import keystoneclient.v2_0.client as ksclient +keystone = ksclient.Client(auth_url="http://172.168.2.62:35357/v2.0", + username="admin", + password="admin", + tenant_name="admin") +token = keystone.auth_ref['token']['id'] + +credentials = get_nova_credentials() +nova = nvclient.Client(**credentials) +#glance=glance_client.Client(username=OS_USERNAME,password=OS_PASSWORD,tenant_name=OS_TENANT_NAME,auth_url=OS_AUTH_URL) +glance=glance_client.Client(endpoint="http://172.168.2.62:9292", token=token) + + +#if not nova.keypairs.findall(name="admin"): + #ith open(os.path.expanduser('~/.ssh/id_rsa.pub')) as fpubkey: + #nova.keypairs.create(name="admin", public_key=fpubkey.read()) + +def upload_image_glance(): + #pdb.set_trace() + image_list=glance.images.list() + image_file="/home/onecloud/NTT/keerthi/ubuntu.img" + image=glance.images.create(disk_format="qcow2",container_format="bare",name="ubuntu") + print("image status %s"%(image.status)) + ss=glance.images.upload(image.id,open('/home/onecloud/NTT/keerthi/ubuntu.img','rb')) + print("Current Image status <%s>"%(image.status)) + + #with open(image_file) as img: + #image=glance.images.create(name="ubuntu",disk_format="raw",container_format="bare",data=img) + + #print("Current Image status %s"%(image.status)) + + +def launch_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to launch VM on the given network & VM Name. + """ + pdb.set_trace() + + tenant_credentials = get_tenant_nova_credentials(tenant_name) + + nova = nvclient.Client(**tenant_credentials) + nova.quotas.update(tenant_name, instances=-1, cores=-1, ram=-1, fixed_ips=-1, floating_ips=-1) + with open('user.txt') as userdata: + user_data = userdata.read() + try: + image_list=nova.images.find(name="cirros-0.3.4-x86_64-uec") + except NotFound: + upload_image_glance() + + #for img in image: + #if img.name == 'ubuntu': + #print "image found" + try: + + flavor = nova.flavors.find(name='traffic') + except: + flavor = nova.flavors.create(name="traffic",ram="512",vcpus="1",disk="1") + instance=None + + try: + pdb.set_trace() + instance = nova.servers.create(name=vm_name, image=image_list, + flavor=flavor, + availability_zone="compute:compute", + nics=[{'net-id': network_id}],userdata=user_data) + except Exception: + pass + + # Poll at 15 second intervals, until the status is no longer 'BUILD' + print " * Instance <%s> created on network <%s>: "%(vm_name,str(network_id)) + status = instance.status + while status == 'BUILD': + time.sleep(15) + # Retrieve the instance again so the status field updates + instance = nova.servers.get(instance.id) + status = instance.status + + print " - Current status: %s" % status + if FLOATING_IP_CREATION: + add_floating_ip_for_vm(tenant_name, instance) + + ins_data = {'instance_name': vm_name, 'status': status} + return ins_data + +#def endpoint_discovery(tenant_data,network_data): + +# tenant_credentials = get_tenant_nova_credentials(tenant_name) +# nova = nvclient.Client(**tenant_credentials) +# instance_list = nova.servers.list() + + +def vm_endpoint_discovery(tenant_name): + pdb.set_trace() + + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + networks=inst.networks + + + + except Exception: + print(' - Instance Not Found') + + +def discover_vm_on_network(tenant_name): + """ + This method is used to discover instances per tenant + """ + name=None + status=None + try: + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + instance_list=nova.servers.list() + #instance = nova.servers.find(name=vm_name) + if instance_list > 0: + + for inst in instance_list: + + instance_id = inst.id + name=inst.name + inst_find=nova.servers.find(id=instance_id) + print(' - Instance %s Discovered' % inst.name) + print(' - Instance ID %s Discovered' % instance_id) + print(' - Instance %s Status' % inst.status) + status=inst.status + except Exception: + print(' - Instance Not Found') + status = False + + ins_data = {'instance_name': name, + 'status': status } + return ins_data + + +def terminate_vm_on_network(tenant_name, vm_name, network_id): + """ + This method is to terminate VM on the given network & VM Name. + """ + pdb.set_trace() + tenant_credentials = get_tenant_nova_credentials(tenant_name) + nova = nvclient.Client(**tenant_credentials) + nova.quotas.delete(tenant_name) + try: + instance = nova.servers.find(name=vm_name) + nova.servers.delete(instance.id) + print " * Instance terminated on network: " + str(network_id) + except Exception: + print " * Instance Not Found on network: " + str(network_id) + pass + return True diff --git a/openstack-scripts/vm_instances.pyc b/openstack-scripts/vm_instances.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2bd0e1d2a054c87a06b0b919a2c44adb1000f8b7 GIT binary patch literal 5548 zcmcgw%~KoM5$}x5MhM4S<;xmS^IpG?>DTYqzwS}? zKf}d;m{+%Il>8L%{~rxN2obU)lq7WQFV-(<5V4w z*W{@&LCs03PEvDK8swR0R)vu6yhGyLnnyp?XZxSO^oglBDS9=rmJ9Mv+cV0Fd zC3lRcdsi_nQ~ikCarzz;u9G_OId4JpEl5?U%8*<2AyT7cH8*VasVe z3rt)hzbS+NKpN2BBD6w>Q^UESYd7?r*GAmMR;kro32M zU*B4@mUXgZX>;SLy=grwWwAsI*!8p>gdNAOMV{*g+IJdCpT{TQTTp<^sBo=gTMte5zvD(X7q++Nu9=2CdgRW>%}_B}7s zd;VN|yB+9u*>CQO4_sgEv!9!e7FWHlh2JgcQS4C*1MT>M7p22|#%(9^G&jVzc{Jkv z6yK}gbap*cX-Bt}d0mMoqir>dp-1f~f^W^$-YE~Rt1nA@xtcfHZ8$;AlcsE>u4sUv-+c&#Q4VRc;+>HZ-=`j;)DLeHCiO!AhAC zBX3+WhVZFzq_L8NRDktwkU|U#pvr*hM?`N7#)8f=YL2o@eaC2|jE@O%ZeX|pUqBor zKnDrj0ZK-n!O#K%4f_2A9RqL36$66XJZ%Ay-+X&GD?1jb4o((kenZA_KWzmwlmm?R zixmBZ48s87uw{Wk>6+nm4b!)AJb*Q2p2-$s?2POOnulRvdeA&HBP>Don9V!EgyRAo ze%*6)UOk$uK0@9ar6ZhSjE;~w#+lc_=)S?>0Y<;Oiy6~&l*gWV?6eh(!Rj%w`Xx*e zbKSFqjr2ILfhTq{9D+wUFE9F3{cMK{^^lJYU4Us}+c%i66-} zAhf;EJ(X>cYSK)z>vy~$%{S)9JW>Ie#6&?_HV#n!YfFPt+w_Slm9XQ_%)@NHjrI!CUnh)xsGvt^%YOmVu0!*7}?YsG}K$ecEevDAq+ zlb~fnQ#uDBM{c>>;zPwbFmh_1#mpnwBj0>S1``waoX?6?(uD*Ot9|qID?Sy$>xi) zuAyh$W<3Kd^=oWhqLGQh%p!hTdgi(+uHjI3*kNEN$D4;B{`myHo)+{hZU z#;`Him(9$g{i%`9WR0RR0|w6<7cr8{P8kKv9L`MPQ-F3fGilWL3fT`_nmocs{So4X z*IiIJ_y96Phd#sVgyx0UPtkmy>Rde}#0|3F&r$SSI{1uveEHW`=s3^R2Sx{BbECk! zbE8Ng*w-(?hlI~`m&t!%enx6|@>JNDD+`82#fRt#j&5+FG&SSeRA6!sv#doHU$J12 zSoc{xV8Q3LxQ2@%CJe$ioj6)q?Bx=BNAM;TBY3dBX5BN0(=jO7JqIm@$3`V!(@Sq@a;@{3jKOEbM(W#T=`jOj)e3OWT;ir+zmzq=5tVW1@GlAJF!gN)JN;`wxOQFz<1#n(A8dqw@;+?_bt?f^VCP!@l*}d-KV#LSv1wPwZ+YM{BEiZ(jvK~V( z?$V5H{+=VQ-pZYMd%m1ha-4U#FP@8alIt|rkv(g+9n^!IA9{3NT9hfN>EbQIV8`E$ z3$HAuTl@fv!@v@EbIE57KuDtNsj@7|m~yB5Er9hI3r@#kef*M{+P{!m&-GnrLDFeF z!%mLH)$G1^sI+{8z%^^RvtZv!*U72Tm!fT7CFkb!9&3`7(vk0NB5%jy>QK_R#hFkl zSnCD1Hd*jXxAiNC6U<2Kr!Du`lMkAq+irMYvXj* Date: Fri, 29 Apr 2016 12:27:27 +0530 Subject: [PATCH 6/6] adding requrement.txt --- openstack-scripts/requirement.txt | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 openstack-scripts/requirement.txt diff --git a/openstack-scripts/requirement.txt b/openstack-scripts/requirement.txt new file mode 100644 index 0000000..f628b4f --- /dev/null +++ b/openstack-scripts/requirement.txt @@ -0,0 +1,62 @@ +Babel==2.3.3 +cliff==2.0.0 +cmd2==0.6.8 +configobj==5.0.6 +debtcollector==1.3.0 +Django==1.9.2 +django-filters==0.2.1 +django-rest-auth==0.6.0 +djangorestframework==3.3.2 +djangorestframework-jwt==1.7.2 +ecdsa==0.13 +Fabric==1.10.2 +fabtools==0.19.0 +funcsigs==1.0.0 +functools32==3.2.3.post2 +futures==3.0.5 +iso8601==0.1.11 +jsonpatch==1.13 +jsonpointer==1.10 +jsonschema==2.5.1 +keystoneauth1==2.6.0 +logging==0.4.9.6 +Markdown==2.6.5 +monotonic==1.0 +msgpack-python==0.4.7 +multiprocessing==2.6.2.1 +MySQL-python==1.2.5 +netaddr==0.7.18 +netifaces==0.10.4 +ordereddict==1.1 +oslo.config==3.9.0 +oslo.i18n==3.5.0 +oslo.serialization==2.4.0 +oslo.utils==3.8.0 +paramiko==1.15.2 +pbr==1.9.1 +pexpect==4.0.1 +positional==1.0.1 +prettytable==0.7.2 +ptyprocess==0.5.1 +pudb==2015.3 +pycrypto==2.6.1 +Pygments==2.0.2 +PyJWT==1.4.0 +pyparsing==2.1.1 +python-glanceclient==2.0.0 +python-group-based-policy-client==0.9.2 +python-heatclient==0.6.0 +python-keystoneclient==1.6.0 +python-neutronclient==2.6.0 +python-novaclient==2.17.0 +python-swiftclient==2.4.0 +pytz==2016.3 +PyYAML==3.11 +requests==2.9.1 +simplejson==3.8.2 +six==1.10.0 +stevedore==1.12.0 +unicodecsv==0.14.1 +urwid==1.3.0 +warlock==1.2.0 +wrapt==1.10.8