diff --git a/.classpath b/.classpath
deleted file mode 100644
index 4d25e0c9..00000000
--- a/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index d1638636..30c0ce06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,5 @@
-build/
\ No newline at end of file
+/target
+/build
+.classpath
+
+/bin/
diff --git a/.project b/.project
index ded1f1a4..ed1fe4a2 100644
--- a/.project
+++ b/.project
@@ -25,6 +25,11 @@
+
+ com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder
+
+
+
org.eclipse.jem.workbench.JavaEMFNature
diff --git a/.settings/com.genuitec.eclipse.migration.prefs b/.settings/com.genuitec.eclipse.migration.prefs
new file mode 100644
index 00000000..bf0067e7
--- /dev/null
+++ b/.settings/com.genuitec.eclipse.migration.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+performed.operation.correct.unbound.jre=1.0
+performed.operation.resolve.unknown.runtime=1.0
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index d1ff3f7e..544ad1e4 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,5 @@
eclipse.preferences.version=1
encoding//WebContent/WEB-INF/config/config.properties=UTF-8
+encoding//src/com/platform/utils/GanymedSSH.java=UTF-8
+encoding/=UTF-8
+separateDerivedEncodings=true
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index f42de363..68c704e1 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,101 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.7
diff --git a/.settings/org.eclipse.jpt.core.prefs b/.settings/org.eclipse.jpt.core.prefs
new file mode 100644
index 00000000..4fd5f244
--- /dev/null
+++ b/.settings/org.eclipse.jpt.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jpt.core.platform=generic2_1
+org.eclipse.jpt.jpa.core.discoverAnnotatedClasses=false
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000..f897a7f1
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
new file mode 100644
index 00000000..7961132f
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
index 6f8fb94f..ba1bfbde 100644
--- a/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -1,10 +1,11 @@
-
+
+
diff --git a/WebContent/WEB-INF/config/getTreedata.sh b/WebContent/WEB-INF/config/getTreedata.sh
new file mode 100644
index 00000000..d486a449
--- /dev/null
+++ b/WebContent/WEB-INF/config/getTreedata.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+function ergodic(){
+ for file in `ls $1`
+ do
+ if [ "$file" != "app" -a -d $1"/"$file ]
+ then
+ ergodic $1"/"$file
+ else
+ local path=$1"/"$file
+ echo $path
+ fi
+ done
+}
+
+IFS=$'\n' #这个必须要,否则会在文件名中有空格时出错
+INIT_PATH=".";
+ergodic $1
\ No newline at end of file
diff --git a/WebContent/WEB-INF/config/log4j-config.xml b/WebContent/WEB-INF/config/log4j-config.xml
index 0a2755c5..d02e5918 100644
--- a/WebContent/WEB-INF/config/log4j-config.xml
+++ b/WebContent/WEB-INF/config/log4j-config.xml
@@ -14,7 +14,7 @@
-
+
@@ -23,7 +23,7 @@
-
+
diff --git a/src/com/base/BaseController.java b/src/com/base/BaseController.java
index a9fd417a..64c66474 100644
--- a/src/com/base/BaseController.java
+++ b/src/com/base/BaseController.java
@@ -1,3 +1,4 @@
+
/**
* 文件名 : BaseController.java
* 版权 : XX科技有限公司。
@@ -60,4 +61,5 @@ public class BaseController {
return response;
}
}
+
}
\ No newline at end of file
diff --git a/src/com/base/CustomException.java b/src/com/base/CustomException.java
index 42b44cfb..9cf46a4a 100644
--- a/src/com/base/CustomException.java
+++ b/src/com/base/CustomException.java
@@ -1,3 +1,5 @@
+
+
package com.base;
import org.apache.log4j.Logger;
@@ -122,3 +124,4 @@ public class CustomException extends Exception {
return cause;
}
}
+
diff --git a/src/com/dao/mapper/data-detaisl-mapper.xml b/src/com/dao/mapper/data-detaisl-mapper.xml
new file mode 100644
index 00000000..d0f8d7c7
--- /dev/null
+++ b/src/com/dao/mapper/data-detaisl-mapper.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ and data_details.data_type=#{PagerOptions.dataType}
+
+
+ and
+ data_details.submitted_batch=#{PagerOptions.submittedBatch}
+
+
+ and data_details.city_name=#{PagerOptions.cityName}
+
+
+ and
+ data_details.district_name=#{PagerOptions.districtName}
+
+
+ and data_details.data_version=#{PagerOptions.dataVersion}
+
+
+ and data_details=#{PagerOptions.systemName}
+
+
+ and data_details.data_year=#{PagerOptions.dataYear}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java
index 6952659f..7cf47830 100644
--- a/src/com/platform/controller/DataModelController.java
+++ b/src/com/platform/controller/DataModelController.java
@@ -184,14 +184,20 @@ public class DataModelController extends BaseController{
JSONObject jsonobject = JSONObject.fromObject(string);
map = jsonobject;
}
+ String dstVolume = (String) map.get("volume");
+
List listItemPath = new ArrayList();
String[] items = paramMap.get("selectItems");
System.out.println("selectItems");
List datas = new ArrayList();
+ List srcVolumes = new ArrayList();
for (String string : items) {
System.out.println(string);
JSONObject jsobj = JSONObject.fromObject(string);
Map itemmap = jsobj;
+ if (null != itemmap.get("volume")) {
+ srcVolumes.add((String) itemmap.get("volume"));
+ }
DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(DataInfoEntity.class, itemmap);
datas.add(data);
}
@@ -231,7 +237,7 @@ public class DataModelController extends BaseController{
System.out.println("----------insertOracleInfo-----------------------");
}
- @RequestMapping(value="/oracle/update", method= RequestMethod.POST)
+ @RequestMapping(value="/oracle/{id}/update", method= RequestMethod.POST)
@ResponseBody
public void updateOracleInfo(HttpServletRequest res,
HttpServletResponse req, GatherOracleInfo oracle) throws Exception {
@@ -250,11 +256,10 @@ public class DataModelController extends BaseController{
return result;
}
- @RequestMapping(value="/task/transfer/deletes", method= RequestMethod.POST)
+ @RequestMapping(value="/task/transfer/delete", method= RequestMethod.POST)
@ResponseBody
- public Object taskdeletes() throws Exception {
- DataInfoEntityMoveTmp dataMove = null;
- int result = moveDataService.delete(dataMove);
+ public Object taskdeletes(DataInfoEntityMoveTmp move) throws Exception {
+ int result = moveDataService.delete(move);
return result;
}
}
diff --git a/src/com/platform/controller/DefaultController.java b/src/com/platform/controller/DefaultController.java
index 1d738507..631e6b77 100644
--- a/src/com/platform/controller/DefaultController.java
+++ b/src/com/platform/controller/DefaultController.java
@@ -1,3 +1,4 @@
+
package com.platform.controller;
import javax.servlet.http.HttpServletRequest;
@@ -28,3 +29,4 @@ public class DefaultController {
}
}
+
diff --git a/src/com/platform/controller/FolderController.java b/src/com/platform/controller/FolderController.java
index 4e817bd4..04254ffb 100644
--- a/src/com/platform/controller/FolderController.java
+++ b/src/com/platform/controller/FolderController.java
@@ -1,6 +1,7 @@
package com.platform.controller;
+
import java.util.Date;
import java.util.List;
@@ -13,11 +14,19 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+
+
import com.base.BaseController;
import com.base.CustomException;
import com.platform.entities.GfsFolderEntity;
+
+
import com.platform.entities.VolumeEntity;
import com.platform.glusterfs.VolumeInfo;
+
+import com.platform.entities.VolumeEntity;
+import com.platform.glusterfs.VolumeInfo;
+
import com.platform.service.IGfsService;
@@ -30,13 +39,19 @@ import com.platform.service.IGfsService;
* @since [产品/模块版本]
*/
@Controller
+
@RequestMapping("")
+
public class FolderController extends BaseController {
@Resource(name = "gfsService")
private IGfsService gfsService;
+
+
+
@RequestMapping(value="/getAllSubPathByPath", method= RequestMethod.POST)
+
public Object getAllSubPathByPath(String path) throws Exception {
System.out.println(path);
Object result = null;
@@ -47,6 +62,22 @@ public class FolderController extends BaseController {
return result;
}
+
+ @RequestMapping("/copyFolder")
+ public Object copyFolder(String srcpath, String dstPath, String name) throws Exception {
+ // -1 :error; -2: the filename is not exists ;-3 :destFolderName ; 1: right
+ int result = 0;
+// int result = gfsService.copyFolder(srcpath, dstPath, name);
+ System.out.println(srcpath);
+ System.out.println(dstPath);
+ String obj = "right";
+
+ if (1 != result) {
+ obj = "err";
+ }
+ return obj;
+ }
+
// /**
// * <一句话功能简述> 查询集群中所有的 volume 及其 信息
// * <功能详细描述>
@@ -77,6 +108,7 @@ public class FolderController extends BaseController {
public Object getVolumByName(String volumeName) throws Exception{
VolumeEntity result = gfsService.getOneVolume(volumeName);
return result;
+
}
}
diff --git a/src/com/platform/controller/SetGlusterfsController.java b/src/com/platform/controller/SetGlusterfsController.java
index 481331dd..60b776b0 100644
--- a/src/com/platform/controller/SetGlusterfsController.java
+++ b/src/com/platform/controller/SetGlusterfsController.java
@@ -17,7 +17,12 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
+
+ * <一句话功能简述>
+
+
* <一句话功能简述>
+
* <功能详细描述>
* @author liliy
* @version [版本号,2016年9月8日]
@@ -26,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
*/
@Controller
public class SetGlusterfsController {
+
@RequestMapping("/tes")
public Object defaultHandler(HttpServletRequest req, HttpServletResponse request) {
//���?ƥ�������
@@ -42,4 +48,5 @@ public class SetGlusterfsController {
}
+
}
diff --git a/src/com/platform/controller/ShowGlusterfsController.java b/src/com/platform/controller/ShowGlusterfsController.java
index 83f6e468..7667bc2b 100644
--- a/src/com/platform/controller/ShowGlusterfsController.java
+++ b/src/com/platform/controller/ShowGlusterfsController.java
@@ -10,6 +10,7 @@
*/
package com.platform.controller;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -17,9 +18,11 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.platform.glusterfs.ClusterInfo;
+import com.platform.glusterfs.VolumeInfo;
/**
* <一句话功能简述>
+
* <功能详细描述>
* @author liliy
* @version [版本号,2016年9月8日]
@@ -28,8 +31,11 @@ import com.platform.glusterfs.ClusterInfo;
*/
@Controller
public class ShowGlusterfsController {
+
+
/**
* <一句话功能简述>
+
* <功能详细描述>
* @return
* @see [类、类#方法、类#成员]
diff --git a/src/com/platform/entities/Brick.java b/src/com/platform/entities/Brick.java
index 53337ac9..e6701dab 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 9ec6e8f8..5a9a56b7 100644
--- a/src/com/platform/entities/FolderNode.java
+++ b/src/com/platform/entities/FolderNode.java
@@ -9,9 +9,11 @@ public class FolderNode {
private String path;
private List childNodes = new ArrayList();
+
public FolderNode() {
// TODO Auto-generated constructor stub
}
+
public FolderNode(String name) {
this.name = name;
diff --git a/src/com/platform/glusterfs/ClusterInfo.java b/src/com/platform/glusterfs/ClusterInfo.java
index 55674f56..add5e191 100644
--- a/src/com/platform/glusterfs/ClusterInfo.java
+++ b/src/com/platform/glusterfs/ClusterInfo.java
@@ -1,110 +1,124 @@
-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 com.platform.utils.Constant;
-
-/**
- * 获取集群节点信息
- * 如果获取不正常,则返回null,如果获取正常,返回map表示节点ip和ip的状态
- * 如果ip在集群中且联通状态为PeerinCluster(Connected)
- * 如果ip在集群中且但不连通为PeerinCluster(Disconnected)
- * @author liliy
- * @version [版本号,2016年9月12日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-public class ClusterInfo {
- public static Logger log = Logger.getLogger(ClusterInfo.class);
-
- public Map showClusterInfo() {
- log.info("get cluster info");
- Map peerIps = new HashMap();
-
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd, Constant.port, 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).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);
- }
-
- }
- 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(!peerIps.containsKey(peerip)){
- return Constant.peerincluster_disconnected;
- }
- return peerIps.get(peerip);
- }
-
-
- public static void main(String[] args) {
- PropertyConfigurator.configure("log4j.properties");
- System.out.println(new ClusterInfo().showClusterInfo());
- }
-}
+
+
+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 com.platform.utils.Constant;
+
+/**
+ * 获取集群信息
+ * @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
+ * @see [类、类#方法、类#成员]
+ */
+ public Map showClusterInfo() {
+ log.info("get cluster info");
+ Map peerIps = new HashMap();
+
+ 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).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);
+ }
+
+ }
+ 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 6f9e7eba..86289174 100644
--- a/src/com/platform/glusterfs/CopyData.java
+++ b/src/com/platform/glusterfs/CopyData.java
@@ -1,9 +1,9 @@
+
package com.platform.glusterfs;
import java.util.List;
+
import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
@@ -33,7 +33,7 @@ public class CopyData {
String sourceFolderName = sourceVolumeName;
String destFolderName = destVolumeName;
- status = copyFolderFiles(sourceFolderName, destFolderName, fileName);
+ status = copyFolderFilesAnyway(sourceFolderName, destFolderName, fileName);
return status;
}
@@ -47,13 +47,6 @@ public class CopyData {
*/
public int copyFolderFiles(String sourceFolderName, String destFolderName, String fileName) {
int progress=0;
- // 末尾 含有 /
- Pattern pattern2 = Pattern.compile("\\/$");
- Matcher matcher = pattern2.matcher(sourceFolderName);
- if (matcher.find()) {
- sourceFolderName = sourceFolderName.substring(0, sourceFolderName.length()-1);
- }
-
log.info("start copy " + fileName + " from " + sourceFolderName + " to " + destFolderName);
ShowData showData=new ShowData();
Map reStrings=showData.showFolderData(destFolderName);
@@ -62,7 +55,7 @@ public class CopyData {
return -3;
}
- reStrings=showData.showFolderData(sourceFolderName+"/"+fileName);
+ reStrings=showData.showFolderData(sourceFolderName+"/"+fileName);
if(reStrings==null){
log.info("3202 "+sourceFolderName+"/"+fileName+" is not exists");
return -2;
@@ -79,45 +72,40 @@ public class CopyData {
return 1;
}
- /**
- * -1 :error; -2: the filename is not exists ;-3 :destFolderName ; 1: right
- * not exists
- *
- * @param folderName
+ /** 不管目的路径存在与否,强制拷贝
+ * @param sourceFolderName
+ * @param destFolderName
* @param fileName
* @return
*/
- public int copyFolderFiles(String sourceFolderName, String destFolderName) {
- int progress=0;
- log.info("start copy " + " 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);
- if(reStrings==null){
- log.info("3202 "+sourceFolderName+" is not exists");
- return -2;
- }
- String command = "cp -r " + sourceFolderName+" "+destFolderName;
- /*
- * RunCommand runCommand = new RunCommand();
-
- List reStrings = runCommand.runCommandWait(command);
- */
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
+ public int copyFolderFilesAnyway(String sourceFolderName, String destFolderName, String fileName) {
+ createFolders(destFolderName);
+ int result = copyFolderFiles(sourceFolderName, destFolderName, fileName);
+ return result;
+ }
- log.info("copy " + sourceFolderName +"/" + " to " + destFolderName + " running");
+ 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() {
- PropertyConfigurator.configure("log4j.properties");
+
copyFolderFiles("/home", "/home/ubuntu", "system_data");
}
}
+
+
diff --git a/src/com/platform/glusterfs/GetTreeData.java b/src/com/platform/glusterfs/GetTreeData.java
index c7a6018d..81f3ba5b 100644
--- a/src/com/platform/glusterfs/GetTreeData.java
+++ b/src/com/platform/glusterfs/GetTreeData.java
@@ -1,120 +1,125 @@
-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;
-
-/**
- * <一句话功能简述> 获得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());
- }
- 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 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");
- 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.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;
+ }
+}
+
+*/
diff --git a/src/com/platform/glusterfs/RemoveData.java b/src/com/platform/glusterfs/RemoveData.java
index 2297ed03..6f854b26 100644
--- a/src/com/platform/glusterfs/RemoveData.java
+++ b/src/com/platform/glusterfs/RemoveData.java
@@ -16,17 +16,7 @@ import com.platform.utils.Constant;
public class RemoveData {
public static Logger log = Logger.getLogger ( RemoveData.class);
- public int deleteVolumeFiles(String volumeName,String fileName){
- log.info("start delete "+volumeName+" "+fileName);
- int status=-1;
- /**
- * get mount point of volumeName
- */
- String folderName=volumeName;
-
- status=deleteFolderFiles(folderName,fileName);
- return status;
- }
+
/**
* -1 :error; 0: the filename is not exists ; 1: right
@@ -34,65 +24,33 @@ public class RemoveData {
* @param fileName
* @return
*/
- public int deleteFolderFiles(String folderName,String fileName){
- log.info("start delete "+folderName+"/"+fileName);
+ public int deleteFolder(String folderName){
+ log.info("start delete "+folderName);
ShowData showData=new ShowData();
- Map reStrings=showData.showFolderData(folderName+"/"+fileName);
+ Map reStrings=showData.showFolderData(folderName);
if(reStrings==null){
- log.error("3301 "+folderName+"/"+fileName+" is not exists");
+ log.error("3301 "+folderName+" is not exists");
return -1;
}
- String command="rm -r "+folderName+"/"+fileName;
+ String command="rm -r "+folderName;
// int status=runCommand.runCommand(command);
Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
- log.info("delete "+folderName+" "+fileName+" running");
+ log.info("delete "+folderName+" running");
return 1;
}
- public int getFolderSize(String name) {
- log.info("get "+name+" size");
- String command="du -k -d 0 "+name;
- /*
- * RunCommand runCommand=new RunCommand();
-
- List reStrings=runCommand.runCommandWait(command);
- */
- List reStrings=Constant.ganymedSSH.execCmdWaitAcquiescent(command);
-
- if(reStrings==null){
- log.error("3302 the "+command+" return error");
- return -1;
- }
- if(reStrings.size()<1){
- log.error("3303 the "+command+" return error");
- return -1;
- }
-
- if(reStrings.size()==1 && reStrings.get(0).contains("No such file or directory")){
- log.info("3304 "+name+" is not exists");
- return 0;
- }
- String strSize=(reStrings.get(0).split("\t"))[0];
- int size=Integer.parseInt(strSize);
- log.info(name +" size is "+size);
- return size;
- }
-// @Test
- public void test_getFolderSize() {
- PropertyConfigurator.configure("log4j.properties");
- getFolderSize("/home/ubuntu");
- }
+
@Test
public void testDeleteFolderFiles() {
PropertyConfigurator.configure("log4j.properties");
- deleteFolderFiles("/home/ubuntu","system_data");
+ deleteFolder("/home/ubuntu");
}
}
diff --git a/src/com/platform/glusterfs/SetCluster.java b/src/com/platform/glusterfs/SetCluster.java
index bd556377..8f260e5a 100644
--- a/src/com/platform/glusterfs/SetCluster.java
+++ b/src/com/platform/glusterfs/SetCluster.java
@@ -1,11 +1,67 @@
-package com.platform.glusterfs;
-
-import org.apache.log4j.Logger;
-
-public class SetCluster {
- public static Logger log = Logger.getLogger ( SetCluster.class);
-
- public int addPeer(String peerip){
- 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 d1517011..5502aaee 100644
--- a/src/com/platform/glusterfs/SetVolume.java
+++ b/src/com/platform/glusterfs/SetVolume.java
@@ -1,498 +1,511 @@
-
-/**
- * @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 com.platform.utils.Constant;
-
-
-
-public class SetVolume {
- public static Logger log = Logger.getLogger(SetVolume.class);
-
- /*
- * 创建volume 返回值:创建并挂载成功 1
- *
- */
- 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.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, 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!");
- if ((new ShowData().showFolderData(mountPoint)) == null) {
- Constant.ganymedSSH.execCmdWaitAcquiescent("mkdir " + mountPoint);
- }
- // 进行挂载
- String command3 = "mount -t glusterfs " + Constant.hostIp + ":/" + volumeName + " " + mountPoint;
- List reStrings3 = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
- Constant.rootPasswd, Constant.port, command3);
-
- // 这里需要添加解析挂载命令返回字符串的语句,由于我的系统有问题,导致挂载成功后返回WARNING: getfattr
- // not found, certain checks will be skipped..
- // 所以这句代码未经测试
- // 成功挂载时没有任何返回信息
- if (reStrings3.size() == 0 || reStrings.get(0).contains("GlusterFS is already mounted"))
- {
- log.info("mount point successed!");
- 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
- *
- * @param volumeName
- * @return 1 表示成功 ;-1表示volume name不存在;-2表示停止volume 失败
- */
- public int deleteVolume(String volumeName) {
- int status = 0;
- List volumeNames = new VolumeInfo().showAllVolumeName();
- if (!volumeNames.contains(volumeName)) {
- log.error("3801 " + volumeName + " is not exists !");
- return -1;
- }
-
- List mountPoints = new VolumeInfo().getVolumeMountPoint(volumeName);
- if (stopVolume(volumeName) != 0) {
- log.error("3802 " + volumeName + " stop failed !");
- return -2;
- }
- log.info("stop "+volumeName+" successed!");
- if (null == mountPoints) {
- return -2;
- }
- for(String mountPoint:mountPoints){
- if (mountPoint != null) {
- String command = "umount -l " + mountPoint;
- Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
- log.info("umount "+mountPoint+" successed!");
- }
- }
- 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!");
- return 1;
- }
-
- /*
- * 为指定的volume添加brick,参数中需要指定类型、数量等 返回值:1成功 ;其他失败
- * 过程中需要先检查volume是否存在,还需检查给出的brick数量与类型、count是否相符
- */
- 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 reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, command);
-
- // 添加成功的返回信息是:volume add-brick: success
- if (reStrings != null && reStrings.size() > 0 && reStrings.get(0).contains("volume add-brick: success")) {
- log.info("添加brick成功!");
- return 1;
- } else {
- log.error("3205 add brick failed,please check the system");
- // System.out.println("3202 add brick failed,please check the system");
- return -5;
- }
- }
-
- /*
- * 为指定的volume删除brick,参数中需要指定类型、数量等 返回值:1 成功 ;其他 失败
- * 过程中需要先检查volume是否存在,还需检查给出的brick数量与类型、count是否相符
- */
- public int deleteBrickVolume(String volumeName, List brickName, int count, String type) {
- int able = isAble(volumeName, count, type, brickName);
-
- if (able != 1) {
- return able;
- }
- String command = null;
-
- log.info("delete brick of the specified volume");
-
- String brick = concat(brickName);
-
- if (type.equals(Constant.distributed)) {
- command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " " + brick + " force";
- } else if (type.equals(Constant.replica)) {
- command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " repli " + count + " " + brick
- + " force";
- } else if (type.equals(Constant.stripe)) {
- command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " stripe " + count + " " + brick
- + " force";
- }
-
- if (command == null) {
- log.error("3305 remove brick failed,please check the system");
- return -5;
- }
- log.info("即将执行删除命令");
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, command);
- // System.out.println(reStrings);
- log.info("删除命令执行完毕");
-
- // 删除成功的返回信息是“volume remove-brick: success”
- if (reStrings.get(0).contains("volume remove-brick: success")) {
- {
- log.info("删除brick成功");
- return 1;
- }
- } else {
- log.error("3305 remove brick failed,please check the system");
-
- return -5;
- }
-
- }
-
- /*
- * 停止指定volume 参数中需给出volume的名字 返回值: 0 成功 -1 失败
- * 需要先检查volume是否存在,然后判断volume的状态是否已经是停止状态
- */
- public int stopVolume(String volumeName) {
- log.info("stop volume");
-
- // 首先需要判断volume是否存在,调用其他函数返回所有volume的名字
- boolean volumeExist = false;
-
- List volume = new VolumeInfo().showAllVolumeName();
- for (String temp : volume) {
- if (temp.equals(volumeName)) {
- volumeExist = true;
- break;
- }
- }
-
- if (!volumeExist) {
- // volume不存在
- log.error("3501 the volume doesnot exist");
- System.out.println("3501 the volume doesnot exist");
- return -1;
- } else {
- // volume存在,则需判断volume的状态是否已经为“stop”
- if (new VolumeInfo().getVolumeStatus(volumeName).equals("Stopped")) {
- log.error("3502 the volume is already stoped");
- System.out.println("3502 the volume is already stoped");
- return -1;
- } else {
- String command = "echo -e \"y\"| gluster volume stop " + volumeName;
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, command);
-
- // 标记操作结果:operation = 1 操作成功
- // operation = 0 操作失败
- int operation = 0;
- for (String temp2 : reStrings) {
- if (temp2.contains("volume stop: " + volumeName + ": " + "success")) {
- operation = 1;
- break;
- }
- System.out.println("operation: " + operation);
- }
-
- if (operation == 1) {
- return 0;
- } else {
- log.error("3503 stop " + volumeName + " failed");
- System.out.println("3503 stop " + volumeName + " failed");
- return -1;
- }
-
- }
- }
- }
-
- /*
- * 开启指定volume 参数中需给出volume的名字 返回值: 0 成功 -1 失败
- * 需要先检查volume是否存在,然后判断volume的状态是否已经是开启状态
- */
- public int startVolume(String volumeName) {
- log.info("start volume");
- boolean volumeExist = false;
- List volume = new VolumeInfo().showAllVolumeName();
-
- for (String temp : volume) {
- if (temp.equals(volumeName)) {
- volumeExist = true;
- break;
- }
- }
-
- if (volumeExist) {
- if (!(new VolumeInfo().getVolumeStatus(volumeName).equals("Started"))) {
- String command = "gluster volume start " + volumeName;
-
- int operation = 0;
-
- // 执行命令
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, command);
- for (String temp2 : reStrings) {
- if (temp2.equals("volume start: " + volumeName + ": " + "success")) {
- operation = 1;
- }
- }
-
- if (operation == 1) {
- return 0;
- } else {
- log.error("3602 start volume failed");
- System.out.println("3602 start volume failed");
- return -1;
- }
- } else {
- log.error("volume已经开启");
- System.out.println("volume已经开启");
- return -1;
- }
- } else {
- log.error("3601 the volume does not exist");
- // System.out.println("3601 the volume does not exist");
- return -1;
- }
- }
-
- // 需要将存于List变量中的brick的位置组装成可以在glusterfs命令行中直接使用的格式
- public String concat(List brickName) {
- StringBuffer result = new StringBuffer();
- int len = brickName.size();
- for (int i = 0; i < len; i++) {
- result.append(brickName.get(i));
- result.append(" ");
- }
- return result.toString();
- }
-
- /*
- * 只在创建volume时使用此函数 创建volume时对不同数据卷,brick的数量需要满足和count的关系
- * 首先判断它们是否满足关系,在不满足的关系的情况下是肯定无法完成操作的 1:可以创建 ;-1:brick的ip不在集群中或者未连接; -2 -3
- * -4 :类型与brick数目不匹配 ; -5 :volumeName 已经存在;-6:挂载点存在且不为空,不能作为挂载点; -7:未知错误
- */
- public int isAbleCreateVolume(String volumeName, int count, String type, List bricks, String mountPoint) {
- int status = 0;
-
- int length = bricks.size();
-
- if (type.equals(Constant.distributed)) {
- if (count != 0) {
- log.error("3101 the kind of distributed requires the arg of count to be 0");
- return -2;
- }
- }
- if (type.equals(Constant.stripe)) {
- if (length % count != 0) {
- log.error("3102 the number of bricks should be the same as or the times of the stripe count");
- return -3;
- }
- }
- if (type.equals(Constant.replica)) {
- if ((length % count) != 0) {
- log.error(
- "3103 the number of bricks should be the same as the replicate count or the times of replicate count");
- return -4;
- }
- }
-
- Map peer_status = new ClusterInfo().showClusterInfo();
- peer_status.put(Constant.hostIp, Constant.peerincluster_connected);
- for (String brick : bricks) {
- brick = brick.split(":")[0];
- if (!(peer_status.containsKey(brick) && peer_status.get(brick).equals(Constant.peerincluster_connected))) {
- log.error("3105 birck " + brick + " ip is not in cluster");
- return -1;
- }
-
- }
-
- List volumeNames = new VolumeInfo().showAllVolumeName();
- if(volumeNames==null){
- log.error("3108 showAllVolumeName return error");
- return -7;
- }
- if (volumeNames.contains(volumeName)) {
- log.error("3106 " + volumeName + " is already exists! ");
- return -5;
- }
-
- Map datas = new ShowData().showFolderData(mountPoint);
- if (datas != null && datas.size() > 0) {
- log.error("3107 " + mountPoint + " is not exists or not empty ! ");
- return -6;
- }
- return 1;
- }
-
- /**
- * 添加或删除volume的brick时,首先需要判断volume是否存在,然后需要判断volume类型、count及brick数目
- *
- * @param volumeName
- * @param count
- * @param type
- * @param bricks
- * @return 1 满足条件,可以添加;-1 :volume name is not exists;-2,-3,-4 类型与brick数量不匹配;
- */
- public int isAble(String volumeName, int count, String type, List bricks) {
- List volumeNames = new VolumeInfo().showAllVolumeName();
-
- if (!volumeNames.contains(volumeName)) {
- log.error("3201:" + volumeName + " is not exists! ");
- return -1;
- }
-
- int length = bricks.size();
- if (type.equals("distribute")) {
- if (count == 0)
- return 1;
- else {
- log.error("3202: the kind of distributed requires the arg of count to be 0");
- // System.out.println(" the kind of distributed requires the
- // arg of count to be 0");
- return -2;
- }
- }
-
- if (type.equals("stripe")) {
- if (length % count == 0)
- return 1;
- else {
- log.error("3203: the number of bricks should be the same as or the times of the stripe count");
- // System.out.println(" the number of bricks should be the
- // same as or the times of the stripe count");
- return -3;
-
- }
- }
- if (type.equals("replicate")) {
- if ((length % count) == 0)
- return 1;
- else {
- log.error(
- "3204: the number of bricks should be the same as the replicate count or the times of replicate count");
-
- return -4;
- }
- }
-
- return 1;
- }
-
- public static void main(String[] args) {
- SetVolume setVolume = new SetVolume();
- int operation = 0;
- PropertyConfigurator.configure("log4j.properties");
- // TODO Auto-generated method stub
- // 测试创建volume的代码
-
- List bricksToCreate = new ArrayList();
- bricksToCreate.add("192.168.0.110:/v1");
- bricksToCreate.add("192.168.0.116:/v1");
- operation = setVolume.createVolume("v1", 0, "distributed", bricksToCreate, "/home/v1_point");
-// operation = setVolume.deleteVolume("v3");
- //
- // // 以下是测试添加brick的代码
- //
- // List bricksToAdd = new ArrayList();
- // bricksToAdd.add("192.168.191.23:/v3");
- // operation = setVolume.addBrickVolume("v3", bricksToAdd, 0,
- // "distribute");
- // System.out.println(operation);
-
- // 以下代码是测试删除brick的代码
- // List bricksToAdd= new ArrayList();
- // bricksToAdd.add("192.168.191.23:/v3");
- // operation =
- // setVolume.deleteBrickVolume("v3",bricksToAdd,0,"distribute");
- // System.out.println(operation);
- // 以下是测试start volume的代码
- // String volumeToStart = "testcreate" ;
- // int startOperation = startVolume(volumeToStart);
- // System.out.println(startOperation);
- // 以下是测试stop volume
- String volumeToStop = "v3";
- // int startOperation = setVolume.stopVolume(volumeToStop);
- // 以下是测试创建volume并完成挂载的代码
- // List bricksToCreate= new ArrayList();
- // bricksToCreate.add("192.168.214.135:/home/create");
- // bricksToCreate.add("192.168.214.138:/home/create");
- //
- // int operation =
- // createVolume("createAndmount",0,"distribute",bricksToCreate,"/mnt/create");
- // System.out.println(operation);
- }
-}
+
+
+/**
+ * @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 com.platform.utils.Constant;
+
+
+
+public class SetVolume {
+ public static Logger log = Logger.getLogger(SetVolume.class);
+
+ /*
+ * 创建volume 返回值:创建并挂载成功 1
+ *
+ */
+ 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.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, 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!");
+ if ((new ShowData().showFolderData(mountPoint)) == null) {
+ Constant.ganymedSSH.execCmdWaitAcquiescent("mkdir " + mountPoint);
+ }
+ // 进行挂载
+ String command3 = "mount -t glusterfs " + Constant.hostIp + ":/" + volumeName + " " + mountPoint;
+ List reStrings3 = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
+ Constant.rootPasswd, Constant.port, command3);
+
+ // 这里需要添加解析挂载命令返回字符串的语句,由于我的系统有问题,导致挂载成功后返回WARNING: getfattr
+ // not found, certain checks will be skipped..
+ // 所以这句代码未经测试
+ // 成功挂载时没有任何返回信息
+ if (reStrings3.size() == 0 || reStrings.get(0).contains("GlusterFS is already mounted"))
+ {
+ log.info("mount point successed!");
+ 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
+ *
+ * @param volumeName
+ * @return 1 表示成功 ;-1表示volume name不存在;-2表示停止volume 失败
+ */
+ public int deleteVolume(String volumeName) {
+ int status = 0;
+ List volumeNames = new VolumeInfo().showAllVolumeName();
+ if (!volumeNames.contains(volumeName)) {
+ log.error("3801 " + volumeName + " is not exists !");
+ return -1;
+ }
+
+ List mountPoints = new VolumeInfo().getVolumeMountPoint(volumeName);
+ if (stopVolume(volumeName) != 0) {
+ log.error("3802 " + volumeName + " stop failed !");
+ return -2;
+ }
+ log.info("stop "+volumeName+" successed!");
+ for(String mountPoint:mountPoints){
+ if (mountPoint != null) {
+ String command = "umount -l " + mountPoint;
+ Constant.ganymedSSH.execCmdNoWaitAcquiescent(command);
+ log.info("umount "+mountPoint+" successed!");
+ }
+ }
+ 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!");
+ 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 reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, command);
+
+ // 添加成功的返回信息是:volume add-brick: success
+ if (reStrings != null && reStrings.size() > 0 && reStrings.get(0).contains("volume add-brick: success")) {
+ log.info("添加brick成功!");
+ return 1;
+ } else {
+ log.error("3205 add brick failed,please check the system");
+ // System.out.println("3202 add brick failed,please check the system");
+ return -5;
+ }
+ }
+
+
+ /**
+ * 为指定的volume删除brick,参数中需要指定类型、数量等 返回值:1 成功 ;其他 失败
+ * 过程中需要先检查volume是否存在,还需检查给出的brick数量与类型、count是否相符
+ * @param volumeName
+ * @param brickName
+ * @param count
+ * @param type
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public int deleteBrickVolume(String volumeName, List brickName, int count, String type) {
+ int able = isAble(volumeName, count, type, brickName);
+
+ if (able != 1) {
+ return able;
+ }
+ String command = null;
+
+ log.info("delete brick of the specified volume");
+
+ String brick = concat(brickName);
+
+ if (type.equals(Constant.distributed)) {
+ command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " " + brick + " force";
+ } else if (type.equals(Constant.replica)) {
+ command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " repli " + count + " " + brick
+ + " force";
+ } else if (type.equals(Constant.stripe)) {
+ command = "echo -e \"y\" | gluster volume remove-brick " + volumeName + " stripe " + count + " " + brick
+ + " force";
+ }
+
+ if (command == null) {
+ log.error("3305 remove brick failed,please check the system");
+ return -5;
+ }
+ log.info("即将执行删除命令");
+ List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, command);
+ // System.out.println(reStrings);
+ log.info("删除命令执行完毕");
+
+ // 删除成功的返回信息是“volume remove-brick: success”
+ if (reStrings.get(0).contains("volume remove-brick: success")) {
+ {
+ log.info("删除brick成功");
+ return 1;
+ }
+ } else {
+ log.error("3305 remove brick failed,please check the system");
+
+ return -5;
+ }
+
+ }
+
+ /*
+ * 停止指定volume 参数中需给出volume的名字 返回值: 0 成功 -1 失败
+ * 需要先检查volume是否存在,然后判断volume的状态是否已经是停止状态
+ */
+ public int stopVolume(String volumeName) {
+ log.info("stop volume");
+
+ // 首先需要判断volume是否存在,调用其他函数返回所有volume的名字
+ boolean volumeExist = false;
+
+ List volume = new VolumeInfo().showAllVolumeName();
+ for (String temp : volume) {
+ if (temp.equals(volumeName)) {
+ volumeExist = true;
+ break;
+ }
+ }
+
+ if (!volumeExist) {
+ // volume不存在
+ log.error("3501 the volume doesnot exist");
+ System.out.println("3501 the volume doesnot exist");
+ return -1;
+ } else {
+ // volume存在,则需判断volume的状态是否已经为“stop”
+ if (new VolumeInfo().getVolumeStatus(volumeName).equals("Stopped")) {
+ log.error("3502 the volume is already stoped");
+ System.out.println("3502 the volume is already stoped");
+ return -1;
+ } else {
+ String command = "echo -e \"y\"| gluster volume stop " + volumeName;
+ List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, command);
+
+ // 标记操作结果:operation = 1 操作成功
+ // operation = 0 操作失败
+ int operation = 0;
+ for (String temp2 : reStrings) {
+ if (temp2.contains("volume stop: " + volumeName + ": " + "success")) {
+ operation = 1;
+ break;
+ }
+ System.out.println("operation: " + operation);
+ }
+
+ if (operation == 1) {
+ return 0;
+ } else {
+ log.error("3503 stop " + volumeName + " failed");
+ System.out.println("3503 stop " + volumeName + " failed");
+ return -1;
+ }
+
+ }
+ }
+ }
+
+ /*
+ * 开启指定volume 参数中需给出volume的名字 返回值: 0 成功 -1 失败
+ * 需要先检查volume是否存在,然后判断volume的状态是否已经是开启状态
+ */
+ public int startVolume(String volumeName) {
+ log.info("start volume");
+ boolean volumeExist = false;
+ List volume = new VolumeInfo().showAllVolumeName();
+
+ for (String temp : volume) {
+ if (temp.equals(volumeName)) {
+ volumeExist = true;
+ break;
+ }
+ }
+
+ if (volumeExist) {
+ if (!(new VolumeInfo().getVolumeStatus(volumeName).equals("Started"))) {
+ String command = "gluster volume start " + volumeName;
+
+ int operation = 0;
+
+ // 执行命令
+ List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, command);
+ for (String temp2 : reStrings) {
+ if (temp2.equals("volume start: " + volumeName + ": " + "success")) {
+ operation = 1;
+ }
+ }
+
+ if (operation == 1) {
+ return 0;
+ } else {
+ log.error("3602 start volume failed");
+ System.out.println("3602 start volume failed");
+ return -1;
+ }
+ } else {
+ log.error("volume已经开启");
+ System.out.println("volume已经开启");
+ return -1;
+ }
+ } else {
+ log.error("3601 the volume does not exist");
+ // System.out.println("3601 the volume does not exist");
+ return -1;
+ }
+ }
+
+ // 需要将存于List变量中的brick的位置组装成可以在glusterfs命令行中直接使用的格式
+ public String concat(List brickName) {
+ StringBuffer result = new StringBuffer();
+ int len = brickName.size();
+ for (int i = 0; i < len; i++) {
+ result.append(brickName.get(i));
+ result.append(" ");
+ }
+ return result.toString();
+ }
+
+ /*
+ * 只在创建volume时使用此函数 创建volume时对不同数据卷,brick的数量需要满足和count的关系
+ * 首先判断它们是否满足关系,在不满足的关系的情况下是肯定无法完成操作的 1:可以创建 ;-1:brick的ip不在集群中或者未连接; -2 -3
+ * -4 :类型与brick数目不匹配 ; -5 :volumeName 已经存在;-6:挂载点存在且不为空,不能作为挂载点; -7:未知错误
+ */
+ public int isAbleCreateVolume(String volumeName, int count, String type, List bricks, String mountPoint) {
+ int status = 0;
+
+ int length = bricks.size();
+
+ if (type.equals(Constant.distributed)) {
+ if (count != 0) {
+ log.error("3101 the kind of distributed requires the arg of count to be 0");
+ return -2;
+ }
+ }
+ if (type.equals(Constant.stripe)) {
+ if (length % count != 0) {
+ log.error("3102 the number of bricks should be the same as or the times of the stripe count");
+ return -3;
+ }
+ }
+ if (type.equals(Constant.replica)) {
+ if ((length % count) != 0) {
+ log.error(
+ "3103 the number of bricks should be the same as the replicate count or the times of replicate count");
+ return -4;
+ }
+ }
+
+ Map peer_status = new ClusterInfo().showClusterInfo();
+ peer_status.put(Constant.hostIp, Constant.peerincluster_connected);
+ for (String brick : bricks) {
+ brick = brick.split(":")[0];
+ if (!(peer_status.containsKey(brick) && peer_status.get(brick).equals(Constant.peerincluster_connected))) {
+ log.error("3105 birck " + brick + " ip is not in cluster");
+ return -1;
+ }
+
+ }
+
+ List volumeNames = new VolumeInfo().showAllVolumeName();
+ if(volumeNames==null){
+ log.error("3108 showAllVolumeName return error");
+ return -7;
+ }
+ if (volumeNames.contains(volumeName)) {
+ log.error("3106 " + volumeName + " is already exists! ");
+ return -5;
+ }
+
+ Map datas = new ShowData().showFolderData(mountPoint);
+ if (datas != null && datas.size() > 0) {
+ log.error("3107 " + mountPoint + " is not exists or not empty ! ");
+ return -6;
+ }
+ return 1;
+ }
+
+ /**
+ * 添加或删除volume的brick时,首先需要判断volume是否存在,然后需要判断volume类型、count及brick数目
+ *
+ * @param volumeName
+ * @param count
+ * @param type
+ * @param bricks
+ * @return 1 满足条件,可以添加;-1 :volume name is not exists;-2,-3,-4 类型与brick数量不匹配;
+ */
+ public int isAble(String volumeName, int count, String type, List bricks) {
+ List volumeNames = new VolumeInfo().showAllVolumeName();
+
+ if (!volumeNames.contains(volumeName)) {
+ log.error("3201:" + volumeName + " is not exists! ");
+ return -1;
+ }
+
+ int length = bricks.size();
+ if (type.equals("distribute")) {
+ if (count == 0)
+ return 1;
+ else {
+ log.error("3202: the kind of distributed requires the arg of count to be 0");
+ // System.out.println(" the kind of distributed requires the
+ // arg of count to be 0");
+ return -2;
+ }
+ }
+
+ if (type.equals("stripe")) {
+ if (length % count == 0)
+ return 1;
+ else {
+ log.error("3203: the number of bricks should be the same as or the times of the stripe count");
+ // System.out.println(" the number of bricks should be the
+ // same as or the times of the stripe count");
+ return -3;
+
+ }
+ }
+ if (type.equals("replicate")) {
+ if ((length % count) == 0)
+ return 1;
+ else {
+ log.error(
+ "3204: the number of bricks should be the same as the replicate count or the times of replicate count");
+
+ return -4;
+ }
+ }
+
+ return 1;
+ }
+
+ public static void main(String[] args) {
+ SetVolume setVolume = new SetVolume();
+ int operation = 0;
+// PropertyConfigurator.configure("log4j.properties");
+ // TODO Auto-generated method stub
+ // 测试创建volume的代码
+
+ List bricksToCreate = new ArrayList();
+ bricksToCreate.add("192.168.0.110:/v2");
+ bricksToCreate.add("192.168.0.116:/v2");
+ operation = setVolume.createVolume("v2", 0, "distributed", bricksToCreate, "/home/v2_point");
+// operation = setVolume.deleteVolume("v3");
+ //
+ // // 以下是测试添加brick的代码
+ //
+ // List bricksToAdd = new ArrayList();
+ // bricksToAdd.add("192.168.191.23:/v3");
+ // operation = setVolume.addBrickVolume("v3", bricksToAdd, 0,
+ // "distribute");
+ // System.out.println(operation);
+
+ // 以下代码是测试删除brick的代码
+ // List bricksToAdd= new ArrayList();
+ // bricksToAdd.add("192.168.191.23:/v3");
+ // operation =
+ // setVolume.deleteBrickVolume("v3",bricksToAdd,0,"distribute");
+ // System.out.println(operation);
+ // 以下是测试start volume的代码
+ // String volumeToStart = "testcreate" ;
+ // int startOperation = startVolume(volumeToStart);
+ // System.out.println(startOperation);
+ // 以下是测试stop volume
+ String volumeToStop = "v3";
+ // int startOperation = setVolume.stopVolume(volumeToStop);
+ // 以下是测试创建volume并完成挂载的代码
+ // List bricksToCreate= new ArrayList();
+ // bricksToCreate.add("192.168.214.135:/home/create");
+ // bricksToCreate.add("192.168.214.138:/home/create");
+ //
+ // int operation =
+ // createVolume("createAndmount",0,"distribute",bricksToCreate,"/mnt/create");
+ // System.out.println(operation);
+ }
+}
+
diff --git a/src/com/platform/glusterfs/ShowData.java b/src/com/platform/glusterfs/ShowData.java
index 49481923..57a7b5c7 100644
--- a/src/com/platform/glusterfs/ShowData.java
+++ b/src/com/platform/glusterfs/ShowData.java
@@ -1,131 +1,131 @@
-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 ShowData {
-
- public static Logger log = Logger.getLogger ( ShowData.class);
-
- /**
- * get the data of volumeName Map s1 is data name and s2 is type file or folder
- * <功能详细描述>
- * @param volumeName
- * @return
- * @see [类、类#方法、类#成员]
- */
- public Map showVolumeFiles(String volumeName){
- log.info("start show the data");
- Map data_type=new HashMap();
- /**
- * get mount point of volumeName
- */
- String folderName=volumeName;
-
- data_type=showFolderData(volumeName);
- return data_type;
-}
- /**
- * get the data of folder name
- * Map is folder name and type 1 is file and others is folder
-
-
- * @param FolderName
- * @return
- */
- public Map showFolderData(String folderName){
- log.info(" start get "+folderName+" data");
-
-
- Map data_type=new HashMap();
- String command="ls -l "+folderName;
-
- /*
- RunCommand runCommand=new RunCommand();
- List reStrings=runCommand.runCommandWait(command);
- */
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd, Constant.port, command);
- if(reStrings==null){
- log.error("2101 command get result is null");
- return null;
- }
- if(reStrings.size()==0){
- log.info("2102 the folder is empty");
- return data_type;
- }
- if(reStrings.get(0).contains("No such file or directory")){
- log.info("2103 the "+folderName+" is not exists");
- return null;
- }
- /**
- * remove first line total number
- */
- reStrings.remove(0);
-
- for(Iterator it2 = reStrings.iterator();it2.hasNext();){
- String line=(String)it2.next();
- line=line.replaceAll(" +", " ");
- String keyValue[]=line.split(" ");
- if(keyValue.length<9){
- log.error("2104 "+line+" length is short");
- continue;
- }
-
- data_type.put(keyValue[8], keyValue[1]);
-
- }
- log.info(" get "+folderName+" data successed");
- return data_type;
- }
-
- /**
- * 返回folder的大小字节表示
- * -2表示获取大小出错,-1表示folder不存在,其他表示folder的大小
- * @param folderPath
- * @return
- * @see [类、类#方法、类#成员]
- */
- public long getFolderSize(String folderPath) {
- log.info("get " + folderPath + " Size ");
-
- String command = "du -k -d 0 "+folderPath+" | grep " + folderPath + "|awk \'{print $1}\'";
- List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command);
- if(reStrings==null || reStrings.size()==0){
- log.error("get " + folderPath + " Size error!");
- return -2;
- }
- if (reStrings.get(0).contains(Constant.noSuchFile)) {
- log.error(folderPath+" is not exists");
- return -1;
- }
- long size = Long.valueOf(reStrings.get(0));
-
-
- return size;
- }
-
-
- /**
- *
- * <一句话功能简述>
- * <功能详细描述>
- * @see [类、类#方法、类#成员]
- */
- @Test
- public void testShowData(){
-
- System.out.println(showFolderData("/home"));
-
- }
+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 ShowData {
+
+ public static Logger log = Logger.getLogger ( ShowData.class);
+
+ /**
+ * get the data of volumeName Map s1 is data name and s2 is type file or folder
+ * <功能详细描述>
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public Map showVolumeFiles(String volumeName){
+ log.info("start show the data");
+ Map data_type=new HashMap();
+ /**
+ * get mount point of volumeName
+ */
+ String folderName=volumeName;
+
+ data_type=showFolderData(volumeName);
+ return data_type;
+}
+ /**
+ * get the data of folder name
+ * Map is folder name and type 1 is file and others is folder
+
+
+ * @param FolderName
+ * @return
+ */
+ public Map showFolderData(String folderName){
+ log.info(" start get "+folderName+" data");
+
+
+ Map data_type=new HashMap();
+ String command="ls -l "+folderName;
+
+ /*
+ RunCommand runCommand=new RunCommand();
+ List reStrings=runCommand.runCommandWait(command);
+ */
+ List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd, Constant.port, command);
+ if(reStrings==null){
+ log.error("2101 command get result is null");
+ return null;
+ }
+ if(reStrings.size()==0){
+ log.info("2102 the folder is empty");
+ return data_type;
+ }
+ if(reStrings.get(0).contains("No such file or directory")){
+ log.info("2103 the "+folderName+" is not exists");
+ return null;
+ }
+ /**
+ * remove first line total number
+ */
+ reStrings.remove(0);
+
+ for(Iterator it2 = reStrings.iterator();it2.hasNext();){
+ String line=(String)it2.next();
+ line=line.replaceAll(" +", " ");
+ String keyValue[]=line.split(" ");
+ if(keyValue.length<9){
+ log.error("2104 "+line+" length is short");
+ continue;
+ }
+
+ data_type.put(keyValue[8], keyValue[1]);
+
+ }
+ log.info(" get "+folderName+" data successed");
+ return data_type;
+ }
+
+ /**
+ * 返回folder的大小字节表示
+ * -2表示获取大小出错,-1表示folder不存在,其他表示folder的大小
+ * @param folderPath
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public long getFolderSize(String folderPath) {
+ log.info("get " + folderPath + " Size ");
+
+ String command = "du -k -d 0 "+folderPath+" | grep " + folderPath + "|awk \'{print $1}\'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command);
+ if(reStrings==null || reStrings.size()==0){
+ log.error("get " + folderPath + " Size error!");
+ return -2;
+ }
+ if (reStrings.get(0).contains(Constant.noSuchFile)) {
+ log.error(folderPath+" is not exists");
+ return -1;
+ }
+ long size = Long.valueOf(reStrings.get(0));
+
+
+ return size;
+ }
+
+
+ /**
+ *
+ * <一句话功能简述>
+ * <功能详细描述>
+ * @see [类、类#方法、类#成员]
+ */
+ @Test
+ public void testShowData(){
+
+ System.out.println(showFolderData("/home"));
+
+ }
}
\ No newline at end of file
diff --git a/src/com/platform/glusterfs/VolumeInfo.java b/src/com/platform/glusterfs/VolumeInfo.java
index 26173fd8..15e4cb14 100644
--- a/src/com/platform/glusterfs/VolumeInfo.java
+++ b/src/com/platform/glusterfs/VolumeInfo.java
@@ -1,334 +1,422 @@
-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 org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
-
-import com.platform.utils.Constant;
-import com.platform.utils.GanymedSSH;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class VolumeInfo {
- public static Logger log = Logger.getLogger(VolumeInfo.class);
-
- /**
- * 显示所有volume名称
- * <功能详细描述>
- * @return
- * @see [类、类#方法、类#成员]
- */
- public List showAllVolumeName() {
- log.info("get volume name");
- List volNames = new ArrayList();
-
- /*
- * String command = "echo \"" + Constant.rootPasswd +
- * "\" |sudo -S gluster volume info|grep ^Volume.Name"; RunCommand
- * runCommand = new RunCommand(); List reStrings =
- * runCommand.runCommandWait(command);
- */
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
- Constant.rootPasswd, Constant.port, Constant.glusterVolumeInfo + "|grep ^Volume.Name");
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1401 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1402 get result is nothing");
- return null;
- }
- if (reStrings.get(0).contains(Constant.noVolume)) {
- reStrings.clear();
- return reStrings;
- }
- if (!(reStrings.get(0).split(":")[0].contains("Volume Name"))) {
- log.error("1403 get result string wrong");
- return null;
- }
-
- String nameInfo = "";
- for (Iterator it = reStrings.iterator(); it.hasNext();) {
- String line = (String) it.next();
- String str[] = line.split(":");
- volNames.add(str[1].replaceAll(" ", ""));
- }
- return volNames;
-
- }
-
- /**
- * 给定参数volume的名称获得volume的类型
- * <功能详细描述>
- * @param volumeName
- * @return
- * @see [类、类#方法、类#成员]
- */
- public String getVolumeType(String volumeName) {
- log.info("get volume type");
- String volType = "";
-
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
- Constant.rootPasswd, Constant.port, Constant.glusterVolumeInfo + volumeName + "|grep ^Type");
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1501 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1502 get result is nothing");
- return null;
- }
- if (!(reStrings.get(0).split(":")[0].contains("Type"))) {
- log.error("1503 get result string wrong");
- return null;
- }
-
- // System.out.println(reStrings);
-
- for (Iterator it = reStrings.iterator(); it.hasNext();) {
- String line = (String) it.next();
- String str[] = line.split(":");
- volType = str[1];
- }
- volType = volType.replaceAll(" ", "");
- return volType;
- }
-
- public String getVolumeStatus(String volumeName) {
- log.info("get volume status");
- String volStatus = "";
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
- Constant.rootPasswd, Constant.port, Constant.glusterVolumeInfo + "|grep ^Status");
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1701 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1702 get result is nothing");
- return null;
- }
- if (!(reStrings.get(0).split(":")[0].contains("Status"))) {
- log.error("1703 get result string wrong");
- return null;
- }
-
- for (Iterator it = reStrings.iterator(); it.hasNext();) {
- String line = (String) it.next();
- String str[] = line.split(":");
- volStatus = str[1].replaceAll(" ", "");
- }
- return volStatus;
- }
-
- public Double getVolumeAllSize(String volumeName) {
- log.info("get volume allSize");
- Double allSize = null;
- /*
- * ======= // waiting for testing... public Double
- * getVolumeAllSize(String volumeName) { log.info("get volume allSize");
- * Double allSize = null;
- *
- * >>>>>>> origin/AlexKie String command = "echo \"" +
- * Constant.rootPasswd + "\" |sudo -S df -h|grep " + volumeName +
- * "|awk '{print $2}'"; RunCommand runCommand = new RunCommand();
- * List reStrings = runCommand.runCommandWait(command); <<<<<<<
- * HEAD
- */
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, Constant.df + "|grep " + volumeName + "|awk '{print $2}'");
- // System.out.println(reStrings);
- if(reStrings==null){
- log.error("1801 get result is null");
- return null;
- }
- if(reStrings.size()==0){
- log.error("1802 get result is nothing");
- return null;
- }
- char flag = reStrings.get(0).trim().toCharArray()[0];
- if (flag < 48 || flag > 57) {
- log.error("1803 get result string wrong");
- return null;
- }
-
- for (Iterator it = reStrings.iterator(); it.hasNext();) {
- String line = (String) it.next();
- String str[] = line.split("[^0-9]");
- allSize = Double.parseDouble(str[0]);
- }
-
- return allSize;
- }
-
- public Double getVolumeUseSize(String volumeName) {
- log.info("get volume used size");
- Double usedSize = null;
-
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser,
- Constant.rootPasswd, Constant.port, Constant.df + "|grep " + volumeName + "|awk '{print $3}'");
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1901 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1902 get result is nothing");
- return null;
- }
- char flag = reStrings.get(0).trim().toCharArray()[0];
- if (flag < 48 || flag > 57) {
- log.error("1903 get result string wrong");
- return null;
- }
-
- for (Iterator it = reStrings.iterator(); it.hasNext();) {
- String line = (String) it.next();
- String str[] = line.split("[^0-9]");
-
- usedSize = Double.parseDouble(str[0]);
- }
-
- return usedSize;
- }
-
- /**
- * @param volumeName
- * @return String ipAndpath[] = brick.split(":");
- String ip = ipAndpath[0];
- String path = ipAndpath[1];
- */
- public List getVolumeBricks(String volumeName) {
- log.info("get volume bricks");
-
- String cmd = "gluster volume info " + volumeName + " |grep ^Brick'[0-9]\\+' |awk '{print $2}'";
- List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1601 get volume bricks wrong");
- return null;
- }
-
- return reStrings;
- }
-
- public List getVolumeMountPoint(String volumeName) {
- log.info("get volume MountPoint");
-
- List reStrings = Constant.ganymedSSH.execCmdWait(Constant.hostIp, Constant.rootUser, Constant.rootPasswd,
- Constant.port, Constant.df + "|grep " + volumeName + "|awk '{print $6}'");
- // System.out.println(reStrings);
- if(reStrings==null){
- log.error("11001 get result string wrong");
- return null;
- }
- if(reStrings.size()==0){
- log.error("11002 "+volumeName+" is no mountpoint");
- return null;
- }
-
- char flag = reStrings.get(0).trim().toCharArray()[0];
- if (flag != '/') {
- log.error("11003 get result string wrong");
- return null;
- }
- List mountPoints = new ArrayList<>();
- for(String mountPoint:reStrings){
- mountPoint=mountPoint.replaceAll(" ", "");
- mountPoints.add(mountPoint);
- }
- return mountPoints;
- }
-
- public Map getVolumebricksDataSize(String volumeName) {
- List bricks = getVolumeBricks(volumeName);
- Map brick_size = new HashMap<>();
- if (bricks == null) {
- return null;
- }
- for (String brick : bricks) {
- String ipAndpath[] = brick.split(":");
- String ip = ipAndpath[0];
- String path = ipAndpath[1];
- String cmd = "du -d 0 " + path + "|awk '{print $1}'";
- List reStrings = Constant.ganymedSSH.execCmdWait(ip, Constant.rootUser, Constant.rootPasswd,
- Constant.port, cmd);
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1901 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1902 get result is nothing");
- return null;
- }
- Pattern pattern = Pattern.compile("[0-9]*");
- Matcher isNum = pattern.matcher(reStrings.get(0));
- if (!isNum.matches()) {
- log.error("1903 " + reStrings.get(0) + " is unexpect");
- return null;
- }
- brick_size.put(brick, Double.parseDouble(reStrings.get(0)));
- }
- return brick_size;
- }
-
- public Map getVolumebricksAvailableSize(String volumeName) {
- List bricks = getVolumeBricks(volumeName);
- Map brick_size = new HashMap<>();
- if (bricks == null) {
- return null;
- }
- for (String brick : bricks) {
- String ipAndpath[] = brick.split(":");
- String ip = ipAndpath[0];
- String path = ipAndpath[1];
- String cmd = "df " + path + "|awk '{print $4}'";
- List reStrings = Constant.ganymedSSH.execCmdWait(ip, Constant.rootUser, Constant.rootPasswd,
- Constant.port, cmd);
- // System.out.println(reStrings);
- if (reStrings == null) {
- log.error("1901 get result is null");
- return null;
- }
- if (reStrings.size() == 0) {
- log.error("1902 get result is nothing");
- return null;
- }
- Pattern pattern = Pattern.compile("[0-9]*");
- Matcher isNum = pattern.matcher(reStrings.get(1));
- if (!isNum.matches()) {
- log.error("1903 " + reStrings.get(1) + " is unexpect");
- return null;
- }
- brick_size.put(brick, Double.parseDouble(reStrings.get(1)));
- }
- return brick_size;
- }
-
- @Test
- public void test_getVolumebricksDataSize() {
- System.out.println(getVolumebricksDataSize("gfs_ftp"));
- }
-
- @Test
- public void test_getVolumebricksAvailableSize() {
- System.out.println(getVolumebricksAvailableSize("gfs_ftp"));
- }
-
- // @Test
- public void test_getVolumeBricks() {
- getVolumeBricks("gfs_ftp");
- }
-}
+
+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 org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
+
+import com.platform.utils.Constant;
+import com.platform.utils.GanymedSSH;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 获取volume信息 <功能详细描述>
+ *
+ * @author liliy
+ * @version [版本号,2016年9月13日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class VolumeInfo {
+ public static Logger log = Logger.getLogger(VolumeInfo.class);
+
+ /**
+ * 显示所有volume名称 <功能详细描述>
+ *
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public List showAllVolumeName() {
+ log.info("get volume name");
+ List volNames = new ArrayList();
+
+ /*
+ * String command = "echo \"" + Constant.rootPasswd +
+ * "\" |sudo -S gluster volume info|grep ^Volume.Name"; RunCommand
+ * runCommand = new RunCommand(); List reStrings =
+ * runCommand.runCommandWait(command);
+ */
+ List reStrings = Constant.ganymedSSH
+ .execCmdWaitAcquiescent(Constant.glusterVolumeInfo + "|grep ^Volume.Name");
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1401 get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1402 get result is nothing");
+ return null;
+ }
+ if (reStrings.get(0).contains(Constant.noVolume)) {
+ reStrings.clear();
+ return reStrings;
+ }
+ if (!(reStrings.get(0).split(":")[0].contains("Volume Name"))) {
+ log.error("1403 get result string wrong");
+ return null;
+ }
+
+ String nameInfo = "";
+ for (Iterator it = reStrings.iterator(); it.hasNext();) {
+ String line = (String) it.next();
+ String str[] = line.split(":");
+ volNames.add(str[1].replaceAll(" ", ""));
+ }
+ return volNames;
+
+ }
+
+ /**
+ * 给定参数volume的名称获得volume的类型 <功能详细描述>
+ *
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public String getVolumeType(String volumeName) {
+ log.info("get volume type");
+ String volType = "";
+
+ List reStrings = Constant.ganymedSSH
+ .execCmdWaitAcquiescent(Constant.glusterVolumeInfo + volumeName + "|grep ^Type");
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1501 get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1502 get result is nothing");
+ return null;
+ }
+ if (!(reStrings.get(0).split(":")[0].contains("Type"))) {
+ log.error("1503 get result string wrong");
+ return null;
+ }
+
+ // System.out.println(reStrings);
+
+ for (Iterator it = reStrings.iterator(); it.hasNext();) {
+ String line = (String) it.next();
+ String str[] = line.split(":");
+ volType = str[1];
+ }
+ volType = volType.replaceAll(" ", "");
+ return volType;
+ }
+
+ /**
+ * 获取volumeName的状态 如果出错返回null,如果volumeName不存在则返回Volume volumeName does not
+ * exist,正常返回状态Started,Stopped,Created
+ *
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public String getVolumeStatus(String volumeName) {
+ log.info("get volume status");
+ String volStatus = "";
+ String cmd = Constant.glusterVolumeInfo + " " + volumeName + " |grep ^Status";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1701 get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1702 get result is nothing");
+ return null;
+ }
+
+ if (reStrings.get(0).contains("does not exist")) {
+ log.error("1703 " + reStrings.get(0));
+ return reStrings.get(0);
+ }
+ if (!(reStrings.get(0).split(":")[0].contains("Status"))) {
+ log.error("1704 get result string wrong");
+ return null;
+ }
+ for (Iterator it = reStrings.iterator(); it.hasNext();) {
+ String line = (String) it.next();
+ String str[] = line.split(":");
+ volStatus = str[1].replaceAll(" ", "");
+ }
+
+ return volStatus;
+ }
+
+ /**
+ * 获取volumeName的可用大小
+ * volumeName不存在返回-1,获取大小错误返回-2 ,正常返回volumeName的可用大小
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public Long getVolumeAvailableSize(String volumeName) {
+ log.info("get volume availableSize");
+ Long allSize = 0L;
+
+ String cmd = Constant.df + " | grep " + volumeName + "|awk '{print $4}'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1802 get result is error");
+ return -2L;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1801 " + volumeName + " is not exists!");
+ return -1L;
+ }
+ allSize = Long.parseLong(reStrings.get(0));
+ return allSize;
+ }
+
+ /**
+ * 获取volumeName已用空间
+ * volumeName不存在返回-1,获取大小错误返回-2 ,正常返回volumeName的已用的大小
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public Long getVolumeUseSize(String volumeName) {
+ log.info("get volume used size");
+ Long usedSize = 0L;
+ if (volumeIsExists(volumeName) == false) {
+ log.error("1901 " + volumeName + " is not exists!");
+ return -1L;
+
+ }
+
+ String cmd = "df | grep " + volumeName + "|awk '{print $3}'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1901 get result is null");
+ return -2L;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1902 " + volumeName + " is not exists!");
+ return -1L;
+ }
+ usedSize = Long.parseLong(reStrings.get(0));
+ return usedSize;
+ }
+
+ /**
+ * 获取volumeName的bricks
+ * 返回一个bircks的list ip:path,如果volumeName不存在返回null
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public List getVolumeBricks(String volumeName) {
+ log.info("get volume bricks");
+
+ String cmd = "gluster volume info " + volumeName + " |grep ^Brick'[0-9]\\+' |awk '{print $2}'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1601 get volume bricks wrong");
+ return null;
+ }
+ if (reStrings.size()==0) {
+ log.error("1602 "+volumeName+" is not exists!");
+ return null;
+ }
+ return reStrings;
+ }
+
+ /**
+ * 获取volumeName所有挂载点
+ * <功能详细描述>
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public List getVolumeMountPoint(String volumeName) {
+ log.info("get volume MountPoint");
+ List mountPoints = new ArrayList<>();
+ String cmd=Constant.df + "|grep " + volumeName + "|awk '{print $6}'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("11001 get result string wrong");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("11002 " + volumeName + " is not exists or no mountpoint");
+ return null;
+ }
+
+// char flag = reStrings.get(0).trim().toCharArray()[0];
+// if (flag != '/') {
+// log.error("11003 get result string wrong");
+// return null;
+// }
+
+ for (String mountPoint : reStrings) {
+ mountPoint = mountPoint.replaceAll(" ", "");
+ mountPoints.add(mountPoint);
+ }
+ return mountPoints;
+ }
+
+ public String getOneVolumeMountPoint(String volumeName) {
+ log.info("get one volume MountPoint");
+
+ String mountPoint=null;
+ String cmd=Constant.df + "|grep " + volumeName + "|awk '{print $6}'";
+ List reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("11001 get result string wrong");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("11002 " + volumeName + " is not exists or no mountpoint");
+ return null;
+ }
+
+// char flag = reStrings.get(0).trim().toCharArray()[0];
+// if (flag != '/') {
+// log.error("11003 get result string wrong");
+// return null;
+// }
+
+ mountPoint=reStrings.get(0);
+ return mountPoint;
+ }
+
+ /**
+ * 获取volumeName的所有brick中数据占用空间的大小
+ * 返回一个map表示bricks和数据大小
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public Map getVolumebricksDataSize(String volumeName) {
+ List bricks = getVolumeBricks(volumeName);
+ Map brick_size = new HashMap<>();
+ if (bricks == null) {
+ return null;
+ }
+ for (String brick : bricks) {
+ String ipAndpath[] = brick.split(":");
+ String ip = ipAndpath[0];
+ String path = ipAndpath[1];
+ String cmd = "du -d 0 " + path + "|awk '{print $1}'";
+ List reStrings = Constant.ganymedSSH.execCmdWait(ip, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1901 get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1902 "+brick+" is not exits!");
+ return null;
+ }
+ Pattern pattern = Pattern.compile("[0-9]*");
+ Matcher isNum = pattern.matcher(reStrings.get(0));
+ if (!isNum.matches()) {
+ log.error("1903 " + reStrings.get(0) + " is unexpect");
+ return null;
+ }
+ brick_size.put(brick, Double.parseDouble(reStrings.get(0)));
+ }
+ return brick_size;
+ }
+
+ /**
+ * 获取volumeName的所有brick中可用空间大小
+ * 返回一个map表示bricks和可用空间大小
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public Map getVolumebricksAvailableSize(String volumeName) {
+ List bricks = getVolumeBricks(volumeName);
+ Map brick_size = new HashMap<>();
+ if (bricks == null) {
+ return null;
+ }
+ for (String brick : bricks) {
+ String ipAndpath[] = brick.split(":");
+ String ip = ipAndpath[0];
+ String path = ipAndpath[1];
+ String cmd = "df " + path + "|awk '{print $4}'";
+ List reStrings = Constant.ganymedSSH.execCmdWait(ip, Constant.rootUser, Constant.rootPasswd,
+ Constant.port, cmd);
+ // System.out.println(reStrings);
+ if (reStrings == null) {
+ log.error("1901 get result is null");
+ return null;
+ }
+ if (reStrings.size() == 0) {
+ log.error("1902 get result is nothing");
+ return null;
+ }
+ Pattern pattern = Pattern.compile("[0-9]*");
+ Matcher isNum = pattern.matcher(reStrings.get(1));
+ if (!isNum.matches()) {
+ log.error("1903 " + reStrings.get(1) + " is unexpect");
+ return null;
+ }
+ brick_size.put(brick, Double.parseDouble(reStrings.get(1)));
+ }
+ return brick_size;
+ }
+
+ /**
+ * 判断volumeName是否存在,存在返回true,不存在返回false <功能详细描述>
+ *
+ * @param volumeName
+ * @return
+ * @see [类、类#方法、类#成员]
+ */
+ public boolean volumeIsExists(String volumeName) {
+ List volumes = showAllVolumeName();
+ if (volumes == null) {
+ return false;
+ }
+ if (volumes.contains(volumeName)) {
+ return true;
+ }
+ return false;
+ }
+
+ // @Test
+ public void test_getVolumebricksDataSize() {
+ System.out.println(getVolumebricksDataSize("gfs_ftp"));
+ }
+
+ // @Test
+ public void test_getVolumebricksAvailableSize() {
+ System.out.println(getVolumebricksAvailableSize("gfs_ftp"));
+ }
+
+ // @Test
+ public void test_getVolumeBricks() {
+ getVolumeBricks("gfs_ftp");
+ }
+
+ @Test
+ public void test_getVolumeStatus() {
+ System.out.println(getVolumeStatus("gs_fp"));
+ }
+
+ // @Test
+ public void test_getVolumeMountPoint() {
+ System.out.println(getVolumeMountPoint("gfs_ftp"));
+ System.out.println(getVolumeMountPoint("v1"));
+ }
+}
diff --git a/src/com/platform/service/DataInfoService.java b/src/com/platform/service/DataInfoService.java
index fb2c2886..c08d0850 100644
--- a/src/com/platform/service/DataInfoService.java
+++ b/src/com/platform/service/DataInfoService.java
@@ -1,3 +1,4 @@
+
package com.platform.service;
import org.springframework.ui.ModelMap;
diff --git a/src/com/platform/service/IGfsService.java b/src/com/platform/service/IGfsService.java
index 0b9d9841..e8a693fb 100644
--- a/src/com/platform/service/IGfsService.java
+++ b/src/com/platform/service/IGfsService.java
@@ -10,11 +10,13 @@
*/
package com.platform.service;
+
import java.util.List;
import com.platform.entities.FolderNode;
import com.platform.entities.VolumeEntity;
+
/**
* <一句话功能简述>
* <功能详细描述>
@@ -45,6 +47,7 @@ public interface IGfsService {
* @throws Exception
* @see [类、类#方法、类#成员]
*/
+
public int copyFolder(List srcFolders, String dstFolder, String name) throws Exception;
/**
@@ -68,5 +71,6 @@ public interface IGfsService {
public int moveData(String volumeName, String srcPath, String dstPath) throws Exception;
public int deleteData(String volumeName, String srcPath) throws Exception;
+
}
diff --git a/src/com/platform/service/OracleExtractHelper.java b/src/com/platform/service/OracleExtractHelper.java
index 2a7b89ed..82228e28 100644
--- a/src/com/platform/service/OracleExtractHelper.java
+++ b/src/com/platform/service/OracleExtractHelper.java
@@ -40,8 +40,18 @@ public class OracleExtractHelper {
/**
* 创建dblink
*
+<<<<<<< HEAD
+<<<<<<< HEAD
+ * @param conn
+ * @param oc
+=======
+ * @param conn 汇总库的连接
+ * @param oc 采集库
+>>>>>>> 355b6e47a4fa8d058029ec939fe4fefdaa751275
+=======
* @param conn 汇总库的连接
* @param oc 采集库
+>>>>>>> web_backend_develope
* dblink连接参数实体
*/
public void createDBLink(Connection conn, OracleConnectorParams oc) {
diff --git a/src/com/platform/service/impl/GfsServiceImpl.java b/src/com/platform/service/impl/GfsServiceImpl.java
index 535b9870..39ea77d2 100644
--- a/src/com/platform/service/impl/GfsServiceImpl.java
+++ b/src/com/platform/service/impl/GfsServiceImpl.java
@@ -1,161 +1,161 @@
-
-/**
- * 文件名 : GfsServiceImpl.java
- * 版权 : <版权/公司名>
- * 描述 : <描述>
- * @author chen
- * 版本 : <版本>
- * 修改时间: 2016年9月8日
- * 修改内容: <修改内容>
- */
-package com.platform.service.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.stereotype.Service;
-
-import com.platform.entities.Brick;
-import com.platform.entities.FolderNode;
-import com.platform.entities.VolumeEntity;
-import com.platform.glusterfs.CopyData;
-import com.platform.glusterfs.GetTreeData;
-import com.platform.glusterfs.VolumeInfo;
-import com.platform.service.IGfsService;
-import com.platform.utils.CacheTreeData;
-import com.platform.utils.ThreadVolume;
-import com.platform.utils.getTreeDataByPath;
-
-/**
- * <一句话功能简述> gfs功能实现类
- * <功能详细描述>
- * @author chen
- * @version [版本号,2016年9月8日]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
-@Service(value = "gfsService")
-public class GfsServiceImpl implements IGfsService {
-
- /** gfs目录树形查询 */
- private getTreeDataByPath getFolder = new getTreeDataByPath();
-
- /** 数据迁移实现 */
- private CopyData copydata = new CopyData();
-
- /** Volume信息查询 */
- private VolumeInfo volumeInfo = new VolumeInfo();
-
- @Override
- public FolderNode getFolder(String path) {
- FolderNode result = getFolder.findByPath(path);
- return result;
- }
-
- @Override
- public int copyFolder(List srcFolders, String dstFolder, String name)
- throws Exception {
- int status = 0 ;
- if (null != srcFolders) {
-
- for (String string : srcFolders) {
- status = copydata.copyFolderFiles(string, dstFolder, name);
- }
- }
- return status;
- }
-
- /* (non-Javadoc)
- * @see com.platform.service.IGfsService#getAllVolume()
- */
- @Override
- public List getAllVolumes() throws Exception {
- List volumeList = CacheTreeData.getVolumeList();
- if (null == volumeList) {
- return new ArrayList();
- }
- for (VolumeEntity volume : volumeList) {
-// VolumeEntity volume = new VolumeEntity();
-// volume.setName(volumeName);
-// List path = volumeInfo.getVolumeMountPoint(volumeName);
-// //默认加载第一个路径
-// if (null != path && path.size() > 0) {
-// volume.setPath(path.get(0));
-// }
-// volume.setAllSize(volumeInfo.getVolumeAllSize(volumeName));
-// volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
-// //TODO 查询brick--
-// //返回 ip:path
-// List brickStrs = volumeInfo.getVolumeBricks(volumeName);
-// //brick已用大小:
-// Map usedSize = volumeInfo.getVolumebricksDataSize(volumeName);
-// Map availableSize = volumeInfo.getVolumebricksAvailableSize(volumeName);
-//
-//
-// List brickList = new ArrayList();
-// for (String brickIpPath : brickStrs) {
-// Brick b = new Brick();
-// String ipAndpath[] = brickIpPath.split(":");
-// String brickip = ipAndpath[0];
-// String brickpath = ipAndpath[1];
-// //iP , path ,
-// b.setIp(brickip);
-// b.setPath(brickpath);
-// b.setAvailableSize(availableSize.get(brickIpPath));
-// b.setUsedSize(usedSize.get(brickIpPath));
-// brickList.add(b);
-// }
-// volume.setBrick(brickList);
- 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);
- }
- }
- return volumeList;
- }
-
- @Override
- public VolumeEntity getOneVolume(String volumeName) throws Exception {
- VolumeEntity volume = new VolumeEntity();
- volume.setName(volumeName);
- List path = volumeInfo.getVolumeMountPoint(volumeName);
- if (null != path && path.size() > 0) {
- volume.setPath(path.get(0));
- }
- volume.setAllSize(volumeInfo.getVolumeAllSize(volumeName));
- volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
-// volume.setBrick(brick);
- if (null != volume.getPath()) {
- List list = new ArrayList();
- if (null != path && path.size() > 0) {
- FolderNode currNode = getFolder(path.get(0));
- if (null != currNode && null != currNode.getChildNodes()) {
- list.addAll(currNode.getChildNodes());
- }
- }
- volume.setFolder(list);
- }
- return volume;
- }
-
- @Override
- public int moveData(String volumeName, String srcPath, String dstPath)
- throws Exception {
-
- int result = copydata.copyFolderFiles(srcPath, dstPath, "app");
- return result;
- }
-
- @Override
- public int deleteData(String volumeName, String srcPath) throws Exception {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
+
+/**
+ * 文件名 : GfsServiceImpl.java
+ * 版权 : <版权/公司名>
+ * 描述 : <描述>
+ * @author chen
+ * 版本 : <版本>
+ * 修改时间: 2016年9月8日
+ * 修改内容: <修改内容>
+ */
+package com.platform.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.stereotype.Service;
+
+import com.platform.entities.Brick;
+import com.platform.entities.FolderNode;
+import com.platform.entities.VolumeEntity;
+import com.platform.glusterfs.CopyData;
+import com.platform.glusterfs.GetTreeData;
+import com.platform.glusterfs.VolumeInfo;
+import com.platform.service.IGfsService;
+import com.platform.utils.CacheTreeData;
+import com.platform.utils.ThreadVolume;
+import com.platform.utils.getTreeDataByPath;
+
+/**
+ * <一句话功能简述> gfs功能实现类
+ * <功能详细描述>
+ * @author chen
+ * @version [版本号,2016年9月8日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+@Service(value = "gfsService")
+public class GfsServiceImpl implements IGfsService {
+
+ /** gfs目录树形查询 */
+ private getTreeDataByPath getFolder = new getTreeDataByPath();
+
+ /** 数据迁移实现 */
+ private CopyData copydata = new CopyData();
+
+ /** Volume信息查询 */
+ private VolumeInfo volumeInfo = new VolumeInfo();
+
+ @Override
+ public FolderNode getFolder(String path) {
+ FolderNode result = getFolder.findByPath(path);
+ return result;
+ }
+
+ @Override
+ public int copyFolder(List srcFolders, String dstFolder, String name)
+ throws Exception {
+ int status = 0 ;
+ if (null != srcFolders) {
+
+ for (String string : srcFolders) {
+ status = copydata.copyFolderFilesAnyway(string, dstFolder, name);
+ }
+ }
+ return status;
+ }
+
+ /* (non-Javadoc)
+ * @see com.platform.service.IGfsService#getAllVolume()
+ */
+ @Override
+ public List getAllVolumes() throws Exception {
+ List volumeList = CacheTreeData.getVolumeList();
+ if (null == volumeList) {
+ return new ArrayList();
+ }
+ for (VolumeEntity volume : volumeList) {
+// VolumeEntity volume = new VolumeEntity();
+// volume.setName(volumeName);
+// List path = volumeInfo.getVolumeMountPoint(volumeName);
+// //默认加载第一个路径
+// if (null != path && path.size() > 0) {
+// volume.setPath(path.get(0));
+// }
+// volume.setAllSize(volumeInfo.getVolumeAllSize(volumeName));
+// volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
+// //TODO 查询brick--
+// //返回 ip:path
+// List brickStrs = volumeInfo.getVolumeBricks(volumeName);
+// //brick已用大小:
+// Map usedSize = volumeInfo.getVolumebricksDataSize(volumeName);
+// Map availableSize = volumeInfo.getVolumebricksAvailableSize(volumeName);
+//
+//
+// List brickList = new ArrayList();
+// for (String brickIpPath : brickStrs) {
+// Brick b = new Brick();
+// String ipAndpath[] = brickIpPath.split(":");
+// String brickip = ipAndpath[0];
+// String brickpath = ipAndpath[1];
+// //iP , path ,
+// b.setIp(brickip);
+// b.setPath(brickpath);
+// b.setAvailableSize(availableSize.get(brickIpPath));
+// b.setUsedSize(usedSize.get(brickIpPath));
+// brickList.add(b);
+// }
+// volume.setBrick(brickList);
+ 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);
+ }
+ }
+ return volumeList;
+ }
+
+ @Override
+ public VolumeEntity getOneVolume(String volumeName) throws Exception {
+ VolumeEntity volume = new VolumeEntity();
+ volume.setName(volumeName);
+ List path = volumeInfo.getVolumeMountPoint(volumeName);
+ if (null != path && path.size() > 0) {
+ volume.setPath(path.get(0));
+ }
+ volume.setAllSize(volumeInfo.getVolumeAvailableSize(volumeName));
+ volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
+// volume.setBrick(brick);
+ if (null != volume.getPath()) {
+ List list = new ArrayList();
+ if (null != path && path.size() > 0) {
+ FolderNode currNode = getFolder(path.get(0));
+ if (null != currNode && null != currNode.getChildNodes()) {
+ list.addAll(currNode.getChildNodes());
+ }
+ }
+ volume.setFolder(list);
+ }
+ return volume;
+ }
+
+ @Override
+ public int moveData(String volumeName, String srcPath, String dstPath)
+ throws Exception {
+
+ int result = copydata.copyFolderFilesAnyway(srcPath, dstPath, "app");
+ return result;
+ }
+
+ @Override
+ public int deleteData(String volumeName, String srcPath) throws Exception {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
diff --git a/src/com/platform/service/thread/ThreadMoveData.java b/src/com/platform/service/thread/ThreadMoveData.java
index ae319d4c..b7e2f867 100644
--- a/src/com/platform/service/thread/ThreadMoveData.java
+++ b/src/com/platform/service/thread/ThreadMoveData.java
@@ -135,7 +135,7 @@ public class ThreadMoveData{
//如果是 待 迁移状态的
if ("0".equals(next2move.getCompleteStatus())) {
//待迁移的数据 -- 开始迁移
- copy.copyFolderFiles(next2move.getDataPath(), next2move.getDstPath(), "app");
+ copy.copyFolderFilesAnyway(next2move.getDataPath(), next2move.getDstPath(), "app");
// "1" :正在上传,0:等待 迁移, 2:成功 3:失败
next2move.setCompleteStatus("1");
next2move.setLastTime(DateForm.date2StringBysecond(new Date()));
diff --git a/src/com/platform/utils/CacheTreeData.java b/src/com/platform/utils/CacheTreeData.java
index 742df9a2..6d6caa1b 100644
--- a/src/com/platform/utils/CacheTreeData.java
+++ b/src/com/platform/utils/CacheTreeData.java
@@ -1,39 +1,39 @@
-package com.platform.utils;
-
-import java.util.List;
-import java.util.Map;
-
-import com.platform.entities.FolderNode;
-import com.platform.entities.VolumeEntity;
-
-public class CacheTreeData {
-
- private static List folders = null;
-
- private static List volumeList = null;
-
- public static List getFolders() {
- return folders;
- }
-
- public static void setFolders(List folders) {
- CacheTreeData.folders = folders;
- }
-
- /**
- * @return the volumeList
- */
- public static List getVolumeList() {
- return volumeList;
- }
-
- /**
- * @param volumeList the volumeList to set
- */
- public static void setVolumeList(List volumeList) {
- CacheTreeData.volumeList = volumeList;
- }
-
-}
-
-
+package com.platform.utils;
+
+import java.util.List;
+import java.util.Map;
+
+import com.platform.entities.FolderNode;
+import com.platform.entities.VolumeEntity;
+
+public class CacheTreeData {
+
+ private static List folders = null;
+
+ private static List volumeList = null;
+
+ public static List getFolders() {
+ return folders;
+ }
+
+ public static void setFolders(List folders) {
+ CacheTreeData.folders = folders;
+ }
+
+ /**
+ * @return the volumeList
+ */
+ public static List getVolumeList() {
+ return volumeList;
+ }
+
+ /**
+ * @param volumeList the volumeList to set
+ */
+ public static void setVolumeList(List volumeList) {
+ CacheTreeData.volumeList = volumeList;
+ }
+
+}
+
+
diff --git a/src/com/platform/utils/ConfigsLoader.java b/src/com/platform/utils/ConfigsLoader.java
index ef260782..9f3880df 100644
--- a/src/com/platform/utils/ConfigsLoader.java
+++ b/src/com/platform/utils/ConfigsLoader.java
@@ -1,76 +1,76 @@
-package com.platform.utils;
-
-import java.util.Properties;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-import com.platform.service.thread.ThreadMoveData;
-
-public class ConfigsLoader implements ServletContextListener {
- private static ConfigPropertyReader cReader = null;
-
- @Override
- public void contextDestroyed(ServletContextEvent sEvent) {
- // TODO Auto-generated method stub
- Configs.CONSOLE_LOGGER.info("系统停止..");
- }
-
- @SuppressWarnings("static-access")
- @Override
- public void contextInitialized(ServletContextEvent sEvent) {
- // TODO Auto-generated method stub
- Configs.CONSOLE_LOGGER.info("系统初始化..");
- String contextPath = sEvent.getServletContext().getRealPath("/")
- + "WEB-INF/config/config.properties";
- this.cReader = ConfigPropertyReader.Builder(contextPath);
- init();
- new ThreadVolume("").start();
- }
-
- public static void init() {
- Properties properties = cReader.getProperties();
-
- Configs.KUBE_MASTER_URL = properties.getProperty("kubeMasterUrl");
-
- Configs.COLLECT_USER_NAME = properties.getProperty("collect-user-name");
-
- Configs.COLLECT_PASSWORD = properties.getProperty("collect-password");
-
- Configs.COLLECT_SERVICE_NAME = properties
- .getProperty("collect-service-name");
-
- Configs.GATHER_USER_NAME = properties.getProperty("gather-user-name");
-
- Configs.GATHER_USER_PASSWORD = properties
- .getProperty("gather-user-password");
-
- Configs.GATHER_PORT = properties.getProperty("gather-port");
-
- Configs.GATHER_SERVICE_NAME = properties
- .getProperty("gather-service-name");
-
- Configs.TABLE_SUFFIX = properties.getProperty("table-suffix");
-
- Configs.EXTRACT_LOG_LOCALTION = properties
- .getProperty("extract-log-localtion");
-
- Configs.GATHER_TABLESPACE_NAME = properties
- .getProperty("gather-tablespace-name");
-
- Configs.GATHER_TABLESPACE_PATH = properties
- .getProperty("gather-tablespace-path");
-
- Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password");
- }
-
- public ConfigPropertyReader getcReader() {
- return cReader;
- }
-
- @SuppressWarnings("static-access")
- public void setcReader(ConfigPropertyReader cReader) {
- this.cReader = cReader;
- }
-
-}
+package com.platform.utils;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import com.platform.service.thread.ThreadMoveData;
+
+public class ConfigsLoader implements ServletContextListener {
+ private static ConfigPropertyReader cReader = null;
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sEvent) {
+ // TODO Auto-generated method stub
+ Configs.CONSOLE_LOGGER.info("系统停止..");
+ }
+
+ @SuppressWarnings("static-access")
+ @Override
+ public void contextInitialized(ServletContextEvent sEvent) {
+ // TODO Auto-generated method stub
+ Configs.CONSOLE_LOGGER.info("系统初始化..");
+ String contextPath = sEvent.getServletContext().getRealPath("/")
+ + "WEB-INF/config/config.properties";
+ this.cReader = ConfigPropertyReader.Builder(contextPath);
+ init();
+ new ThreadVolume("").start();
+ }
+
+ public static void init() {
+ Properties properties = cReader.getProperties();
+
+ Configs.KUBE_MASTER_URL = properties.getProperty("kubeMasterUrl");
+
+ Configs.COLLECT_USER_NAME = properties.getProperty("collect-user-name");
+
+ Configs.COLLECT_PASSWORD = properties.getProperty("collect-password");
+
+ Configs.COLLECT_SERVICE_NAME = properties
+ .getProperty("collect-service-name");
+
+ Configs.GATHER_USER_NAME = properties.getProperty("gather-user-name");
+
+ Configs.GATHER_USER_PASSWORD = properties
+ .getProperty("gather-user-password");
+
+ Configs.GATHER_PORT = properties.getProperty("gather-port");
+
+ Configs.GATHER_SERVICE_NAME = properties
+ .getProperty("gather-service-name");
+
+ Configs.TABLE_SUFFIX = properties.getProperty("table-suffix");
+
+ Configs.EXTRACT_LOG_LOCALTION = properties
+ .getProperty("extract-log-localtion");
+
+ Configs.GATHER_TABLESPACE_NAME = properties
+ .getProperty("gather-tablespace-name");
+
+ Configs.GATHER_TABLESPACE_PATH = properties
+ .getProperty("gather-tablespace-path");
+
+ Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password");
+ }
+
+ public ConfigPropertyReader getcReader() {
+ return cReader;
+ }
+
+ @SuppressWarnings("static-access")
+ public void setcReader(ConfigPropertyReader cReader) {
+ this.cReader = cReader;
+ }
+
+}
diff --git a/src/com/platform/utils/Constant.java b/src/com/platform/utils/Constant.java
index aaaadb5c..b1d439f6 100644
--- a/src/com/platform/utils/Constant.java
+++ b/src/com/platform/utils/Constant.java
@@ -1,40 +1,46 @@
-package com.platform.utils;
-
-import java.util.List;
-
-public class Constant {
- public static String rootUser = "root";
- public static String rootPasswd = "root";
- public static String hostIp = "192.168.0.116";
-// public static String hostIp = "192.168.1.105";
- public static int port = 22;
- public static String glusterPeerStatus = "gluster peer status";
- public static String glusterVolumeInfo = "gluster volume info ";
- public static String df = "df -k ";
- public static String peerincluster_connected="PeerinCluster(Connected)";
-
- public static String peerincluster_disconnected="PeerinCluster(Disconnected)";
- public static String distributed="distributed";
- public static String replica="replica";
- public static String stripe="stripe";
- public static String noVolume="No volumes present";
- public static String noSuchFile = "No such file or directory";
- public static GanymedSSH ganymedSSH=new GanymedSSH(hostIp, rootUser, rootPasswd, port);
- public static String fileGetTreeData="./WEB-INF/config/getTreedata.sh";
- public static String strGetTreeData = "function ergodic(){\n "
- + "for file in \\`ls \\$1\\`\n do\n if [ \"\\$file\" != \"app\" -a -d \\$1\\\"/\\\"\\$file ]\n "
- + "then\n ergodic \\$1\"/\"\\$file\n else\n local path=\\$1\"/\"\\$file\n "
- + "echo \\$path \n fi\n done\n}\n\nIFS=\\$\\'\\n\\' "
- + "#这个必须要,否则会在文件名中有空格时出错\nINIT_PATH=\".\";\nergodic \\$1\n";
-
- /**
- * volume 获取的线程休眠时间
- */
- public final static int get_volume_sleep_time = 300000;
-
- /**
- * volume 获取的线程休眠时间
- */
- public final static int update_dataInfo_sleep_time = 3000;
-
-}
+
+package com.platform.utils;
+
+import java.util.List;
+
+public class Constant {
+ public static String rootUser = "root";
+ public static String rootPasswd = "root";
+ public static String hostIp = "192.168.0.116";
+ // public static String hostIp = "192.168.1.105";
+ public static int port = 22;
+ public static String glusterPeerStatus = "gluster peer status";
+ public static String glusterVolumeInfo = "gluster volume info ";
+ public static String df = "df -k ";
+ public static String peerincluster_connected = "PeerinCluster(Connected)";
+ public static String peerincluster_disconnected = "PeerinCluster(Disconnected)";
+ public static String peerNotinCluster = "PeerNotinCluster";
+ public static String distributed = "distributed";
+ public static String replica = "replica";
+ public static String stripe = "stripe";
+ public static String noVolume = "No volumes present";
+ public static String success = "success";
+ public static String failed = "failed";
+ public static String noSuchFile = "No such file or directory";
+ public static GanymedSSH ganymedSSH = new GanymedSSH(hostIp, rootUser, rootPasswd, port);
+ public static String fileGetTreeData = "WebContent\\WEB-INF\\config\\getTreedata.sh";
+ public static String strGetTreeData = "function ergodic(){\n "
+ + "for file in \\`ls \\$1\\`\n do\n if [ \"\\$file\" != \"app\" -a -d \\$1\\\"/\\\"\\$file ]\n "
+ + "then\n ergodic \\$1\"/\"\\$file\n else\n local path=\\$1\"/\"\\$file\n "
+ + "echo \\$path \n fi\n done\n}\n\nIFS=\\$\\'\\n\\' "
+ + "#这个必须要,否则会在文件名中有空格时出错\nINIT_PATH=\".\";\nergodic \\$1\n";
+
+
+
+
+ /**
+ * volume 获取的线程休眠时间
+ */
+ public final static int get_volume_sleep_time = 300000;
+
+ /**
+ * volume 获取的线程休眠时间
+ */
+ public final static int update_dataInfo_sleep_time = 3000;
+
+}
diff --git a/src/com/platform/utils/FileOperateHelper.java b/src/com/platform/utils/FileOperateHelper.java
index d2eed1b5..3236c597 100644
--- a/src/com/platform/utils/FileOperateHelper.java
+++ b/src/com/platform/utils/FileOperateHelper.java
@@ -7,6 +7,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import org.junit.Test;
+
/**
* 文件读写操作帮助类
*
@@ -65,14 +67,18 @@ public class FileOperateHelper {
* @param path
* @return
*/
+
@SuppressWarnings("resource")
public static String fileReaderAndendline(String path) {
+
StringBuffer sb = new StringBuffer();
String tempString = "";
try {
File file = new File(path);
if (!file.exists())
+
return "";
+
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
while ((tempString = br.readLine()) != null) {
@@ -83,4 +89,7 @@ public class FileOperateHelper {
}
return sb.toString();
}
+
+
+
}
diff --git a/src/com/platform/utils/GanymedSSH.java b/src/com/platform/utils/GanymedSSH.java
index cae4f452..31598f93 100644
--- a/src/com/platform/utils/GanymedSSH.java
+++ b/src/com/platform/utils/GanymedSSH.java
@@ -1,267 +1,268 @@
-package com.platform.utils;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
-import ch.ethz.ssh2.Connection;
-import ch.ethz.ssh2.Session;
-import ch.ethz.ssh2.StreamGobbler;
-
-import ch.ethz.ssh2.*;
-
-
-
-public class GanymedSSH {
- public static Logger log = Logger.getLogger(GanymedSSH.class);
- Connection conn;
-
- public boolean status = true;// 锟角凤拷锟斤拷锟街达拷锟斤拷锟斤拷锟阶刺�
-
- public GanymedSSH() {
- // TODO Auto-generated constructor stub
-
- }
-
- public GanymedSSH(String host, String username, String password, int port) {
- // TODO Auto-generated constructor stub
- try {
- conn = getOpenedConnection(host, username, password, port);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
-
- public Connection getOpenedConnection(String host, String username, String password, int port)
- throws IOException {
-
- conn = new Connection(host, port);
- conn.connect(); // make sure the connection is opened
- boolean isAuthenticated = conn.authenticateWithPassword(username, password);
- if (isAuthenticated == false)
- throw new IOException("Authentication failed.");
- return conn;
- }
-
- public void execCmdNoWaitAcquiescent(String cmd) {
- String host=Constant.hostIp;
- String username=Constant.rootUser;
- String password=Constant.rootPasswd;
- int port=Constant.port;
-
- Session sess = null;
- try {
- conn = getOpenedConnection(host, username, password, port);
- sess = conn.openSession();
- // 执锟斤拷cmd
- sess.execCommand(cmd);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
-
- }
- }
-
- public void execCmdNoWait(String host, String username, String password, int port, String cmd) {
-
- Session sess = null;
- try {
- conn = getOpenedConnection(host, username, password, port);
- sess = conn.openSession();
- // 执锟斤拷cmd
- sess.execCommand(cmd);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
-
- }
- }
-
- public List execCmdWaitAcquiescent(String cmd) {
- String host=Constant.hostIp;
- String username=Constant.rootUser;
- String password=Constant.rootPasswd;
- int port=Constant.port;
- List reStrings = new ArrayList();
-
- Session sess = null;
- try {
-
- sess = conn.openSession();
- // 执锟斤拷cmd
- sess.execCommand(cmd);
-
- InputStream stdout = new StreamGobbler(sess.getStdout());
- InputStream stderr = new StreamGobbler(sess.getStderr());
- BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
- BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
- while (true) {
- String line = stdoutReader.readLine();
-
- if (line != null) {
-// System.out.println(line);
- reStrings.add(line);
- } else {
- break;
- }
- }
- if(reStrings.size()==0){
- while (true) {
- String line = stderrReader.readLine();
-
- if (line != null) {
-// System.out.println(line);
- reStrings.add(line);
- } else {
- break;
- }
- }
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
-
- }
- return reStrings;
- }
-
- public List execCmdWait(String host, String username, String password, int port, String cmd) {
- List reStrings = new ArrayList();
-
- Session sess = null;
- try {
-
- sess = conn.openSession();
- // 执锟斤拷cmd
- sess.execCommand(cmd);
-
- InputStream stdout = new StreamGobbler(sess.getStdout());
- InputStream stderr = new StreamGobbler(sess.getStderr());
- BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
- BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
- while (true) {
- String line = stdoutReader.readLine();
-
- if (line != null) {
-// System.out.println(line);
- reStrings.add(line);
- } else {
- break;
- }
- }
- if(reStrings.size()==0){
- while (true) {
- String line = stderrReader.readLine();
-
- if (line != null) {
-// System.out.println(line);
- reStrings.add(line);
- } else {
- break;
- }
- }
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
-
- }
- return reStrings;
- }
-
- public Map execMD5cmd(String host, String username, String password, int port, String cmd,
- String prefix) {
- Map md5 = new HashMap();
-
-
- Session sess = null;
- try {
-
- sess = conn.openSession();
- // 执锟斤拷cmd
- sess.execCommand(cmd);
- InputStream stdout = new StreamGobbler(sess.getStdout());
-
- @SuppressWarnings("resource")
- BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
- while (true) {
- String line = br.readLine();
- if (line != null) {
- String[] lines = line.split(" ");
- String key = lines[1].replace(prefix, "");
- String value = lines[0];
- md5.put(key, value);
- // System.out.println(key+"\t"+value);
- } else {
- break;
- }
-
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
-
- }
- return md5;
- }
-
- public String execGetSize(String cmd) {
- status = false;
- String str_size = "0";
- Session sess = null;
- try {
-
- // 执锟斤拷cmd
- sess = conn.openSession();
- sess.execCommand(cmd);
- InputStream stdout = new StreamGobbler(sess.getStdout());
-
- @SuppressWarnings("resource")
- BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
- while (true) {
- String line = br.readLine();
- if (line != null) {
- // String[] lines=line.split(" ");
- // str_size=lines[0];
-
- str_size = line;
- } else {
- break;
- }
-
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- sess.close();
- }
- status = true;
- return str_size;
- }
- public static void main(String[] args) {
- PropertyConfigurator.configure("log4j.properties");
- }
-
-}
+
+package com.platform.utils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+import ch.ethz.ssh2.Connection;
+import ch.ethz.ssh2.Session;
+import ch.ethz.ssh2.StreamGobbler;
+
+import ch.ethz.ssh2.*;
+
+
+
+public class GanymedSSH {
+ public static Logger log = Logger.getLogger(GanymedSSH.class);
+ Connection conn;
+
+ public boolean status = true;// 锟角凤拷锟斤拷锟街达拷锟斤拷锟斤拷锟阶刺�
+
+ public GanymedSSH() {
+ // TODO Auto-generated constructor stub
+
+ }
+
+ public GanymedSSH(String host, String username, String password, int port) {
+ // TODO Auto-generated constructor stub
+ try {
+ conn = getOpenedConnection(host, username, password, port);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+
+ public Connection getOpenedConnection(String host, String username, String password, int port)
+ throws IOException {
+
+ conn = new Connection(host, port);
+ conn.connect(); // make sure the connection is opened
+ boolean isAuthenticated = conn.authenticateWithPassword(username, password);
+ if (isAuthenticated == false)
+ throw new IOException("Authentication failed.");
+ return conn;
+ }
+
+ public void execCmdNoWaitAcquiescent(String cmd) {
+ String host=Constant.hostIp;
+ String username=Constant.rootUser;
+ String password=Constant.rootPasswd;
+ int port=Constant.port;
+
+ Session sess = null;
+ try {
+
+ sess = conn.openSession();
+ // 执锟斤拷cmd
+ sess.execCommand(cmd);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+
+ }
+ }
+
+ public void execCmdNoWait(String host, String username, String password, int port, String cmd) {
+
+ Session sess = null;
+ try {
+ conn = getOpenedConnection(host, username, password, port);
+ sess = conn.openSession();
+ // 执锟斤拷cmd
+ sess.execCommand(cmd);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+
+ }
+ }
+
+ public List execCmdWaitAcquiescent(String cmd) {
+ String host=Constant.hostIp;
+ String username=Constant.rootUser;
+ String password=Constant.rootPasswd;
+ int port=Constant.port;
+ List reStrings = new ArrayList();
+
+ Session sess = null;
+ try {
+
+ sess = conn.openSession();
+ // 执锟斤拷cmd
+ sess.execCommand(cmd);
+
+ InputStream stdout = new StreamGobbler(sess.getStdout());
+ InputStream stderr = new StreamGobbler(sess.getStderr());
+ BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
+ BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
+ while (true) {
+ String line = stderrReader.readLine();
+
+ if (line != null) {
+// System.out.println(line);
+ reStrings.add(line);
+ } else {
+ break;
+ }
+ }
+
+ if(reStrings.size()==0){
+ while (true) {
+ String line = stdoutReader.readLine();
+
+ if (line != null) {
+// System.out.println(line);
+ reStrings.add(line);
+ } else {
+ break;
+ }
+ }
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+
+ }
+ return reStrings;
+ }
+
+ public List execCmdWait(String host, String username, String password, int port, String cmd) {
+ List reStrings = new ArrayList();
+
+ Session sess = null;
+ try {
+
+ sess = conn.openSession();
+ // 执锟斤拷cmd
+ sess.execCommand(cmd);
+
+ InputStream stdout = new StreamGobbler(sess.getStdout());
+ InputStream stderr = new StreamGobbler(sess.getStderr());
+ BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
+ BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
+ while (true) {
+ String line = stdoutReader.readLine();
+
+ if (line != null) {
+// System.out.println(line);
+ reStrings.add(line);
+ } else {
+ break;
+ }
+ }
+ if(reStrings.size()==0){
+ while (true) {
+ String line = stderrReader.readLine();
+
+ if (line != null) {
+// System.out.println(line);
+ reStrings.add(line);
+ } else {
+ break;
+ }
+ }
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+
+ }
+ return reStrings;
+ }
+
+ public Map execMD5cmd(String cmd) {
+ Map md5 = new HashMap();
+
+
+ Session sess = null;
+ try {
+
+ sess = conn.openSession();
+ // 执锟斤拷cmd
+ sess.execCommand(cmd);
+
+ InputStream stdout = new StreamGobbler(sess.getStdout());
+ InputStream stderr = new StreamGobbler(sess.getStderr());
+ BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
+ BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
+ while (true) {
+ String line = stdoutReader.readLine();
+
+ if (line != null) {
+ String[] lines = line.split(" ");
+ String key = lines[1].trim();
+ String value = lines[0].trim();
+ md5.put(key, value);
+ } else {
+ break;
+ }
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+
+ }
+ return md5;
+ }
+
+ public String execGetSize(String cmd) {
+ status = false;
+ String str_size = "0";
+ Session sess = null;
+ try {
+
+ // 执锟斤拷cmd
+ sess = conn.openSession();
+ sess.execCommand(cmd);
+ InputStream stdout = new StreamGobbler(sess.getStdout());
+
+ @SuppressWarnings("resource")
+ BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
+ while (true) {
+ String line = br.readLine();
+ if (line != null) {
+ // String[] lines=line.split(" ");
+ // str_size=lines[0];
+
+ str_size = line;
+ } else {
+ break;
+ }
+
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ sess.close();
+ }
+ status = true;
+ return str_size;
+ }
+ public static void main(String[] args) {
+ PropertyConfigurator.configure("log4j.properties");
+ }
+
+}
diff --git a/src/com/platform/utils/Support.java b/src/com/platform/utils/Support.java
new file mode 100644
index 00000000..1b4cdc92
--- /dev/null
+++ b/src/com/platform/utils/Support.java
@@ -0,0 +1,31 @@
+
+/**
+ * 文件名 : Support.java
+ * 版权 : <版权/公司名>
+ * 描述 : <描述>
+ * @author liliy
+ * 版本 : <版本>
+ * 修改时间: 2016年9月12日
+ * 修改内容: <修改内容>
+ */
+package com.platform.utils;
+
+import java.util.regex.Pattern;
+
+/**
+ * <一句话功能简述>
+ * <功能详细描述>
+ * @author liliy
+ * @version [版本号,2016年9月12日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+
+public class Support {
+ public static boolean checkIP(String str) {
+ Pattern pattern = Pattern
+ .compile("^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]"
+ + "|[*])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$");
+ return pattern.matcher(str).matches();
+ }
+}
diff --git a/src/com/platform/utils/ThreadVolume.java b/src/com/platform/utils/ThreadVolume.java
index 635ca7a8..1170c58d 100644
--- a/src/com/platform/utils/ThreadVolume.java
+++ b/src/com/platform/utils/ThreadVolume.java
@@ -59,7 +59,7 @@ public class ThreadVolume extends Thread implements Runnable{
if (null != path && path.size() > 0) {
volume.setPath(path.get(0));
}
- volume.setAllSize(volumeInfo.getVolumeAllSize(volumeName));
+ volume.setAllSize(volumeInfo.getVolumeAvailableSize(volumeName));
volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
//TODO 查询brick--
//返回 ip:path
diff --git a/src/com/platform/utils/getTreeDataByPath.java b/src/com/platform/utils/getTreeDataByPath.java
index 6848d8c6..368b20a1 100644
--- a/src/com/platform/utils/getTreeDataByPath.java
+++ b/src/com/platform/utils/getTreeDataByPath.java
@@ -1,48 +1,50 @@
-package com.platform.utils;
-
-import java.util.List;
-
-import com.platform.entities.FolderNode;
-
-public class getTreeDataByPath {
-
- /**
- * @param path
- * @return
- */
- public FolderNode findByPath(String path) {
- List folderNodelist = CacheTreeData.getFolders();
- if (null == folderNodelist) {
- return null;
- }
- FolderNode folder = null;
- for (FolderNode folderNode : folderNodelist) {
- folder = getFolder(folderNode, path);
- if (null != folder) {
- break;
- }
- }
- return folder;
- }
-
- /**
- * @param f
- * @return
- */
- private FolderNode getFolder(FolderNode f, String path){
- FolderNode result = null;
- if(path.equals(f.getPath())){
- return f;
- }
- List folds = f.getChildNodes();
- if (null != folds) {
- for (FolderNode folderNode : folds) {
- result = getFolder(folderNode, path);
- if (null != result) {
- break;
- }
- }
- }
- return result;
- }
-}
+
+package com.platform.utils;
+
+import java.util.List;
+
+import com.platform.entities.FolderNode;
+
+public class getTreeDataByPath {
+
+ /**
+ * @param path
+ * @return
+ */
+ public FolderNode findByPath(String path) {
+ List folderNodelist = CacheTreeData.getFolders();
+ if (null == folderNodelist) {
+ return null;
+ }
+ FolderNode folder = null;
+ for (FolderNode folderNode : folderNodelist) {
+ folder = getFolder(folderNode, path);
+ if (null != folder) {
+ break;
+ }
+ }
+ return folder;
+ }
+
+ /**
+ * @param f
+ * @return
+ */
+ private FolderNode getFolder(FolderNode f, String path){
+ FolderNode result = null;
+ if(path.equals(f.getPath())){
+ return f;
+ }
+ List folds = f.getChildNodes();
+ if (null != folds) {
+ for (FolderNode folderNode : folds) {
+ result = getFolder(folderNode, path);
+ if (null != result) {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+}
+
diff --git a/test/com/platform/test/TestController.java b/test/com/platform/test/TestController.java
index 662ee505..94e8aaf0 100644
--- a/test/com/platform/test/TestController.java
+++ b/test/com/platform/test/TestController.java
@@ -35,8 +35,8 @@ public class TestController {
@ResponseBody
public List getJson(HttpServletRequest res, HttpServletResponse req) {
List list = new ArrayList();
- list.add(new User("lisi", 1, ""));
- list.add(new User("zhansan", 2, ""));
+ list.add(new User("lisi", 1, "男"));
+ list.add(new User("zhansan", 2, "男"));
return list;
}
diff --git a/test/com/platform/test/TestEncodeInfoDao.java b/test/com/platform/test/TestEncodeInfoDao.java
index 8e729bf5..3ad7d492 100644
--- a/test/com/platform/test/TestEncodeInfoDao.java
+++ b/test/com/platform/test/TestEncodeInfoDao.java
@@ -32,26 +32,26 @@ public class TestEncodeInfoDao extends SMBasedTest {
@Test
public void testGetEncodeNameByCode() {
String result = eiDao.getEncodeNameByCode("1", testTableName);
- Assert.assertTrue(result.equals("Ԥִϵͳ"));
+ Assert.assertTrue(result.equals("预算执行系统"));
}
@Test
public void testGetEncodeCodeByName() {
List result = eiDao
- .getEncodeCodeByName("Ԥִϵͳ", testTableName);
+ .getEncodeCodeByName("预算执行系统", testTableName);
Assert.assertTrue(result.size() > 0);
}
@Test
public void testUpdateEncodeNameByCode() {
int result = eiDao
- .updateEncodeNameByCode("3", "һ廯ƽ̨", testTableName);
+ .updateEncodeNameByCode("3", "财政一体化平台", testTableName);
Assert.assertTrue(result > 0);
}
@Test
public void testInsertEncodeEntity() {
- int result = eiDao.insertEncodeEntity(new EncodedInfoEntity("˰ϵͳ",
+ int result = eiDao.insertEncodeEntity(new EncodedInfoEntity("非税收入系统",
"4"), testTableName);
Assert.assertTrue(result == 1);
}
diff --git a/test/com/platform/test/TestEncodeService.java b/test/com/platform/test/TestEncodeService.java
index 3b4f40c6..a790ebe4 100644
--- a/test/com/platform/test/TestEncodeService.java
+++ b/test/com/platform/test/TestEncodeService.java
@@ -24,11 +24,11 @@ public class TestEncodeService extends SMBasedTest {
@Test
public void testGetEncodeNameByCode() {
String result = eis.getEncodeNameByCode("2", testTableName);
- Assert.assertTrue(result.equals("Ԥ"));
+ Assert.assertTrue(result.equals("部门预算"));
}
/**
- *
+ * 事务测试
*/
@Test
public void testDeleteEncodeByCode() {