y6=)YzSSQTRMfBbDA}-vaVD|cMGPc
z8m?*;OjFe4Jqqr{0GojBIJWa49D)wf+cH{%`!OVAkV;q*iwLA(7<*X&u5pY!v)%_{
zctFBBM($F*tgZ$;i->wI@6CyjBMJ_PkP*Y0u!ZMQ1&8n;&6%ReV4xJ5Fb5fj%bHh!
zSPT!d84cU2TS#Zs2^N%UJL#6E3Xo@Q9AxEo6m?8|D-h(2A=
zt+d|TayW(~)GpKC>ZczA318&{W_zkW%PYGg
za#$qUCuSgA@2x=&whW71X$j5Zu7W(K367=D5{z=0gjmGDOH`OjE)grS}XawoIqRUQ@2aF+8T=I3A}k+`MTplcp7%wLG-kT?|jqhyZr0
zF+4@iR8zMyURGepF5-AKIDyZ~ct%3)((T!F6nqY!rwH-|Mk`A_ymm>fqA-^)32eWh
z;5j@mLC$LKun!}JN%_cODUe`C5AYz6^?{S6+F=fc#}?91vQcD*eIUZO8?_#r(&t7s
zv%s&bSAcW7WSlRy8(*7)wv`c{U;m#iaPcS`?>WpXxQI(c#iVh_7PW96
za}FBQKF!OrhPa@3y6Y83B{r4)19Q*7YtyOPsk1^+mt@UvRXM*JV;XEns@
zy@pRM{4aj06VfFp7mzr|hYB?CGwN?OVvWB7K5;|}&34ndFsyIAh_$VkksP~-8{fc9
zOV+FW@Ciids}2d@ixSx2W~`^J1eIx4V59GUlb_BkpCf!uT*hX)ymhE;xV3E_O+)Qx
zxmxMxC47RGG2Fs@nm9K$``%jv%g{T0pcQS5662|MbkK90-*4kuB~tVtvI+LKa8DAW
zPI)%czv)px_I@#&%jg_SY`utW%;}DK>=0S7Da7RC|}&Er!iq0+$jsf9ih>A*413m-hMSKyFvMxFLloyOs0
z)dJYu>7yr_j3%6fH;)X
z=~}?kl?*|*&obX@r+lOZYrrE|%g@`1!FG-&cVZLgm}cCCEw~$9oKtq74}19A&)+fJ
z1CPVR42JLo_TqW$!z*|Ir?4NdVFVZW*8d9*;;(oRf9L)`@vzU@{s7@c*53CS63qM~
zWG#um;RTPymZee79)#{Y4@g@PjiQi=sG>AC{@2?Gk=Unn^VN@GLxymFSsRo
v$uId|w47cZ7rleka-}u#J688R-d<`P!UTAV<$0o{Y1A$@jrX`)fj|8hMtjI6
literal 0
HcmV?d00001
diff --git a/WebRoot/WEB-INF/classes/com/platform/glusterfs/SizeInfo.class b/WebContent/WEB-INF/classes/com/platform/glusterfs/SizeInfo.class
similarity index 100%
rename from WebRoot/WEB-INF/classes/com/platform/glusterfs/SizeInfo.class
rename to WebContent/WEB-INF/classes/com/platform/glusterfs/SizeInfo.class
diff --git a/WebContent/WEB-INF/classes/com/platform/glusterfs/VolumeInfo.class b/WebContent/WEB-INF/classes/com/platform/glusterfs/VolumeInfo.class
new file mode 100644
index 0000000000000000000000000000000000000000..c3b3f95bc9171f84415110161e235703b64a2f9d
GIT binary patch
literal 10071
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
NlBu$aseNTT^&gG6ez^bu
delta 666
zcmX|;OGs2<7>1wscXZAfb($G3dGc0KZLEYYLV~s_qfOQ-grrF6A{KVDtBhJoB}FpQ
zWuS`@xr;&)g&?=NtX7dLTiQz8L}}k>w))=lfAH}>&l#>xSHEqD`}@hJ5L|t#F}^WB
z5riga7qvMf`km^DSM8_?yych32y27L1n0#hb+vxrC%VVzO%n;ifj>rnW_d@X7r&3r
z#9yj%fvR!lH;?n{9irX^u8cWCRDcrfNxdrAoor%|qdeglFF4L?T6jY%A1r_51XG;k
zE2sFzX{KpohIZyTqbxcU=A80uM!8_uE^4*SfJ-W;Q|oPR;EJ|zReQOn16xkVH9G%d|EP0bb^RM}`
-
- jfinal-demo
-
- index.html
- index.htm
- index.jsp
- default.html
- default.htm
- default.jsp
-
-
-
-
- jfinalF
- com.jfinal.core.JFinalFilter
-
- configClass
- com.platform.config.JfinalConfig
-
-
-
- jfinalF
- /*
-
-
+
+
+ JFinal-demo
+
+ index.html
+ index.htm
+ index.jsp
+ default.html
+ default.htm
+ default.jsp
+
+
+
+
+ jfinalF
+ com.jfinal.core.JFinalFilter
+
+ configClass
+ com.platform.config.JfinalConfig
+
+
+
+ jfinalF
+ /*
+
+
\ No newline at end of file
diff --git a/WebRoot/WEB-INF/classes/com/platform/config/JfinalConfig.class b/WebRoot/WEB-INF/classes/com/platform/config/JfinalConfig.class
deleted file mode 100644
index eba4ac8225b68c6ae8a4c3d5af135257489b3b27..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1386
zcmaizT~pIQ6o%hZ3MnCcG?gkJg_er6REdgS)xnE82u}SNaq5hBOPiK3X~HBa|H~Vk
z@xmYAk8(Vlgtka3H@kaw-+lHyyL*2B`S}aLK3*tD5sGcMZ(P_S=(=9tXuD3=>KX64
zmLu#&7$`^+Hl*r2oE>ToM;gM+E6cHh1Hx3L+9ISIZpTzHg;@>Lm?11SEyw&Y=%1S2
z7jbHv1ik6Dh20XKCF6K99h_M{VXJwUt2$vJGRrRgKsW)XQVF-+w0XVk*Q+fRS>zPx
zgtgoG422r*VVR)%X7I+me9wt+K9z4WtyG`Kh5w#Hn2&rN38!P59$_=dR=g@*5!Mrk
zLjfTh0gs))^xEb{;4-wF1RYaE;9>&!hKQg=@K5%jXF2@PN!(~LLarqsuh$845$&@(
z2;@yA!NN7k%HSdY8{^EhZCAk~!p^^s9(bYpCHd
ze@4;i5MEcB=i*Wrws3mJN#I#duRb=@u!YZl67q_zX0XRU!02^-1y2dvlWe~2`XiHs
z)yYKuT_^5{|f12dqv>buE2`rO|FRoL%B$vLPWKsbYe(kjH&y@P%U~X1!#NWYGvC
zJp#*P2>xE7327sbRc^WTu+FWtGZC>e5m5*c8`!)HQJ9D*hKLfjV#G(jXPHQ@rkC~Y
oE9`u&=}&Y+4o0ahgpX0eEN|0M9)stGDdsrEXCeGK<5JlF3qF}SKL7v#
diff --git a/WebRoot/WEB-INF/classes/com/platform/controller/GfsController.class b/WebRoot/WEB-INF/classes/com/platform/controller/GfsController.class
deleted file mode 100644
index 32869842109c139b8cd8d9fd55a0df923ed24447..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2209
zcma)7Yfl?T6g@-MEZEB^p0+*!gPR=SCHXU74KRy>|-8Q`i$IhCrz;LP|
zY1y;vlFsvW*EH`No-x1o$nf$Bf#w;jXnFSp&W*-41eBzcHN!ZEhz1ocD%u1F-zHTU
z8X~O_=+qEGvp`46Dw-?h!j|c-8(X$1(3NsBhP`39mfTm3ikG)a0way}o<#x+4q3&l
z`Jx3E1tNLVww>s9t`xl<=GA=~E}>r_?3(m(*UcB6z&oR<9pjmy+eUF)U-Mk6xSfzl
zHL@{h+s_=kTp;4Bh^n|I5IqHK(#Yh^8gm-1V?dyd;TwKz$|~`iuF+UU6%BACXE3O-!dafaHdh7UpMDMkOK8VjqUQ}L0&K*OV$
zMbGjqv!n<7KaktKFlI5YAt}MCd>bim3F?8AYyhZ_q?5>;!W75X&l-
zP731`UkxAEgptf!c2>rhB!OuSD_CW#8QClqN1aw{@tI1>Ue9=zQ%uA*C5lfpe2O);
zbLqI9yXzx-am6+yv!7|$z+)oL8>JPWM7HrJMH9$cda@%=3X|_9wU*@^5a>NiJ}fxM
z!U=E&QS}eN7glWlzLrecbtQT}+!=v&3{yFcb760{HXEi+6h3oCwuUn9v5?8P46G|d
zhPADEM&@bS*!5?VoM<@>+fqGYj@)c8GYNB-+LGh!e{+SDxn`+sll1VKQ+6}vg5^)X
zhDm-?#&L>p=JHoSph*r)t`x30bNOxMZl0%t|2yNa5RSir_T&}Xe?!MFv^C*8zwLf}
zJLArygS#%;v>*oExWFB!-%-B1jFS1(cvnvay~k<7JOD1TgxQRczwG`qmca~0g5
z4)ui&(AyWPVDSK*eTu)@N2&>r$NQ8D9x=zdz)y#jvHCk??GiL_kHCS;++AUnS6TBl
z^pjd01DL`fyJ-kZ7-o}NHs=AqR6JHRs
z&QALhUvV|dnfx_R6=sd%8+^;Bd(P(y{0!#lp;wS&i#Y=S3@urnC87L-eif643{g}F
zE_wMhaL7T}92iv0(!>*$mGL0d=*gsst6)8j9>4dfBL>n%Fo
b_Hjl7*D6j1Ax}PJq9*JRiIm4vKid8eTN4zF
diff --git a/WebRoot/WEB-INF/classes/com/platform/glusterfs/ClusterInfo.class b/WebRoot/WEB-INF/classes/com/platform/glusterfs/ClusterInfo.class
deleted file mode 100644
index 9e62fcaec2781a553fb278b72b3c0b17d4da3bb1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3515
zcma)8{dW{+6@K1iH#6BxAS@8v(!e%>LP(lT0tA{3v6uo$o1~PKU@6)To5^Nic4pa`
z1yV&tTCMd9v8{k#wN>$>YMSaoidKKJ=ky=&_(%Agzj#h7KJUz=I|)I}$+Pff!3T;$P_Kzn|4ZtOx`NHo>7{1Geg1Ch&}BnhzT^E($DG{
zOSkixCr+L+a-Kk~<>UoYqfRNG(TjR+#>h~z>r`gc$>)tyRzMxdS*C4zgIv75eNrGc
zH!>t@^UxpO@P)@X>MPGI$@X&d9^
z!bzj_lz!4O1d^jpPPZoYk}2OqVcmf5Xacop*02sLo%Lo+S76KN{|*tcu6AdfbCIag
zgYE5s&t=cFGGls?tLi7rysdlX68+e-{QE!z;)GW+?R@rb$zWE&CK~sn;aeWo-5FX>
zpasqKcmQn*S_L*P@melqQXSj%blcOg1zQE`W*pZWDawdcV;gQP4Ql4snfv>nr!*1#Nnvl_liD1HG;N1lF;9&)O1zJ{!P}Piv
zelTIp#(5(*RG2!Zo8JE1nX+lPIm0HdEm2%y(4zSsHC->OVjunO>FMrCbF+eOPo>G}
zbjfhbmX|i&v|Y9=Sr4Do@Cfz`#EnwPDG98PT3?LOWCMn9K*6H|tEvH)8)-O*Lu9OL
zK2Kt?)<#r}u(-K%@4a?*NN+nYO+Kz+6l2t*Z*uFA6|$k=i6u=SK&;|PO2?hFWQdzC
z5*UM%z&Iu}JcXld0c4A(n>Gt+V-(ZSj9!{B&Xf&1XJp%tt2ibg`laU68jj-`hQcjc
zCjHqKRa*@7Gj}sq#b;QBL8Ygi>9kC_tKwOK`x%Cv(ZIWYai!0d96PT<7hnd4kkc>)
zhEFxw0(DQOp?OJ(j)d}T1M)Bx%&>B*d070a;S^3Y7q)Sp-mhD<5T&+?fCo@V8b29ISuDA%bI7*b&DIV
z$S~&Na{_6`Yxg~96UOWU^CRoYQ1Qh;q3^#b$benc@MT;QP-b*@+>Z@;dYtc)J0nH9
zv^u~RZI>k@K*X<2k*|JnF~-xD&JiR?b=52eDgt3C+ApL7(baSU^*q=`dE>pzv
ztoAX12UjYLz`9SikP8V8!)qE+xKH-$1M>0%4L_7*Xjm-H$BkLpZhx%db=ftWWJ<;z
z&$PpVCY9chUE8(
zHQr((9XUwW2YZ-K<}inmM|6f>$Vzn03H%OkE0|*v{opQLqhVgQR;4J_EL+9z8OxrB
zd%Jr2_I7o5_4M>fBNYv=;d|23Evc}utU|(I`iB_3l$Vt{;gm}`r12wo<~Bp4DV7g
zzT+m=FIQ>tRkUCMHsBLn$P*gwqv4IdvHRuTHJ9ia?_%q1v^;&21GQrw>3KZ3fc9D(
zn@46IJ1giL>wF)L^Jq#AR4^#!Iv4OMf$M>2I1tq?;ISI~1>?!X6&$&Sc*k64RW@0{
zr)ztYC-^B;`>d~4JD7Z~KgM62Hctxl*WJM7RNVrmg|yYLq?DwUv@0n3kJ3!Pno?=X
ztKjT4Y)h%{#oxdx>D%+PcmqdLYOFVDC!do#u^1(fw8UOV)>rzxuat=>eZg01i7Lfw
z2Rl-+R6K}*bmmJ0d&laSW8h+bUas)i1avSLomkH^&SrF>4H-(h`PPd*o~j42i<5j0
zj$khbU={@opp1Pu#{n~oM{xlMaFNsc8#sik7{;3z!CQC?w^&?%#u(mbul@i};%~I@
zcTC_PIEsH_5+C9i?%=r4I2u>sgh=6_Xv0}Q;U|J*h6z_i3tqsBO#Eh1hp*tPO#UqQ
zcnM!)+Apx$UdC1;x`?0R>wJn+ex3e&lf1i1>9;6TxW0gI<1(>+hnSmbBd~krW4qs_
z>=l0NL;Xj1NWl&TL&>$RcSu%6fd~Y=jr;$3;3MqwA75S5`Y)1F$a>>d7Q-#tlEsqU
zQNh)*&c8wjwioHo
zOV~t^t%Tc2pxuNhODi308HSCUGay^(P@Irt0Bd~cvYGk
diff --git a/WebRoot/WEB-INF/classes/com/platform/glusterfs/ShowData.class b/WebRoot/WEB-INF/classes/com/platform/glusterfs/ShowData.class
deleted file mode 100644
index c34f2f1d163b37877a00f38e03f55fd8d11e9516..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3803
zcma)9`*#%O8Ga_&>`XQj5*LU@3Ji!sZY~M2*epe3kef+BmIjHfcG#WlPMDopW@ba8
zcxkn@ReM*8_A2cut(H^7HV|p4y=kjGJ*VgNALtMLsmDLSb1L-tW@eLJ5^DFH?9P1O
zdwt&LeZMd7UU~B}fGzl|j5-NxvraKpvUGpKaf_+ERrY+to$ykbf^&R_?&~sQ5?Uwq
zDLrNBc0RT5$fS|=CDdC^UPAk@P|<+6gqC5`
zHb%?EBZhlWKVlgYlEY3`x5jkW6z|bud|MD`0`+K9u>uN%^$VsaVcqaY;KM{)JYqHG
zSmmOz)3gj~-BKNI#&=CS&wzsz%D!o(M)VT(8Z&0z*8Q@}u=aek#wx?yR
zVg3ugcI#e&{t{S?wgjPBr(!*Bmat4jz0i{c%(bVnlOw}86%|O0#k(}75lKC-RGH)
zkYt=2dlVdya1%ZEX@0@bLXruOMzQ422$u&{d`h^Cnf8PuEFV(w01i`~A&Ln0RM#bn
zLB@kMb1f{Fg3oZMjXIiF&K9%@cC+TVTF!Ji^BkAn#__O<&w}luWF6brO`Gk$sv5ze
zg6?LFV`an68tIO41z9!@!`~8wuYhSS3jlL`&6sA&o(MUwq98(!yGGHOGQ`rPileaT
z$mB%U>7F&LFf1s{o@hPY1REt84yW4!nw4D@$3WGXZA=r4T8>6oDBw<=)}>%dg2Wyg
z$FzzWJVHjg1`mgkGrpcZ%KU?YE8_(&u@AyYp9$J($-%f+!FMDy
z<;q&mQLQJZZ6@5`V`kb3El(0?eEk6lc0xaXRMR#-TH>MRYa4nW+o<3bCLyMQf*(mx
zHQ_`H+J9Zc)$nsgjKMQ1eu@p`lwl
z@v8}(!+9C6SEfloyC59d7$|zrYsZ
zg6bQdU%4c4W*jKnzF9QJOwZ)KV$il7U-wOpcR>ho)0r&uE|fY*t#l(U<1HD#tsOu!
zym=K>{0_e-VH`o)m0`tAC$(Ro&9n`@$Wi=9Hbko66bawk__K_6NST28wUR3SBF3T|
zl*+Q1M8+w*+2E2QcoN<4ZWpRp$E!g-?}bcWT%Gt7hXR>@Vg=~nulO`3rHe?sf!5dg
zQimkJcbbXcBE^xvuhUGNcTCe)(1f(1Bo?sydDW`Kr3zytapZ*k#*X@E!<_hQR-IQ
zM#~94Z{%7%Hqn}hCfw`bo+R!{wb4i)(4s=g_bbs{Lg(RR_XXU}n0jY%$LM){qGuL&
z4aC}G@1XfST9fzAVwZHTJvN8?B)lB1-9L*=H`nUtFjj}RFrNJMEFO9Z8WjSQMTpOHGbIc(oWXc|!yJl|urUyCk0-rkc^1cmM?O3{Ah*kxTN_VfeZ}$<
zwA>!2)#T?Yrgxpe^6qxIRq1P&V|{aYs-7-r_REa->gfRJSOD}xgi`$bprD_n8X!Pv
z!nX}6USWE17vJvYg<}x+^7{eofXAmY_Tq6KY0qK=Cozgwc*?(u{Wy>N@i!d6-+6%l
zll%Y1;h<;-LV)Ls_I^+xQJ8;4MQg`D@Rguw>+v4Gim$OK&mf1d;~S*!N!*8TayL#d
zTk$QtKq8Ccwy~6<4N=@s^F?Z&)@a+%KLOPtn
zOZ;X-NL#2U+T>JFtCuUa`Yr(#JV<^&M0SK^=q4FPd)|iH6V-pd5I?M_ou0453jFwN
z&pap2<0mzw=(>oXQD=b?yH?t1g
zz~X8VPw=c=FvZei$Tk*<&{8SUPmj(0?g~FQ%_rS^i*k{a8IlY
zRGU%%A^Jl|*N9>8CJRu9OWYD;eM3#gkXJH9j
zDV;6^Xn_(+*{033P1`hWodgOkWrmiSmgz8U2TGS=w$9K_%g}8WlJvj#zV{^AGSKgv
zEcVlV=bn4d`Tw)rtG_<|)UyB<$bkUL1k-v`gH7o~G}oWX3^olUhO)U>ra#-XK9v|6
zjCCaYQvvt{6Lv-SM4J-Pjqx~3P&p9G8C`;gy3YI#Rwbg@
zY}=eMSFVKMY#V-52+rz^Cu7}1gF9lGtD`#-F+r#^)f-K$k7nZPvolz+TyHdpa@5+W
zfyK?{cE+=U8J+LyA)0!2c4umDdm>@n)*T&G3)Rgrn;y!=6HT4*Y>tAJJ@J8LG&hu?
zz^qXM%L}aR$z|fnfwmQG0h}kO*5+$X?U_t;zfu>(RMb{t8fFAAT`;9+qe?W}v?`U%
z=Ay}*jhVPW5FCgm_YcPUdV1Ch&M&siOt{n&;JUMkQQqxlLo0{kiN07yEj!1?T-4Ke
zhcxbg8Y;P>d
zpqn}N4)ZLta0!8HUO2xw!VrpNV%ecYE)vg1l0%7v3cs~BI&hi5AIoG?nGvpYy}iB)
zo#+mrOE5l9KE*p5S703jBpbhhEM{nTShz|snJc!8TrtHcN)9MhSKGJ-OakTHlUlN)
z5Km`O#j0y~6oTdeJ0y?}CNgFAoX+WI$HJVdiuXTx{k?U~A+p3U3E&y5>%Ddft
zYhws|==x-AA9r3%HOGe*_R-Ravh)TUH{vFSJ=vd#_Qsf?1WQYpJKESna2%f~GY;6e
z1-BB!XdmOHDCAt;(D@nMZsQKTj}g5yn(fwmB~3Qb{5`3JaviOkU>42OmdP;_Gi&j+
zm86)eKY}uaQcZ!l>kZ~pA1jO^A-&EdSpqfsxj5nPPrFHfW`Rn@>yp`5Fs>&T?cLoK
zO*^$>90_b#a5Z&}$W@N7O1RI$$4DP16RDXN9#CPrsAQO0__&IwMPo&jg+nynsQH9q
z;i9owNCMF9Ea%GeD$Ax4X6I*lme9o9P}aiZ4EBh#M|bQ=waX=A?DA7;mrKUpJln!I1(TYW
zj&i2X(*85%&uI%UDE}=bAQryO4o7Ep*SpziuHYF9-=W~PEq(PfgLnzw3*c|vdai>m
z6B~%_Yg!l0G4n7z{T*H=H&~t0an&ZhLoFOVo4vyK2}Zs?7v^KN_z!LT174y2!Dx=1
zB4c$yVHzqFck6t?DqUt0EAEf*;{aYOVTL1O<0mTZ`1<3?K84%QZ2Ti$Cv(!#Og5&V
z8IiTzcx5#VL=y=^9w#+SfT;xL~=Ga$K%r%3#&!g=%Sxwj=Th=#h
z`~tru%S^C#WY?&0VJa+2v+jmBS@@OW!7|N*H%aBb{yf3n8bz=LieSH0p{!EfJbAlx35s11X;)R%YV8ySbfG1;hyeFPWE2r565=dE99hBgV=|oGG3}J|(Dg
z6OUeK_U8GG%eHQ*pB*Uv)J9apVcIfRnbyq|gvzVd8`1G9Jl^ROs)}|{8mW~Iop;p)fbxCS`}xX;~8dbUmeXw4QMk8gUe-1
z0c}~#NY;*bmnwmyQKMsHb!vzSmq!$}$8&7_H&zEEOlRf;WNkFNldA<~5^60um(=PT
ziZu2`=F?$3){Mx4%{R|x=9Gvn({u}%Nu_d(5Ovy+8Me$+gF!X8jwisqeQJ1?EwiPL
zA)iiV=wInzt1WYFsh0-&tDuh-Y%XDMfi;ewMvrui9vaE_HcNP}8D9W@E<4SV`J{*D
z@m!`ZX|ZL2Zi-Bj$Xc?YG!NK8Ste}(;qj#4>}?!w%W}Dp#_619
zhQ>$|tCg0ESf}J-C9%4&PC4LJ$x0z=tJvq{Q6plutPvg~%F{#iYEj5Ljb4FM+}3aO
z5bZbIByRd)d)8zXBdYU-A){ZvW~Pp(+mn6FwrsY`;_R4x<~iUbV0tW`<$+$Xs948)
zq-p>kVe%LeIYrHbC0EmKW>ZUeT$#*#ImW3*v7V=uFebA#mQCu2a;s^t*lRI9&&|cM
zx$PsCa)Y!|w#jt?*t0J%JmbCmGM;5I@KwVq_OBA>BiEj2;eDZ2s^cN>}FS+?v}r@nx0ITA_1v{D-^@`X~JwB;(PVdgHDUg?yB
z5yNhO7QTu}FFqJsAJ4{_B-)c~0HeCmQmwzb`PntZyP>A5=_8s$OZ@}1MjNxo#-q4T
z8M9CAc_G`P;d3>Q12HI9fuBhOuNA
zZNs>ztKnN1cMKCkYld;D9Bnv>%LRwb(3NJW{3LqH@C`H`!-ipOdI(jN+QvJyqYd7x
zP;?l*DX}t-iyU8}^;V^`dmO`on%bskNd$T;Xd8?G5c7#{QGI
zxeObW*lpa#nV0L2(hi??+csLP{A!_vC*TE`!QV5n2z6M@zIh2hEkhexdEwE9HM~W+
z7Avp~7xB>Ej{R7P+xX@VT!Q!GQrwHRc!YNrpT=c4!O!31QB=XP*7(iwt;K%(PRjF|
z1drh^K9%wR3VZI$HIx|K+MK=
zG!cwu>>xaO6>B3!r)2fd+V-Zm*}C
z%JE75t*2XOaIONWoEm03&>Y~^uYu++!jp$a1(A_INO=WF4g9CjtU>4uO@A9ff)S<^
z6NdxFj|hfE$u|f_aX9TI3L1{b3>@9Ws*%Cf>I?fERG!fORj$j&*PlCMd0alNo5^aP=R?%&^}J!HRH&3Bf=(;6-4U641f-
zN&%|tF_D(vN?+YZL~p0R-^ZZ46HDpuRtCgs`n!|C&`t73N&ee#kWcsGFunIhd=y{8
z{dk6WzK93$GCq!<^7FsrVU6rn#;YE(Z+OW59AD7LPRF;YMFm|wzOFI$;VI1182hPn
zqQ!mOcsg(L0onM3JIhQCoz+d2E`&YzPbLLwftTlL1$%g*s
z1iq{CV;%(C>bHhH2}wytO;R)cAR#^aUou
zqqv-Q_S4Qmd<8jtmG~W}w@xs@Jyj5APk3lN;h^E??|;HS(?>HIX9kT%-X5xm^HI}0
z{0sh-tG*xS;@|LdCj}}Dj8q0^i%}dzN91l!}`o%y>p4CrtbCKf3jKorw8p-ZdJ6|8-sXwt+y^u?FTw
zuU?(jDax%^)13II7V>grfXLCte4&}87yAXP>@RU1e#Nx(Ykqz7CK~V-yMo`~O8l07
z{Jr+kT(cq1N7pz$s%3wms9Z)3OPu1NDz~Do8F9;ljj~f{Fq~zLR>$XJv%OmVq|#z|%=QFTVy`%i8Q}^qv8&$7^i!?=
z29?isQ^of>ufIAnThJIw$}vZLXpssmkpPdp7FJ4-$B-(-#l~(q3wOu_+%0G0K|Vh&
z)!MNu80Wx~o@1YM9BbiW8OK~u#)j<%CtI}OdM8`lff^Z4xBGRTHf@rUSIv=;a>+;F
zPOC4v*d{6F)tzDM7YKkmR3FVxrs$07r-l1+YPHTIii3^P#grivx*K1B?Q*Qp)s0?t
zEli^4skAR)exW^uu9=F7avr}lJs%O7&MSi%1)OU1OmB2dFQbGqPW65lNQh2Qy`tfi
z87bn_L}P?H81cZxSvr(tqGEU1=jh&X+{q+mL~Ym8GHK&+ncU5u-LHFfr>MVKP}JFS
zIDK`vqP(Rwpjx(8ONC;!Od*NFmgeA8!=lzohGRHzOwK!e}I@QbNV@M^&uup4Zqhrnz6s(peRlBOfRpFrPSY5m9ustlzhtS{=dZE(b2`MGj
zvbaE1W7t>l`h+Y!AuCQwdpS=BZi8YMWP@Ei1wrQVEBYpkm-z@uGfB39SS;juZxO$i
zT})Ch!6sRXm@MNrZA+1oHsoYEztOr72jn7rKrY6oq#cK46}~8|@tmx|i*gCxluPlJ
zbnrrMfz-<78vPrXBZ!NOKA%iGS|K4yE8>rrpsbY+-L$+emyr=Zo)})?e04r(;kt=SZzUbB`88nf0qj+vPU
z5!4OOZgtA2QIR4m&v2|FA3Czq#LXG@=Invoh!O@HLn{-IEA<1PRipuRr*K&Ss!*Rn
zxRfFin8*4N1b)CFaQQnE__g;);2xL2A*bv56ZvZ*{~Ar|Lawqq(?{HQ+uKKEF$LUWVl-Hakbp#DsRahuHttdSHI(N
z^?8r0&v;xt?r?P@4_$_ye^NG<;UV~aN6L@zrMZKctje7nVD`NQm2xYp
z$gN|fo7NM{wJXbV$;+1YZcQ@26m
zkIB}#)zUjGv0)j=Uke4P5b{BclMm_TRog;oXL%tl#?~}gLeoKNx~HV3l&5J4*Ho)i
znhn)%7`dH~v0~m|prq2>a7~A#UwZf!4f{`@OAo
rIqsU`xoZNAG#_qY6HsLFcm8tWO=MW^%QTzH*t$)a`PVnz_&2k
diff --git a/WebRoot/WEB-INF/classes/com/platform/service/VolumeService.class b/WebRoot/WEB-INF/classes/com/platform/service/VolumeService.class
deleted file mode 100644
index 5b3ac2c74e2e1e1bf9845da78baf5335c02e67d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5197
zcmbVQ33yc175?vJ$jeM_hRFobR}%$9AORdjL7fB?10m56&_F1-J|-{8;AAGwOoCW#
zt*y4z*4EaxNUPPhny$7kj6|&34XdqP)Y{f+SG#K$tzDJ)pZ8`>2-*VQy!-CG=bZoi
zXSw(B=z;ql0C0lx8t^F0jV1@fLvbt9mrM$h#UqZx&Yc(Px?>`bQm!`6@$9k9ckIdOZqGuhv7rq=*s+MRxmWX9m
z(u0MKJqq5|WUuWUQix+klX=#mH>2!1Blyvw&-5S$S
zsW81Wmaw~q2e;X&jn=j}!G}7NQ7hhKrDF1)o2+bcfcjB^dW|uGk`tYG@Lg8HlAP#p9s4#dv5E
z>gL->%B?$-iX}))$HZXRiA*dL
zv-1VCMqYRN(Jnl-qf=uYx>!(YJL7sgvou>>t<8-+!qEnevv4+vFNPvHoXBiQ#u7w1
z?_hEzOgp?)VWWblx6h9@^k{6xo5@u)naEhN1asktQXQ=WR;t^+c-T%v?dHa|P1XTQ%N>D-L+L_O8^5mGDpk$YN5IuP=4$}eHA{gpd!NL%^IJ;
zEeg}pL-81EWWmAEoHIEjqUVzupAs&nk-d(gYTSlV1Gkg4V!L4T()bKM%TAGY@{{S*
zA+lG>_Ah9BQNmcAudg$0*8MJQmBlY>+=;uGfb@4lrsM-$0xLIV;GVLcvpPA<((vPM
zWHs)^UfSw)ri$6US}fkDu}=~qC<$CzQL=co^wI}39u%w8otinKnaIg
zcAXq|PS~7g(%2)Sqw=#~+<90swIkQvOM9gpJ&$NSif>aR9hUT9S}#9XG|I0Nh48i|
z9p1F+!-F%cmhu{n06{9
zheA`S=^VQyd~X~`C3i^MaXRl)__2W>Da@M1cFo)s@Whg6h=(n&Z)qjH7Qq1_!aR)TO=_&iF?<&r+SQ1~Si(1jWAoN3J18}SuvYFvm@1F&%stmN
z-GgJYSlY$s>@1c?yry@*CuDlZ5K)L!j;dG8$}ya#@DSP})ApgA(q}{r(=exHai&Pg
zV11;@tlE#|W|b@FALYEiAm=lEq3$d;?S`L%zAU!L;<*aD$Dc8cEG~Rl7DBzUVB~f7
zWwAX!9^%-#CW~}_Vn@UmdW&ef{6=Wg@MiJ$QTR-wf`g(85u?;q#hG_!acy45brFAl
zczvWgKm2e+=eUW~2uh)0`Y3KPrx)A_?87e7usaeo1EG&)aZ{w$tgToY37NItrI9)_
zXoj-5b;*9{C1dzBy(GjSk$r9y4NJ_>7(VZTzzz~N=X~xW#p<%SgAZ*6#_%N%DZe|5
zJz0!#u6n}U{br3B9K%;U*eu8#E-xUtHCa3)p=gp&d_&=8X4F0MRxyTeipsVuz7+{9
z5_KZH*fiY1C_)kAF3gg6d`EtMAb}UX2e4=_ezUmarCBs#SpESTx
zEQr|%@&oN~=HeX8=ideVWNO4(G@%QNa5i&tGoM?SljrkmZUo2S3LMXyWEj_D8R=M#
zTllSZJ5IqJh~R#XA4Cfe_Z4`Onx4j~cowJO*Ek(7qg7R)P06>C<}<*rqY%zehw*9R
zOx1u+HJ8tMyk{-JdbI`{R2R-tn|a?n58Wz?O=>%OR05mT4t}a!jxFk1Y*p9e9CZUd
z-i`Cst^D@bgA3Iou+$UO@hngO=g_BKLd;`eyC;aa$HbuLNF+Rqu)wnnY0oLhcvkRE
zFO~QtW=gf?DzVD5oalc>_JW>c@pF#YA3XE%3;dE@V2-B&zv7%1E7c41@Hy7%TJ<=7
zgWs|NZBY;5cU-L^XSMh}SABR?t;Zi^qynlMf8?rPnQSJ1qP}YS{W6~CNYnf0@d8(C
z$ia2^GbI9K;wt|D;f{`{xl&wmU4yi)MzRr=#%e-%|ZoUaye9w^{EP{27(oYJ;#LhU$~!Z5%P^NX1O
zZsRZQuL8z#5~?Sx7--{~f%d|#`f;N49cmi_ub_p3)5ft0!9(nHl)Dg0QLMm>H!hS1
zxXVy volumeList = CacheTreeData.getVolumeList();
- if (null == volumeList) {
- JSONObject jsondata = JSONObject.fromObject(new ArrayList());
- renderJson(jsondata.toString());
- }
- for (VolumeEntity volume : volumeList) {
- if (null != volume.getPath()) {
-// 获得 folder 目录
- List list = new ArrayList();
- FolderNode currNode = getFolder(volume.getPath());
- if (null != currNode && null != currNode.getChildNodes()) {
- list.addAll(currNode.getChildNodes());
- }
- volume.setFolder(list);
- }
- }
- JSONObject jsondata = JSONObject.fromObject(volumeList);
- renderJson(jsondata.toString());
- }
-
- public FolderNode getFolder(String path) {
- FolderNode result = getFolder.findByPath(path);
- return result;
- }
-
-}
+package com.platform.controller;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import com.alibaba.druid.util.DaemonThreadFactory;
+import com.jfinal.core.Controller;
+import com.platform.entities.FolderNode;
+import com.platform.entities.VolumeEntity;
+import com.platform.utils.CacheTreeData;
+import com.platform.utils.ThreadVolume;
+import com.platform.utils.getTreeDataByPath;
+
+public class GfsController extends Controller {
+
+ /** gfs目录树形查询 */
+ private getTreeDataByPath getFolder = new getTreeDataByPath();
+
+ /**
+ * 首页-"/gfs"下没有匹配到的路径时的请求方法
+ */
+ public void index() {
+ renderText("hello gfs !");
+ }
+
+ public void getAllvolume(){
+ Date a = new Date();
+ //查询volume信息
+ new ThreadVolume().getVolumeMsg();
+ //获得volume信息
+ List volumeList = CacheTreeData.getVolumeList();
+ if (null == volumeList) {
+ JSONObject jsondata = JSONObject.fromObject(new ArrayList());
+ renderJson(jsondata.toString());
+ }
+ for (VolumeEntity volume : volumeList) {
+ if (null != volume.getPath()) {
+// 获得 folder 目录
+ List list = new ArrayList();
+ FolderNode currNode = getFolder(volume.getPath());
+ if (null != currNode && null != currNode.getChildNodes()) {
+ list.addAll(currNode.getChildNodes());
+ }
+ volume.setFolder(list);
+ }
+ }
+ List folList = CacheTreeData.getFolders();
+ JSONArray jsondata = JSONArray.fromObject(volumeList);
+ JSONArray jsonfold = JSONArray.fromObject(folList);
+ Date b = new Date();
+ renderJson(jsondata.toString()+" :"+jsonfold.toString()+ " :"+ (b.getTime()-a.getTime()));
+ }
+
+ public FolderNode getFolder(String path) {
+ FolderNode result = getFolder.findByPath(path);
+ return result;
+ }
+
+}
diff --git a/src/com/platform/controller/HelloController.java b/src/com/platform/controller/HelloController.java
index 3cfad193..90c0ffcb 100644
--- a/src/com/platform/controller/HelloController.java
+++ b/src/com/platform/controller/HelloController.java
@@ -1,48 +1,48 @@
-package com.platform.controller;
-
-import java.util.ArrayList;
-import java.util.List;
-import net.sf.json.JSONObject;
-import com.jfinal.core.Controller;
-import com.platform.entities.FolderNode;
-import com.platform.form.baseForm;
-
-public class HelloController extends Controller {
-
- public void index() {
- renderText("hello jfinal index !");
- }
-
- public void tojson() {
- renderText("hello jfinal tojson !");
- }
-
- public void gain() {
- baseForm form = new baseForm();
- form.setId("12");
- form.setName("n3");
-
- String base = getPara("jsondata");
- System.err.println(base);
- if (null != base) {
- FolderNode f = new FolderNode();
- f.setIsFolder(2);
- f.setName("1");
- f.setPath("/da");
- FolderNode f1 = new FolderNode();
- f1.setIsFolder(2);
- f1.setName("1");
- f1.setPath("/da");
- List lis = new ArrayList();
- lis.add(f1);
- f.setChildNodes(lis);
- JSONObject jsondata = JSONObject.fromObject(f);
- renderJson(jsondata.toString());
- }
- else {
- renderText("hello jfinal gaindata ! ");
- }
- }
-
-
-}
+package com.platform.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import net.sf.json.JSONObject;
+import com.jfinal.core.Controller;
+import com.platform.entities.FolderNode;
+import com.platform.form.baseForm;
+
+public class HelloController extends Controller {
+
+ public void index() {
+ renderText("hello jfinal index !");
+ }
+
+ public void tojson() {
+ renderText("hello jfinal tojson !");
+ }
+
+ public void gain() {
+ baseForm form = new baseForm();
+ form.setId("12");
+ form.setName("n3");
+
+ String base = getPara("jsondata");
+ System.err.println(base);
+ if (null != base) {
+ FolderNode f = new FolderNode();
+ f.setIsFolder(2);
+ f.setName("1");
+ f.setPath("/da");
+ FolderNode f1 = new FolderNode();
+ f1.setIsFolder(2);
+ f1.setName("1");
+ f1.setPath("/da");
+ List lis = new ArrayList();
+ lis.add(f1);
+ f.setChildNodes(lis);
+ JSONObject jsondata = JSONObject.fromObject(f);
+ renderJson(jsondata.toString());
+ }
+ else {
+ renderText("hello jfinal gaindata ! ");
+ }
+ }
+
+
+}
diff --git a/src/com/platform/entities/Brick.java b/src/com/platform/entities/Brick.java
index e6701dab..53337ac9 100644
--- a/src/com/platform/entities/Brick.java
+++ b/src/com/platform/entities/Brick.java
@@ -1,110 +1,110 @@
-
-/**
- * 文件名 : Brick.java
- * 版权 : <版权/公司名>
- * 描述 : <描述>
- * @author chen
- * 版本 : <版本>
- * 修改时间: 2016年9月9日
- * 修改内容: <修改内容>
- */
-package com.platform.entities;
-
-/**
- * <一句话功能简述> volume 下的 块 对象
- * <功能详细描述>
- * @author chen
- * @version [版本号,2016年9月9日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-
-public class Brick {
-
- /** volume总大小 */
- private double availableSize;
-
- /** volume已使用大小 */
- private double usedSize;
-
- /** ip */
- private String ip;
-
- /** 路径 */
- private String path;
-
- /**
- * true 有连接, false: 失去连接
- */
- private boolean status;
-
- /**
- * @return the availableSize
- */
- public double getAvailableSize() {
- return availableSize;
- }
-
- /**
- * @param availableSize the availableSize to set
- */
- public void setAvailableSize(double availableSize) {
- this.availableSize = availableSize;
- }
-
- /**
- * @return the usedSize
- */
- public double getUsedSize() {
- return usedSize;
- }
-
- /**
- * @param usedSize the usedSize to set
- */
- public void setUsedSize(double usedSize) {
- this.usedSize = usedSize;
- }
-
- /**
- * @return the ip
- */
- public String getIp() {
- return ip;
- }
-
- /**
- * @param ip the ip to set
- */
- public void setIp(String ip) {
- this.ip = ip;
- }
-
- /**
- * @return the path
- */
- public String getPath() {
- return path;
- }
-
- /**
- * @param path the path to set
- */
- public void setPath(String path) {
- this.path = path;
- }
-
- /**
- * @return the status
- */
- public boolean isStatus() {
- return status;
- }
-
- /**
- * @param status the status to set
- */
- public void setStatus(boolean status) {
- this.status = status;
- }
-}
+
+/**
+ * 文件名 : Brick.java
+ * 版权 : <版权/公司名>
+ * 描述 : <描述>
+ * @author chen
+ * 版本 : <版本>
+ * 修改时间: 2016年9月9日
+ * 修改内容: <修改内容>
+ */
+package com.platform.entities;
+
+/**
+ * <一句话功能简述> volume 下的 块 对象
+ * <功能详细描述>
+ * @author chen
+ * @version [版本号,2016年9月9日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+
+public class Brick {
+
+ /** volume总大小 */
+ private double availableSize;
+
+ /** volume已使用大小 */
+ private double usedSize;
+
+ /** ip */
+ private String ip;
+
+ /** 路径 */
+ private String path;
+
+ /**
+ * true 有连接, false: 失去连接
+ */
+ private boolean status;
+
+ /**
+ * @return the availableSize
+ */
+ public double getAvailableSize() {
+ return availableSize;
+ }
+
+ /**
+ * @param availableSize the availableSize to set
+ */
+ public void setAvailableSize(double availableSize) {
+ this.availableSize = availableSize;
+ }
+
+ /**
+ * @return the usedSize
+ */
+ public double getUsedSize() {
+ return usedSize;
+ }
+
+ /**
+ * @param usedSize the usedSize to set
+ */
+ public void setUsedSize(double usedSize) {
+ this.usedSize = usedSize;
+ }
+
+ /**
+ * @return the ip
+ */
+ public String getIp() {
+ return ip;
+ }
+
+ /**
+ * @param ip the ip to set
+ */
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ /**
+ * @return the path
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @param path the path to set
+ */
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ /**
+ * @return the status
+ */
+ public boolean isStatus() {
+ return status;
+ }
+
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(boolean status) {
+ this.status = status;
+ }
+}
diff --git a/src/com/platform/entities/FolderNode.java b/src/com/platform/entities/FolderNode.java
index 5a9a56b7..e9bc91da 100644
--- a/src/com/platform/entities/FolderNode.java
+++ b/src/com/platform/entities/FolderNode.java
@@ -1,65 +1,65 @@
-package com.platform.entities;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class FolderNode {
- private String name;
- private int isFolder; // 1 is file and other integer is folder show children number
- private String path;
- private List childNodes = new ArrayList();
-
-
- public FolderNode() {
- // TODO Auto-generated constructor stub
- }
-
-
- public FolderNode(String name) {
- this.name = name;
- }
-
- public FolderNode(String name, int isFolder) {
- this.name = name;
- this.isFolder = isFolder;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return the isFolder
- */
- public int getIsFolder() {
- return isFolder;
- }
-
- /**
- * @param isFolder the isFolder to set
- */
- public void setIsFolder(int isFolder) {
- this.isFolder = isFolder;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- public List getChildNodes() {
- return childNodes;
- }
-
- public void setChildNodes(List childNodes) {
- this.childNodes = childNodes;
- }
-
-}
+package com.platform.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FolderNode {
+ private String name;
+ private int isFolder; // 1 is file and other integer is folder show children number
+ private String path;
+ private List childNodes = new ArrayList();
+
+
+ public FolderNode() {
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public FolderNode(String name) {
+ this.name = name;
+ }
+
+ public FolderNode(String name, int isFolder) {
+ this.name = name;
+ this.isFolder = isFolder;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the isFolder
+ */
+ public int getIsFolder() {
+ return isFolder;
+ }
+
+ /**
+ * @param isFolder the isFolder to set
+ */
+ public void setIsFolder(int isFolder) {
+ this.isFolder = isFolder;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public List getChildNodes() {
+ return childNodes;
+ }
+
+ public void setChildNodes(List childNodes) {
+ this.childNodes = childNodes;
+ }
+
+}
diff --git a/src/com/platform/entities/VolumeEntity.java b/src/com/platform/entities/VolumeEntity.java
index d274af95..b562e9c1 100644
--- a/src/com/platform/entities/VolumeEntity.java
+++ b/src/com/platform/entities/VolumeEntity.java
@@ -1,164 +1,164 @@
-
-/**
- * 文件名 : VolumeEntity.java
- * 版权 : <版权/公司名>
- * 描述 : <描述>
- * @author chen
- * 版本 : <版本>
- * 修改时间: 2016年9月9日
- * 修改内容: <修改内容>
- */
-package com.platform.entities;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <一句话功能简述> gfs的 volume 对象
- * <功能详细描述>
- * @author chen
- * @version [版本号,2016年9月9日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-
-public class VolumeEntity {
-
- /** volume总大小 */
- private double allSize;
-
- /** volume已使用大小 */
- private double usedSize;
-
- /** volume名称 */
- private String name;
-
- /** 挂载点 */
- private String path;
-
- /** * exist,正常返回状态Started,Stopped,Created */
- private boolean status;
-
- private String type;
-
- /** volume树形目录 */
- private List folder = new ArrayList();
-
- /** volume的 块 */
- private List brick = new ArrayList();
-
- /**
- * @return the allSize
- */
- public double getAllSize() {
- return allSize;
- }
-
- /**
- * @param allSize the allSize to set
- */
- public void setAllSize(double allSize) {
- this.allSize = allSize;
- }
-
- /**
- * @return the usedSize
- */
- public double getUsedSize() {
- return usedSize;
- }
-
- /**
- * @param usedSize the usedSize to set
- */
- public void setUsedSize(double usedSize) {
- this.usedSize = usedSize;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return the path
- */
- public String getPath() {
- return path;
- }
-
- /**
- * @param path the path to set
- */
- public void setPath(String path) {
- this.path = path;
- }
-
-
- /**
- * @return the status
- */
- public boolean isStatus() {
- return status;
- }
-
- /**
- * @param status the status to set
- */
- public void setStatus(boolean status) {
- this.status = status;
- }
-
- /**
- * @return the type
- */
- public String getType() {
- return type;
- }
-
- /**
- * @param type the type to set
- */
- public void setType(String type) {
- this.type = type;
- }
-
- /**
- * @return the folder
- */
- public List getFolder() {
- return folder;
- }
-
- /**
- * @param folder the folder to set
- */
- public void setFolder(List folder) {
- this.folder = folder;
- }
-
- /**
- * @return the brick
- */
- public List getBrick() {
- return brick;
- }
-
- /**
- * @param brick the brick to set
- */
- public void setBrick(List brick) {
- this.brick = brick;
- }
-
-
-}
+
+/**
+ * 文件名 : VolumeEntity.java
+ * 版权 : <版权/公司名>
+ * 描述 : <描述>
+ * @author chen
+ * 版本 : <版本>
+ * 修改时间: 2016年9月9日
+ * 修改内容: <修改内容>
+ */
+package com.platform.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <一句话功能简述> gfs的 volume 对象
+ * <功能详细描述>
+ * @author chen
+ * @version [版本号,2016年9月9日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+
+public class VolumeEntity {
+
+ /** volume总大小 */
+ private double allSize;
+
+ /** volume已使用大小 */
+ private double usedSize;
+
+ /** volume名称 */
+ private String name;
+
+ /** 挂载点 */
+ private String path;
+
+ /** * exist,正常返回状态Started,Stopped,Created */
+ private boolean status;
+
+ private String type;
+
+ /** volume树形目录 */
+ private List folder = new ArrayList();
+
+ /** volume的 块 */
+ private List brick = new ArrayList();
+
+ /**
+ * @return the allSize
+ */
+ public double getAllSize() {
+ return allSize;
+ }
+
+ /**
+ * @param allSize the allSize to set
+ */
+ public void setAllSize(double allSize) {
+ this.allSize = allSize;
+ }
+
+ /**
+ * @return the usedSize
+ */
+ public double getUsedSize() {
+ return usedSize;
+ }
+
+ /**
+ * @param usedSize the usedSize to set
+ */
+ public void setUsedSize(double usedSize) {
+ this.usedSize = usedSize;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the path
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @param path the path to set
+ */
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+
+ /**
+ * @return the status
+ */
+ public boolean isStatus() {
+ return status;
+ }
+
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(boolean status) {
+ this.status = status;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * @return the folder
+ */
+ public List getFolder() {
+ return folder;
+ }
+
+ /**
+ * @param folder the folder to set
+ */
+ public void setFolder(List folder) {
+ this.folder = folder;
+ }
+
+ /**
+ * @return the brick
+ */
+ public List getBrick() {
+ return brick;
+ }
+
+ /**
+ * @param brick the brick to set
+ */
+ public void setBrick(List brick) {
+ this.brick = brick;
+ }
+
+
+}
diff --git a/src/com/platform/form/Bean2MapUtils.java b/src/com/platform/form/Bean2MapUtils.java
index 0f2ffc0a..e0ff907b 100644
--- a/src/com/platform/form/Bean2MapUtils.java
+++ b/src/com/platform/form/Bean2MapUtils.java
@@ -1,87 +1,87 @@
-package com.platform.form;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-public class Bean2MapUtils {
-
- /**
- * 将一个 Map 对象转化为一个 JavaBean
- * @param type 要转化的类型
- * @param map 包含属性值的 map
- * @return 转化出来的 JavaBean 对象
- * @throws IntrospectionException
- * 如果分析类属性失败
- * @throws IllegalAccessException
- * 如果实例化 JavaBean 失败
- * @throws InstantiationException
- * 如果实例化 JavaBean 失败
- * @throws InvocationTargetException
- * 如果调用属性的 setter 方法失败
- */
- public static Object convertMap(Class type, Map map)
- throws IntrospectionException, IllegalAccessException,
- InstantiationException, InvocationTargetException {
- BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
- Object obj = type.newInstance(); // 创建 JavaBean 对象
-
- // 给 JavaBean 对象的属性赋值
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (int i = 0; i< propertyDescriptors.length; i++) {
- PropertyDescriptor descriptor = propertyDescriptors[i];
- String propertyName = descriptor.getName();
- try{
- if (map.containsKey(propertyName)) {
- // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
- Object value = map.get(propertyName);
-
- Object[] args = new Object[1];
- args[0] = value;
-
- descriptor.getWriteMethod().invoke(obj, args);
- }
- }
- catch(Exception e){
-
- }
- }
- return obj;
- }
-
- /**
- * 将一个 JavaBean 对象转化为一个 Map
- * @param bean 要转化的JavaBean 对象
- * @return 转化出来的 Map 对象
- * @throws IntrospectionException 如果分析类属性失败
- * @throws IllegalAccessException 如果实例化 JavaBean 失败
- * @throws InvocationTargetException 如果调用属性的 setter 方法失败
- */
- public static Map convertBean(Object bean)
- throws IntrospectionException, IllegalAccessException, InvocationTargetException {
- Class type = bean.getClass();
- Map returnMap = new HashMap();
- BeanInfo beanInfo = Introspector.getBeanInfo(type);
-
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (int i = 0; i< propertyDescriptors.length; i++) {
- PropertyDescriptor descriptor = propertyDescriptors[i];
- String propertyName = descriptor.getName();
- if (!propertyName.equals("class")) {
- Method readMethod = descriptor.getReadMethod();
- Object result = readMethod.invoke(bean, new Object[0]);
- if (result != null) {
- returnMap.put(propertyName, result);
- } else {
- returnMap.put(propertyName, "");
- }
- }
- }
- return returnMap;
- }
-}
+package com.platform.form;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Bean2MapUtils {
+
+ /**
+ * 将一个 Map 对象转化为一个 JavaBean
+ * @param type 要转化的类型
+ * @param map 包含属性值的 map
+ * @return 转化出来的 JavaBean 对象
+ * @throws IntrospectionException
+ * 如果分析类属性失败
+ * @throws IllegalAccessException
+ * 如果实例化 JavaBean 失败
+ * @throws InstantiationException
+ * 如果实例化 JavaBean 失败
+ * @throws InvocationTargetException
+ * 如果调用属性的 setter 方法失败
+ */
+ public static Object convertMap(Class type, Map map)
+ throws IntrospectionException, IllegalAccessException,
+ InstantiationException, InvocationTargetException {
+ BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
+ Object obj = type.newInstance(); // 创建 JavaBean 对象
+
+ // 给 JavaBean 对象的属性赋值
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ for (int i = 0; i< propertyDescriptors.length; i++) {
+ PropertyDescriptor descriptor = propertyDescriptors[i];
+ String propertyName = descriptor.getName();
+ try{
+ if (map.containsKey(propertyName)) {
+ // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
+ Object value = map.get(propertyName);
+
+ Object[] args = new Object[1];
+ args[0] = value;
+
+ descriptor.getWriteMethod().invoke(obj, args);
+ }
+ }
+ catch(Exception e){
+
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 将一个 JavaBean 对象转化为一个 Map
+ * @param bean 要转化的JavaBean 对象
+ * @return 转化出来的 Map 对象
+ * @throws IntrospectionException 如果分析类属性失败
+ * @throws IllegalAccessException 如果实例化 JavaBean 失败
+ * @throws InvocationTargetException 如果调用属性的 setter 方法失败
+ */
+ public static Map convertBean(Object bean)
+ throws IntrospectionException, IllegalAccessException, InvocationTargetException {
+ Class type = bean.getClass();
+ Map returnMap = new HashMap();
+ BeanInfo beanInfo = Introspector.getBeanInfo(type);
+
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ for (int i = 0; i< propertyDescriptors.length; i++) {
+ PropertyDescriptor descriptor = propertyDescriptors[i];
+ String propertyName = descriptor.getName();
+ if (!propertyName.equals("class")) {
+ Method readMethod = descriptor.getReadMethod();
+ Object result = readMethod.invoke(bean, new Object[0]);
+ if (result != null) {
+ returnMap.put(propertyName, result);
+ } else {
+ returnMap.put(propertyName, "");
+ }
+ }
+ }
+ return returnMap;
+ }
+}
diff --git a/src/com/platform/form/baseForm.java b/src/com/platform/form/baseForm.java
index 101230a7..264f7c84 100644
--- a/src/com/platform/form/baseForm.java
+++ b/src/com/platform/form/baseForm.java
@@ -1,55 +1,55 @@
-package com.platform.form;
-
-public class baseForm {
-
- private String id;
-
- private String name;
-
- private baseForm base;
-
- /**
- * @return the id
- */
- public String getId() {
- return id;
- }
-
- /**
- * @param id the id to set
- */
- public void setId(String id) {
- this.id = id;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return the base
- */
- public baseForm getBase() {
- return base;
- }
-
- /**
- * @param base the base to set
- */
- public void setBase(baseForm base) {
- this.base = base;
- }
-
-
-
-}
+package com.platform.form;
+
+public class baseForm {
+
+ private String id;
+
+ private String name;
+
+ private baseForm base;
+
+ /**
+ * @return the id
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the base
+ */
+ public baseForm getBase() {
+ return base;
+ }
+
+ /**
+ * @param base the base to set
+ */
+ public void setBase(baseForm base) {
+ this.base = base;
+ }
+
+
+
+}
diff --git a/src/com/platform/glusterfs/CheckoutMD5.java b/src/com/platform/glusterfs/CheckoutMD5.java
index 3e682198..33b5d3ad 100644
--- a/src/com/platform/glusterfs/CheckoutMD5.java
+++ b/src/com/platform/glusterfs/CheckoutMD5.java
@@ -1,103 +1,103 @@
-package com.platform.glusterfs;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import com.platform.utils.Constant;
-
-public class CheckoutMD5 {
- public static Logger log = Logger.getLogger(CheckoutMD5.class);
- String sourcePath;
- String destPath;
- String dataName;
- // String cmd_crateSourceMD5File="find "+sourcePath+dataName+"/app/ -type f
- // -print0 | xargs -0 md5sum | sort >"+deskPath+dataName+"_md5.txt";
- String cmd_getSourceMD5File;
- // String cmd_crateDestMD5File="find "+destPath+dataName+"/app/ -type f
- // -print0 | xargs -0 md5sum | sort >"+deskPath+dataName+"_md5.txt";
- String cmd_getDestMD5File;
- Map source_md5 = new HashMap();
- Map dest_md5 = new HashMap();
-
- public CheckoutMD5() {
- // TODO Auto-generated constructor stub
- }
-
- public CheckoutMD5(String sourcePath, String destPath, String dataName) {
- // TODO Auto-generated constructor stub
- this.sourcePath = sourcePath;
- this.destPath = destPath;
- this.dataName = dataName;
- cmd_getSourceMD5File = "find " + sourcePath + dataName + "/app/ -type f -print0 | xargs -0 md5sum | sort ";
- cmd_getDestMD5File = "find " + destPath + dataName + "/app/ -type f -print0 | xargs -0 md5sum | sort ";
- }
-
- /**
- * 文件夹校验 校验sourcePath和destPath是否完全相同,如果相同,返回1;
- * 如果不相同,返回0,如果获取文件MD5出错,返回-1;如何源文件不存在返回-2;目标文件不存在,返回-3;
- *
- * @param sourcePath
- * @param destPath
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int checkoutMD5Folder(String sourcePath, String destPath) {
- log.info("start checkout md5 "+sourcePath+" and "+ destPath);
- List wrong_files = new ArrayList();
- String source_cmd = "find " + sourcePath + " -type f -print0 | xargs -0 md5sum";
- String dest_cmd = "find " + destPath + " -type f -print0 | xargs -0 md5sum";
- List sourceReStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(source_cmd);
- if (sourceReStrings == null || sourceReStrings.size() == 0) {
- log.error("get " + sourcePath + " MD5 error!");
- return -1;
- }
- if(sourceReStrings.get(0).contains(Constant.noSuchFile)){
- log.error(sourcePath+" is not exist!");
- return -2;
- }
- List destReStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(dest_cmd);
- if (destReStrings == null || destReStrings.size() == 0) {
- log.error("get " + destReStrings + " MD5 error!");
- return -1;
- }
- if(destReStrings.get(0).contains(Constant.noSuchFile)){
- log.error(destPath+" is not exist!");
- return -3;
- }
- Map source_md5 = new HashMap();
- Map dest_md5 = new HashMap();
- for (String line : sourceReStrings) {
- String[] lines = line.split(" ");
- String key = lines[1].replace(sourcePath, "").trim();
- String value = lines[0].trim();
- source_md5.put(key, value);
- }
- for (String line : destReStrings) {
- String[] lines = line.split(" ");
- String key = lines[1].replace(destPath, "").trim();
- String value = lines[0].trim();
- dest_md5.put(key, value);
- }
- for (Map.Entry mapEntry : source_md5.entrySet()) {
- if (!(dest_md5.containsKey(mapEntry.getKey())
- && dest_md5.get(mapEntry.getKey()).equals(mapEntry.getValue()))) {
-
- log.info(sourcePath + " and " + destPath + " is not same!");
- return 0;
- // System.out.println(mapEntry.getKey());
- }
-
- }
-
- log.info(sourcePath + " and " + destPath + " is same!");
- return 1;
- }
-
- public static void main(String[] args) {
- CheckoutMD5 checkoutMD5 = new CheckoutMD5();
- System.out.println(checkoutMD5.checkoutMD5Folder("/home/v1_copy","/home/ubuntu"));
- }
-}
+package com.platform.glusterfs;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import com.platform.utils.Constant;
+
+public class CheckoutMD5 {
+ public static Logger log = Logger.getLogger(CheckoutMD5.class);
+ String sourcePath;
+ String destPath;
+ String dataName;
+ // String cmd_crateSourceMD5File="find "+sourcePath+dataName+"/app/ -type f
+ // -print0 | xargs -0 md5sum | sort >"+deskPath+dataName+"_md5.txt";
+ String cmd_getSourceMD5File;
+ // String cmd_crateDestMD5File="find "+destPath+dataName+"/app/ -type f
+ // -print0 | xargs -0 md5sum | sort >"+deskPath+dataName+"_md5.txt";
+ String cmd_getDestMD5File;
+ Map source_md5 = new HashMap();
+ Map dest_md5 = new HashMap();
+
+ public CheckoutMD5() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public CheckoutMD5(String sourcePath, String destPath, String dataName) {
+ // TODO Auto-generated constructor stub
+ this.sourcePath = sourcePath;
+ this.destPath = destPath;
+ this.dataName = dataName;
+ cmd_getSourceMD5File = "find " + sourcePath + dataName + "/app/ -type f -print0 | xargs -0 md5sum | sort ";
+ cmd_getDestMD5File = "find " + destPath + dataName + "/app/ -type f -print0 | xargs -0 md5sum | sort ";
+ }
+
+ /**
+ * 文件夹校验 校验sourcePath和destPath是否完全相同,如果相同,返回1;
+ * 如果不相同,返回0,如果获取文件MD5出错,返回-1;如何源文件不存在返回-2;目标文件不存在,返回-3;
+ *
+ * @param sourcePath
+ * @param destPath
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public int checkoutMD5Folder(String sourcePath, String destPath) {
+ log.info("start checkout md5 "+sourcePath+" and "+ destPath);
+ List wrong_files = new ArrayList();
+ String source_cmd = "find " + sourcePath + " -type f -print0 | xargs -0 md5sum";
+ String dest_cmd = "find " + destPath + " -type f -print0 | xargs -0 md5sum";
+ List sourceReStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(source_cmd);
+ if (sourceReStrings == null || sourceReStrings.size() == 0) {
+ log.error("get " + sourcePath + " MD5 error!");
+ return -1;
+ }
+ if(sourceReStrings.get(0).contains(Constant.noSuchFile)){
+ log.error(sourcePath+" is not exist!");
+ return -2;
+ }
+ List destReStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(dest_cmd);
+ if (destReStrings == null || destReStrings.size() == 0) {
+ log.error("get " + destReStrings + " MD5 error!");
+ return -1;
+ }
+ if(destReStrings.get(0).contains(Constant.noSuchFile)){
+ log.error(destPath+" is not exist!");
+ return -3;
+ }
+ Map source_md5 = new HashMap();
+ Map dest_md5 = new HashMap();
+ for (String line : sourceReStrings) {
+ String[] lines = line.split(" ");
+ String key = lines[1].replace(sourcePath, "").trim();
+ String value = lines[0].trim();
+ source_md5.put(key, value);
+ }
+ for (String line : destReStrings) {
+ String[] lines = line.split(" ");
+ String key = lines[1].replace(destPath, "").trim();
+ String value = lines[0].trim();
+ dest_md5.put(key, value);
+ }
+ for (Map.Entry mapEntry : source_md5.entrySet()) {
+ if (!(dest_md5.containsKey(mapEntry.getKey())
+ && dest_md5.get(mapEntry.getKey()).equals(mapEntry.getValue()))) {
+
+ log.info(sourcePath + " and " + destPath + " is not same!");
+ return 0;
+ // System.out.println(mapEntry.getKey());
+ }
+
+ }
+
+ log.info(sourcePath + " and " + destPath + " is same!");
+ return 1;
+ }
+
+ public static void main(String[] args) {
+ CheckoutMD5 checkoutMD5 = new CheckoutMD5();
+ System.out.println(checkoutMD5.checkoutMD5Folder("/home/v1_copy","/home/ubuntu"));
+ }
+}
diff --git a/src/com/platform/glusterfs/ClusterInfo.java b/src/com/platform/glusterfs/ClusterInfo.java
index c73f0310..c7570558 100644
--- a/src/com/platform/glusterfs/ClusterInfo.java
+++ b/src/com/platform/glusterfs/ClusterInfo.java
@@ -1,153 +1,155 @@
-
-
-package com.platform.glusterfs;
-
-
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
-import com.platform.utils.Constant;
-
-import ch.ethz.ssh2.Connection;
-
-/**
- * 获取集群信息
- * @author liliy
- * @version [版本号,2016年9月12日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-public class ClusterInfo {
- public static Logger log = Logger.getLogger(ClusterInfo.class);
-
- /**
- * 获取集群节点信息
- * 如果获取不正常,则返回null,如果获取正常,返回map表示节点ip和ip的状态
- * 如果ip在集群中且联通状态为PeerinCluster(Connected)
- * 如果ip在集群中且但不连通为PeerinCluster(Disconnected)
- * @return
- * @throws IOException
- * @see [类、类#方法、类#成员]
- */
- public Map showClusterInfo() {
-// log.info("get cluster info");
- Map peerIps = new HashMap();
- peerIps.put(Constant.hostIp, Constant.peerincluster_connected);
- List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(Constant.glusterPeerStatus);
- if (reStrings == null) {
- log.error("1101 command get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1102 command get result is nothing");
- return null;
- }
-
- if (reStrings.get(0).contains("No peers present")) {
- return peerIps;
- }
-
- if (!(reStrings.get(0).split(":")[0].contains("Number of Peers"))) {
- log.error("1103 get result string wrong");
- return null;
- }
-
-
- // System.out.print(reStrings.get(0));
-
- int flag = 0;
- String ipString = "";
- String state = "";
- for (Iterator it2 = reStrings.iterator(); it2.hasNext();) {
- String line = (String) it2.next();
- line=line.replaceAll(" +", " ");
- String keyValue[] = line.split(":");
- if (keyValue[0].equals("Hostname")) {
-
- if (keyValue.length < 2) {
- log.error("1105 command get result is wrong");
- continue;
- }
-
- ipString = keyValue[1].replaceAll(" ", "");
- flag = 1;
- } else if (flag == 1 && keyValue[0].equals("State")) {
-
- if (keyValue.length < 2) {
- log.error("1106 command get result is wrong");
- continue;
- }
-
- state = keyValue[1].replaceAll(" ", "");
- flag = 0;
- peerIps.put(ipString, state);
- }
-
- }
-
-// for (Map.Entry entry:peerIps.entrySet()){
-// String key=entry.getKey();
-// if(key.equals(Constant.hostIp)){
-// continue;
-// }
-// String value=entry.getValue();
-// if(Constant.ganymedSSH.otherConns==null){
-// Constant.ganymedSSH.otherConns=new HashMap();
-// }
-// if(!Constant.ganymedSSH.otherConns.containsKey(key)){
-// Connection connection=null;
-// try {
-// connection = Constant.ganymedSSH.getOpenedConnection(key, Constant.rootUser, Constant.rootPasswd, Constant.port);
-// } catch (IOException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// }
-// Constant.ganymedSSH.otherConns.put(key,connection);
-// }
-// }
-
- return peerIps;
- }
-
- /**
- * 根据给定的ip获的ip的状态,即是否在集群中并联通
- * 如果ip不在集群中,返回null
- * 如果ip在集群中且联通状态为PeerinCluster(Connected)
- * 如果ip在集群中且但不连通为PeerinCluster(Disconnected)
- * @param peerip
- * @return
- * @see [类、类#方法、类#成员]
- */
- public String getPeerStatus(String peerip){
- Map peerIps=showClusterInfo();
- if(peerIps==null || peerIps.size()==0){
- return null;
- }
-
- if(peerip.equals(Constant.hostIp)){
- return Constant.peerincluster_connected;
- }
- if(!peerIps.containsKey(peerip)){
- return Constant.peerNotinCluster;
- }
- return peerIps.get(peerip);
- }
-
-
- public static void main(String[] args) {
-// PropertyConfigurator.configure("log4j.properties");
- System.out.println(new ClusterInfo().showClusterInfo());
- System.out.println(new ClusterInfo().getPeerStatus("192.168.0.116"));
- }
-}
-
-
+
+
+package com.platform.glusterfs;
+
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+import com.platform.utils.Constant;
+import com.platform.utils.ProcessMyUtil;
+
+import ch.ethz.ssh2.Connection;
+
+/**
+ * 获取集群信息
+ * @author liliy
+ * @version [版本号,2016年9月12日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class ClusterInfo {
+ ProcessMyUtil proMy = new ProcessMyUtil();
+ public static Logger log = Logger.getLogger(ClusterInfo.class);
+
+ /**
+ * 获取集群节点信息
+ * 如果获取不正常,则返回null,如果获取正常,返回map表示节点ip和ip的状态
+ * 如果ip在集群中且联通状态为PeerinCluster(Connected)
+ * 如果ip在集群中且但不连通为PeerinCluster(Disconnected)
+ * @return
+ * @throws IOException
+ * @see [类、类#方法、类#成员]
+ */
+ public Map showClusterInfo() {
+// log.info("get cluster info");
+ Map peerIps = new HashMap();
+ peerIps.put(Constant.hostIp, Constant.peerincluster_connected);
+ List reStrings = proMy.execCmdWaitAcquiescent(Constant.glusterPeerStatus);
+ if (reStrings == null) {
+ log.error("1101 command get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1102 command get result is nothing");
+ return null;
+ }
+
+ if (reStrings.get(0).contains("No peers present")) {
+ return peerIps;
+ }
+
+ if (!(reStrings.get(0).split(":")[0].contains("Number of Peers"))) {
+ log.error("1103 get result string wrong");
+ return null;
+ }
+
+
+ // System.out.print(reStrings.get(0));
+
+ int flag = 0;
+ String ipString = "";
+ String state = "";
+ for (Iterator it2 = reStrings.iterator(); it2.hasNext();) {
+ String line = (String) it2.next();
+ line=line.replaceAll(" +", " ");
+ String keyValue[] = line.split(":");
+ if (keyValue[0].equals("Hostname")) {
+
+ if (keyValue.length < 2) {
+ log.error("1105 command get result is wrong");
+ continue;
+ }
+
+ ipString = keyValue[1].replaceAll(" ", "");
+ flag = 1;
+ } else if (flag == 1 && keyValue[0].equals("State")) {
+
+ if (keyValue.length < 2) {
+ log.error("1106 command get result is wrong");
+ continue;
+ }
+
+ state = keyValue[1].replaceAll(" ", "");
+ flag = 0;
+ peerIps.put(ipString, state);
+ }
+
+ }
+
+// for (Map.Entry entry:peerIps.entrySet()){
+// String key=entry.getKey();
+// if(key.equals(Constant.hostIp)){
+// continue;
+// }
+// String value=entry.getValue();
+// if(Constant.ganymedSSH.otherConns==null){
+// Constant.ganymedSSH.otherConns=new HashMap();
+// }
+// if(!Constant.ganymedSSH.otherConns.containsKey(key)){
+// Connection connection=null;
+// try {
+// connection = Constant.ganymedSSH.getOpenedConnection(key, Constant.rootUser, Constant.rootPasswd, Constant.port);
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+// Constant.ganymedSSH.otherConns.put(key,connection);
+// }
+// }
+
+ return peerIps;
+ }
+
+ /**
+ * 根据给定的ip获的ip的状态,即是否在集群中并联通
+ * 如果ip不在集群中,返回null
+ * 如果ip在集群中且联通状态为PeerinCluster(Connected)
+ * 如果ip在集群中且但不连通为PeerinCluster(Disconnected)
+ * @param peerip
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public String getPeerStatus(String peerip){
+ Map peerIps=showClusterInfo();
+ if(peerIps==null || peerIps.size()==0){
+ return null;
+ }
+
+ if(peerip.equals(Constant.hostIp)){
+ return Constant.peerincluster_connected;
+ }
+ if(!peerIps.containsKey(peerip)){
+ return Constant.peerNotinCluster;
+ }
+ return peerIps.get(peerip);
+ }
+
+
+ public static void main(String[] args) {
+// PropertyConfigurator.configure("log4j.properties");
+ System.out.println(new ClusterInfo().showClusterInfo());
+ System.out.println(new ClusterInfo().getPeerStatus("192.168.0.116"));
+ }
+}
+
+
diff --git a/src/com/platform/glusterfs/CopyData.java b/src/com/platform/glusterfs/CopyData.java
index fd774040..d99d6b65 100644
--- a/src/com/platform/glusterfs/CopyData.java
+++ b/src/com/platform/glusterfs/CopyData.java
@@ -1,143 +1,143 @@
-
-package com.platform.glusterfs;
-
-import java.util.List;
-
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-import org.junit.Test;
-
-import com.platform.utils.Constant;
-
-
-/**
- * <一句话功能简述> 复制数据
- * <功能详细描述>
- * @author chen
- * @version [版本号,2016年9月8日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-
-public class CopyData {
- public static Logger log = Logger.getLogger(CopyData.class);
-
- public int copyVolumeFiles(String sourceVolumeName, String destVolumeName, String fileName) {
- log.info("start copy " + fileName + " from " + sourceVolumeName + " to " + destVolumeName);
- int status = -1;
- /**
- * get mount point of volumeName
- */
-
- String sourceFolderName = sourceVolumeName;
- String destFolderName = destVolumeName;
- status = copyFolderFilesAnyway(sourceFolderName, destFolderName, fileName);
- return status;
- }
-
- /**
- * 将sourceFolderName拷贝到destFolderName
- * 如果拷贝正常返回1,如果sourceFolderName不存在返回-2 ,如果destFolderName不存在返回-3
- * @param sourceFolderName
- * @param destFolderName
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int copyFolder(String sourceFolderName, String destFolderName) {
- createFolders(destFolderName);
- int progress=0;
- log.info("start copy " + sourceFolderName + " to " + destFolderName);
- ShowData showData=new ShowData();
- Map reStrings=showData.showFolderData(destFolderName);
- if(reStrings==null){
- log.info("3201 "+destFolderName+" is not exists");
- return -3;
- }
-
- reStrings=showData.showFolderData(sourceFolderName);
- if(reStrings==null){
- log.info("3202 "+sourceFolderName+" is not exists");
- return -2;
- }
- String command = "cp -rp " + sourceFolderName+" "+destFolderName;
-
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
-
- log.info("copy " + sourceFolderName + " to " + destFolderName + " running");
- return 1;
- }
-
- /**
- * -1 :error; -2: the filename is not exists ;-3 :destFolderName ; 1: right
- * not exists
- *
- * @param folderName
- * @param fileName
- * @return
- */
- public int copyFolderFiles(String sourceFolderName, String destFolderName, String fileName) {
- int progress=0;
- log.info("start copy " + fileName + " from " + sourceFolderName + " to " + destFolderName);
- ShowData showData=new ShowData();
- Map reStrings=showData.showFolderData(destFolderName);
- if(reStrings==null){
- log.info("3201 "+destFolderName+" is not exists");
- return -3;
- }
-
- reStrings=showData.showFolderData(sourceFolderName+"/"+fileName);
- if(reStrings==null){
- log.info("3202 "+sourceFolderName+"/"+fileName+" is not exists");
- return -2;
- }
- String command = "cp -rp " + sourceFolderName + "/" + fileName+" "+destFolderName;
- /*
- * RunCommand runCommand = new RunCommand();
-
- List reStrings = runCommand.runCommandWait(command);
- */
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
-
- log.info("copy " + sourceFolderName +"/" + fileName+ " to " + destFolderName + " running");
- return 1;
- }
-
- /** 不管目的路径存在与否,强制拷贝
- * @param sourceFolderName
- * @param destFolderName
- * @param fileName
- * @return
- */
- public int copyFolderFilesAnyway(String sourceFolderName, String destFolderName, String fileName) {
- createFolders(destFolderName);
- int result = copyFolderFiles(sourceFolderName, destFolderName, fileName);
- return result;
- }
-
- public int createFolders(String folder){
- log.info("create "+folder);
- String splitFolder[]=folder.substring(1).split("/");
- String cmd="mkdir ";
- for(String one:splitFolder){
- cmd+="/"+one.replaceAll(" ", "");
- Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
- }
- return 1;
- }
-
- @Test
- public void testcreateFolders() {
-
- createFolders("/aaa/vvv/ddd/www/rrrr");
- }
-
- //@Test
- public void testCopyFolderFiles() {
-
- copyFolderFiles("/home", "/home/ubuntu", "system_data");
- }
-}
-
-
+
+package com.platform.glusterfs;
+
+import java.util.List;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+import org.junit.Test;
+
+import com.platform.utils.Constant;
+
+
+/**
+ * <一句话功能简述> 复制数据
+ * <功能详细描述>
+ * @author chen
+ * @version [版本号,2016年9月8日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+
+public class CopyData {
+ public static Logger log = Logger.getLogger(CopyData.class);
+
+ public int copyVolumeFiles(String sourceVolumeName, String destVolumeName, String fileName) {
+ log.info("start copy " + fileName + " from " + sourceVolumeName + " to " + destVolumeName);
+ int status = -1;
+ /**
+ * get mount point of volumeName
+ */
+
+ String sourceFolderName = sourceVolumeName;
+ String destFolderName = destVolumeName;
+ status = copyFolderFilesAnyway(sourceFolderName, destFolderName, fileName);
+ return status;
+ }
+
+ /**
+ * 将sourceFolderName拷贝到destFolderName
+ * 如果拷贝正常返回1,如果sourceFolderName不存在返回-2 ,如果destFolderName不存在返回-3
+ * @param sourceFolderName
+ * @param destFolderName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public int copyFolder(String sourceFolderName, String destFolderName) {
+ createFolders(destFolderName);
+ int progress=0;
+ log.info("start copy " + sourceFolderName + " to " + destFolderName);
+ ShowData showData=new ShowData();
+ Map reStrings=showData.showFolderData(destFolderName);
+ if(reStrings==null){
+ log.info("3201 "+destFolderName+" is not exists");
+ return -3;
+ }
+
+ reStrings=showData.showFolderData(sourceFolderName);
+ if(reStrings==null){
+ log.info("3202 "+sourceFolderName+" is not exists");
+ return -2;
+ }
+ String command = "cp -rp " + sourceFolderName+" "+destFolderName;
+
+ Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
+
+ log.info("copy " + sourceFolderName + " to " + destFolderName + " running");
+ return 1;
+ }
+
+ /**
+ * -1 :error; -2: the filename is not exists ;-3 :destFolderName ; 1: right
+ * not exists
+ *
+ * @param folderName
+ * @param fileName
+ * @return
+ */
+ public int copyFolderFiles(String sourceFolderName, String destFolderName, String fileName) {
+ int progress=0;
+ log.info("start copy " + fileName + " from " + sourceFolderName + " to " + destFolderName);
+ ShowData showData=new ShowData();
+ Map reStrings=showData.showFolderData(destFolderName);
+ if(reStrings==null){
+ log.info("3201 "+destFolderName+" is not exists");
+ return -3;
+ }
+
+ reStrings=showData.showFolderData(sourceFolderName+"/"+fileName);
+ if(reStrings==null){
+ log.info("3202 "+sourceFolderName+"/"+fileName+" is not exists");
+ return -2;
+ }
+ String command = "cp -rp " + sourceFolderName + "/" + fileName+" "+destFolderName;
+ /*
+ * RunCommand runCommand = new RunCommand();
+
+ List reStrings = runCommand.runCommandWait(command);
+ */
+ Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
+
+ log.info("copy " + sourceFolderName +"/" + fileName+ " to " + destFolderName + " running");
+ return 1;
+ }
+
+ /** 不管目的路径存在与否,强制拷贝
+ * @param sourceFolderName
+ * @param destFolderName
+ * @param fileName
+ * @return
+ */
+ public int copyFolderFilesAnyway(String sourceFolderName, String destFolderName, String fileName) {
+ createFolders(destFolderName);
+ int result = copyFolderFiles(sourceFolderName, destFolderName, fileName);
+ return result;
+ }
+
+ public int createFolders(String folder){
+ log.info("create "+folder);
+ String splitFolder[]=folder.substring(1).split("/");
+ String cmd="mkdir ";
+ for(String one:splitFolder){
+ cmd+="/"+one.replaceAll(" ", "");
+ Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ }
+ return 1;
+ }
+
+ @Test
+ public void testcreateFolders() {
+
+ createFolders("/aaa/vvv/ddd/www/rrrr");
+ }
+
+ //@Test
+ public void testCopyFolderFiles() {
+
+ copyFolderFiles("/home", "/home/ubuntu", "system_data");
+ }
+}
+
+
diff --git a/src/com/platform/glusterfs/GetTreeData.java b/src/com/platform/glusterfs/GetTreeData.java
index d1274d15..48f5f826 100644
--- a/src/com/platform/glusterfs/GetTreeData.java
+++ b/src/com/platform/glusterfs/GetTreeData.java
@@ -1,123 +1,115 @@
-package com.platform.glusterfs;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.Test;
-import com.platform.entities.FolderNode;
-import com.platform.utils.Constant;
-import com.platform.utils.FileOperateHelper;
-import com.platform.utils.GanymedSSH;
-
-/**
- * <一句话功能简述> 获得GFS某个目录下的子目录
- * <功能详细描述>
- * @author chen
- * @version [版本号,2016年9月8日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-public class GetTreeData {
- ShowData showData = new ShowData();
-
- /**
- * <一句话功能简述> 获得所以子目录
- * <功能详细描述>
- * @param name
- * @return
- * @see [类、类#方法、类#成员]
- */
- public FolderNode getDatas(String name) {
- String names[]=name.split("/");
- String only_name=names[names.length-1];
- FolderNode fileNode = new FolderNode(only_name);
- fileNode.setPath(name);
- Map files = showData.showFolderData(name);
- if(files==null || files.size()==0){
- return fileNode;
- }
- fileNode.setIsFolder(files.size());
- List list = new ArrayList();
- fileNode.setChildNodes(list);
- for (Map.Entry entry : files.entrySet()) {
- if(entry.getKey().equals("app")){
- continue;
- }
- int number = Integer.parseInt(entry.getValue());
- if (number == 1) {
- fileNode.getChildNodes().add(new FolderNode(entry.getKey(), number));
- }
- if (number > 1) {
- FolderNode temp=getDatas(name+"/"+entry.getKey());
- fileNode.getChildNodes().add(temp);
- }
- }
-
- return fileNode;
- }
-
-
- /**
- * <一句话功能简述> 获得所以子目录
- * <功能详细描述>
- * @param name
- * @return
- * @see [类、类#方法、类#成员]
- */
- public FolderNode getDatasWithShell(String name) {
- if(name.endsWith("/")){
- name=name.substring(0, name.length()-1);
- }
-// String names[]=name.split("/");
-// String only_name=names[names.length-1];
- FolderNode fileNode = new FolderNode(name);
- fileNode.setPath(name);
-
-// String shellComment= new FileOperateHelper().fileReaderAndendline(Constant.fileGetTreeData);
- String shellComment= Constant.strGetTreeData;
- String sh_path="/getTreedata.sh";
- String cmd="echo -e \""+shellComment+"\" > "+sh_path+" & chmod +x "+sh_path;
- Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
-// Map files = showData.showFolderData(name);
- List files=Constant.ganymedSSH.execCmdWaitAcquiescent(sh_path+" "+name);
- if(files==null){
- return null;
- }
- if(files.size()==0){
- return fileNode;
- }
- for(String file:files){
-
- }
-
- return fileNode;
- }
- @Test
- public void test_getTreeData() {
-
- GetTreeData getTreeData=new GetTreeData();
-// FolderNode fileOrFolder=getTreeData.getDatas("/home/gfs_ftp_point");
- FolderNode fileOrFolder=getTreeData.getDatasWithShell("/home/gfs_ftp_point/");
- System.out.println(fileOrFolder);
- }
-}
-/*
-class FileOrFolder {
- String name;
- int isFolder; // 1 is file and other integer is folder show children number
- List children;
-
- public FileOrFolder(String name) {
- // TODO Auto-generated constructor stub
- this.name = name;
- }
-
- public FileOrFolder(String name, int isFolder) {
- // TODO Auto-generated constructor stub
- this.name = name;
- this.isFolder = isFolder;
- }
-}
-
-*/
+package com.platform.glusterfs;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.json.JSONObject;
+
+import org.junit.Test;
+
+import com.platform.entities.FolderNode;
+import com.platform.utils.Constant;
+import com.platform.utils.FileOperateHelper;
+import com.platform.utils.GanymedSSH;
+
+import freemarker.core._RegexBuiltins.replace_reBI;
+
+/**
+ * <一句话功能简述> 获得GFS某个目录下的子目录
+ * <功能详细描述>
+ * @author chen
+ * @version [版本号,2016年9月8日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class GetTreeData {
+ ShowData showData = new ShowData();
+
+ /**
+ * <一句话功能简述> 获得所以子目录
+ * <功能详细描述>
+ * @param name
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public FolderNode getDatas(String name) {
+ String names[]=name.split("/");
+ String only_name=names[names.length-1];
+ FolderNode fileNode = new FolderNode(only_name);
+ fileNode.setPath(name);
+ Map files = showData.showFolderData(name);
+ if(files==null || files.size()==0){
+ return fileNode;
+ }
+ fileNode.setIsFolder(files.size());
+ List list = new ArrayList();
+ fileNode.setChildNodes(list);
+ for (Map.Entry entry : files.entrySet()) {
+ if(entry.getKey().equals("app")){
+ continue;
+ }
+ int number = Integer.parseInt(entry.getValue());
+ if (number == 1) {
+ fileNode.getChildNodes().add(new FolderNode(entry.getKey(), number));
+ }
+ if (number > 1) {
+ FolderNode temp=getDatas(name+"/"+entry.getKey());
+ fileNode.getChildNodes().add(temp);
+ }
+ }
+
+ return fileNode;
+ }
+
+
+ /**
+ * <一句话功能简述> 获得所以子目录
+ * <功能详细描述>
+ * @param name
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public FolderNode getDatasWithShell(String name) {
+ if(name.endsWith("/")){
+ name=name.substring(0, name.length()-1);
+ }
+// String names[]=name.split("/");
+// String only_name=names[names.length-1];
+ FolderNode fileNode = new FolderNode(name);
+ fileNode.setPath(name);
+
+// String shellComment= new FileOperateHelper().fileReaderAndendline(Constant.fileGetTreeData);
+ String shellComment= Constant.strGetTreeData;
+ String sh_path="/getTreedata.sh";
+ String cmd="echo -e \""+shellComment+"\" > "+sh_path+" & chmod +x "+sh_path;
+ Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+// Map files = showData.showFolderData(name);
+ List files=Constant.ganymedSSH.execCmdWaitAcquiescent(sh_path+" "+name);
+ if(files==null){
+ return null;
+ }
+ if(files.size()==0){
+ return fileNode;
+ }
+ for(String file:files){
+
+ }
+
+ return fileNode;
+ }
+ @Test
+ public void test_getTreeData() {
+
+ GetTreeData getTreeData=new GetTreeData();
+// FolderNode fileOrFolder=getTreeData.getDatas("/home/gfs_ftp_point");
+ FolderNode fileOrFolder=getTreeData.getDatasWithShell("/home/gfs_ftp_point/");
+ System.out.println(fileOrFolder);
+ }
+
+}
+
diff --git a/src/com/platform/glusterfs/RemoveData.java b/src/com/platform/glusterfs/RemoveData.java
index 6f854b26..e06cebd3 100644
--- a/src/com/platform/glusterfs/RemoveData.java
+++ b/src/com/platform/glusterfs/RemoveData.java
@@ -1,56 +1,56 @@
-package com.platform.glusterfs;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-import org.junit.Test;
-
-import com.platform.utils.Constant;
-
-
-
-public class RemoveData {
-
- public static Logger log = Logger.getLogger ( RemoveData.class);
-
-
- /**
- * -1 :error; 0: the filename is not exists ; 1: right
- * @param folderName
- * @param fileName
- * @return
- */
- public int deleteFolder(String folderName){
- log.info("start delete "+folderName);
-
- ShowData showData=new ShowData();
- Map reStrings=showData.showFolderData(folderName);
-
- if(reStrings==null){
- log.error("3301 "+folderName+" is not exists");
- return -1;
- }
-
- String command="rm -r "+folderName;
-
-// int status=runCommand.runCommand(command);
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
-
- log.info("delete "+folderName+" running");
- return 1;
- }
-
-
-
-
- @Test
- public void testDeleteFolderFiles() {
- PropertyConfigurator.configure("log4j.properties");
- deleteFolder("/home/ubuntu");
- }
-
-}
+package com.platform.glusterfs;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+import org.junit.Test;
+
+import com.platform.utils.Constant;
+
+
+
+public class RemoveData {
+
+ public static Logger log = Logger.getLogger ( RemoveData.class);
+
+
+ /**
+ * -1 :error; 0: the filename is not exists ; 1: right
+ * @param folderName
+ * @param fileName
+ * @return
+ */
+ public int deleteFolder(String folderName){
+ log.info("start delete "+folderName);
+
+ ShowData showData=new ShowData();
+ Map reStrings=showData.showFolderData(folderName);
+
+ if(reStrings==null){
+ log.error("3301 "+folderName+" is not exists");
+ return -1;
+ }
+
+ String command="rm -r "+folderName;
+
+// int status=runCommand.runCommand(command);
+ Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
+
+ log.info("delete "+folderName+" running");
+ return 1;
+ }
+
+
+
+
+ @Test
+ public void testDeleteFolderFiles() {
+ PropertyConfigurator.configure("log4j.properties");
+ deleteFolder("/home/ubuntu");
+ }
+
+}
diff --git a/src/com/platform/glusterfs/SetCluster.java b/src/com/platform/glusterfs/SetCluster.java
index 8f260e5a..598b8753 100644
--- a/src/com/platform/glusterfs/SetCluster.java
+++ b/src/com/platform/glusterfs/SetCluster.java
@@ -1,67 +1,67 @@
-
-package com.platform.glusterfs;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.hamcrest.core.Is;
-
-import com.platform.utils.Constant;
-import com.platform.utils.Support;
-
-public class SetCluster {
- public static Logger log = Logger.getLogger ( SetCluster.class);
-
- /**
- * 向集群中添加节点
- * 返回1表示添加成功;-1表示ip不合法,-2 表示出错,0表示添加失败
- * @param peerip
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int probePeer(String peerip){
- if(!Support.checkIP(peerip)){
- log.error(peerip +"is illegal!" );
- return -1;
- }
- String cmd="gluster peer probe "+peerip;
- List reStrings=Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
- if(reStrings==null || reStrings.size()==0){
- log.error("detach error! ");
- return -2;
- }
- if(reStrings.contains(Constant.success)){
- log.info("probe success!");
- return 1;
- }
- log.info("probe failed!");
- return 0;
- }
-
- /**
- * 删除集群中节点
- * 返回1表示删除成功;-1表示ip不合法,-2 表示出错,0表示添加失败
- * @param peerip
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int detachPeer(String peerip){
- if(!Support.checkIP(peerip)){
- log.error(peerip +"is illegal!" );
- return -1;
- }
- String cmd="gluster peer detach "+peerip;
- List reStrings=Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
- if(reStrings==null || reStrings.size()==0){
- log.error("detach error! ");
- return -2;
- }
- if(reStrings.contains(Constant.success)){
- log.info("detach success!");
- return 1;
- }
- log.info("detach failed!");
- return 0;
- }
-}
-
+
+package com.platform.glusterfs;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hamcrest.core.Is;
+
+import com.platform.utils.Constant;
+import com.platform.utils.Support;
+
+public class SetCluster {
+ public static Logger log = Logger.getLogger ( SetCluster.class);
+
+ /**
+ * 向集群中添加节点
+ * 返回1表示添加成功;-1表示ip不合法,-2 表示出错,0表示添加失败
+ * @param peerip
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public int probePeer(String peerip){
+ if(!Support.checkIP(peerip)){
+ log.error(peerip +"is illegal!" );
+ return -1;
+ }
+ String cmd="gluster peer probe "+peerip;
+ List reStrings=Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ if(reStrings==null || reStrings.size()==0){
+ log.error("detach error! ");
+ return -2;
+ }
+ if(reStrings.contains(Constant.success)){
+ log.info("probe success!");
+ return 1;
+ }
+ log.info("probe failed!");
+ return 0;
+ }
+
+ /**
+ * 删除集群中节点
+ * 返回1表示删除成功;-1表示ip不合法,-2 表示出错,0表示添加失败
+ * @param peerip
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public int detachPeer(String peerip){
+ if(!Support.checkIP(peerip)){
+ log.error(peerip +"is illegal!" );
+ return -1;
+ }
+ String cmd="gluster peer detach "+peerip;
+ List reStrings=Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ if(reStrings==null || reStrings.size()==0){
+ log.error("detach error! ");
+ return -2;
+ }
+ if(reStrings.contains(Constant.success)){
+ log.info("detach success!");
+ return 1;
+ }
+ log.info("detach failed!");
+ return 0;
+ }
+}
+
diff --git a/src/com/platform/glusterfs/SetVolume.java b/src/com/platform/glusterfs/SetVolume.java
index 2d3858de..6d9fc1e2 100644
--- a/src/com/platform/glusterfs/SetVolume.java
+++ b/src/com/platform/glusterfs/SetVolume.java
@@ -1,540 +1,540 @@
-
-/**
- * @author 李乾坤
- * 进行volume的一系列操作,如创建、开启停止volume,为volume添加或删除brick
- */
-package com.platform.glusterfs;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-import org.junit.Test;
-
-import com.platform.utils.Constant;
-
-public class SetVolume {
- public static Logger log = Logger.getLogger(SetVolume.class);
-
- /**
- * 创建volume 返回值:创建并挂载成功 1 1:可以创建 ;-1:brick的ip不在集群中或者未连接; -2 -3
- * -4:类型与brick数目不匹配 ; -5 :volumeName 已经存在;-6:挂载点存在且不为空,不能作为挂载点; -7:未知错误
- *
- * @param volumeName
- * @param count
- * @param type
- * @param bricks
- * @param mountPoint
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int createVolume(String volumeName, int count, String type, List bricks, String mountPoint) {
- log.info("Creat new volume");
-
- // 判断创建volume的条件是否满足
- int able = isAbleCreateVolume(volumeName, count, type, bricks, mountPoint);
-
- if (able == 1) {
- String command = null;
- // 将brics从List变量中提取出来并连接成可以在命令行中使用的格式
- String commandarg = concat(bricks);
-
- /*
- * verify the type
- */
- if (type.equals(Constant.distributed)) {
- command = "gluster volume create " + volumeName + " " + commandarg + "force";
- } else if (type.equals(Constant.replica) || type.equals(Constant.stripe)) {
- command = "gluster volume create " + volumeName + " " + type + " " + count + " " + commandarg + "force";
- }
-
- // 执行命令
- List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command);
-
- // 创建成功时返回信息格式:volume create: volumename success:
- if (reStrings == null || reStrings.size() == 0) {
- log.error("3106 " + command + " run return error");
- return -7;
- }
- if (reStrings.get(0).contains("volume create: " + volumeName + ": " + "success:")) {
- log.info("create volume " + volumeName + " successed!");
- // 创建成功则启动并进行挂载
- if (startVolume(volumeName) == 0) {
- log.info("start volume " + volumeName + " successed!");
-
- log.info("create "+mountPoint);
- new CopyData().createFolders(mountPoint);
-
- // 进行挂载
- String command3 = "mount -t glusterfs " + Constant.hostIp + ":" + volumeName + " " + mountPoint;
- List reStrings3 = Constant.ganymedSSH.execCmdWaitAcquiescent(command3);
-
- if (reStrings3.size() == 0 || reStrings.get(0).contains("GlusterFS is already mounted")) {
- log.info("mount point successed!");
- String addRecord = "echo \"" + volumeName + ":" + mountPoint + "\" >> " + Constant.MountRecord;
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(addRecord);
- return 1;
- }
- }
- } else {
- log.error("3104 volume create failed with error" + reStrings.get(0));
- // System.out.println(reStrings.get(0));
- return -7;
- }
- return 1;
- } else {
- log.error("给出的参数不满足创建条件");
- // System.out.println("给出的参数不满足创建条件");
- return able;
- }
-
- }
-
- /**
- * 删除volume 1 表示成功 ;-1表示volume name不存在;-2表示停止volume 失败;
- * -3表示删除失败,-4表示/gfsAutoMount/mountPoint.record文件不存在
- * @param volumeName
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int deleteVolume(String volumeName) {
- int status = 0;
- VolumeInfo volumeInfo = new VolumeInfo();
- List volumeNames = volumeInfo.showAllVolumeName();
- if (!volumeNames.contains(volumeName)) {
- log.error("3801 " + volumeName + " is not exists !");
- return -1;
- }
-
- List mountPoints = volumeInfo.getVolumeMountPoint(volumeName);
-
- String cmd = "cat " + Constant.MountRecord;
- List mountRecord = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
-
- if (stopVolume(volumeName) != 0) {
-
- return -2;
- }
-
- String command = "echo -e \"y\"| gluster volume delete " + volumeName;
- List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command);
- if (reStrings == null || reStrings.size() == 0
- || !(reStrings.get(0).contains("volume delete: " + volumeName + ": success"))) {
- log.error("3803 : delete volume " + volumeName + " failed !");
- return -3;
- }
- log.info("delete " + volumeName + " successed!");
- if (mountRecord.size() != 0 && mountPoints.get(0).contains(Constant.noSuchFile)) {
- log.error("3804 : " + Constant.MountRecord + " is not exits");
- return -4;
- }
- for (String mountPoint : mountPoints) {
- command = "umount -l " + mountPoint;
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
- log.info("umount " + mountPoint + " successed!");
- String oneRecord=volumeName+":"+mountPoint;
- if (mountRecord.contains(oneRecord)) {
- mountRecord.remove(oneRecord);
- }
-
- }
- String newRecords="";
- for(String one:mountRecord){
- newRecords+=one+"\n";
- }
- command="echo -ne \""+newRecords+"\" > "+Constant.MountRecord;
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
- return 1;
- }
-
- /**
- * 为指定的volume添加brick,参数中需要指定类型、数量等 返回值:1成功 ;其他失败
- * 过程中需要先检查volume是否存在,还需检查给出的brick数量与类型、count是否相符
- *
- * @param volumeName
- * @param brickName
- * @param count
- * @param type
- * @return
- * @see [类、类#方法、类#成员]
- */
- public int addBrickVolume(String volumeName, List brickName, int count, String type) {
- // 检查是否满足添加bricks的条件
- int able = isAble(volumeName, count, type, brickName);
- if (able != 1) {
- return able;
- }
-
- String command = "";
- log.info("add brick to the specified volume");
-
- String brick = concat(brickName);
-
- if (type.equals(Constant.distributed))
- command = "gluster volume add-brick " + volumeName + " " + brick + "force";
- else if (type.equals(Constant.replica))
- command = "gluster volume add-brick " + volumeName + " " + "replica " + count + " " + brick + "force";
- else if (type.equals(Constant.stripe))
- command = "gluster volume add-brick " + volumeName + " " + "stripe " + count + " " + brick + "force";
-
- List