分布式调度框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

194 lines
5.7 KiB

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.plugin.storage.api;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.ResUploadType;
import org.apache.dolphinscheduler.common.utils.PropertyUtils;
import org.apache.dolphinscheduler.spi.enums.ResourceType;
import java.io.IOException;
import java.util.List;
public interface StorageOperate {
String RESOURCE_UPLOAD_PATH = PropertyUtils.getString(Constants.RESOURCE_UPLOAD_PATH, "/dolphinscheduler");
/**
* if the resource of tenant 's exist, the resource of folder will be created
* @param tenantCode
* @throws Exception
*/
void createTenantDirIfNotExists(String tenantCode) throws Exception;
/**
* get the resource directory of tenant
* @param tenantCode
* @return
*/
String getResDir(String tenantCode);
/**
* return the udf directory of tenant
* @param tenantCode
* @return
*/
String getUdfDir(String tenantCode);
/**
* create the directory that the path of tenant wanted to create
* @param tenantCode
* @param path
* @return
* @throws IOException
*/
boolean mkdir(String tenantCode, String path) throws IOException;
/**
* get the path of the resource file
* @param tenantCode
* @param fullName
* @return
*/
String getResourceFileName(String tenantCode, String fullName);
/**
* get the path of the resource file excluding the base path.
* @param fullName
* @return
*/
String getResourceFileName(String fullName);
/**
* get the path of the file
* @param resourceType
* @param tenantCode
* @param fileName
* @return
*/
String getFileName(ResourceType resourceType, String tenantCode, String fileName);
/**
* predicate if the resource of tenant exists
* @param fullName
* @return
* @throws IOException
*/
boolean exists(String fullName) throws IOException;
/**
* delete the resource of filePath
* todo if the filePath is the type of directory ,the files in the filePath need to be deleted at all
* @param filePath
* @param recursive
* @return
* @throws IOException
*/
boolean delete(String filePath, boolean recursive) throws IOException;
boolean delete(String filePath, List<String> childrenPathArray, boolean recursive) throws IOException;
/**
* copy the file from srcPath to dstPath
* @param srcPath
* @param dstPath
* @param deleteSource if need to delete the file of srcPath
* @param overwrite
* @return
* @throws IOException
*/
boolean copy(String srcPath, String dstPath, boolean deleteSource, boolean overwrite) throws IOException;
/**
* get the root path of the tenant with resourceType
* @param resourceType
* @param tenantCode
* @return
*/
String getDir(ResourceType resourceType, String tenantCode);
/**
* upload the local srcFile to dstPath
* @param tenantCode
* @param srcFile
* @param dstPath
* @param deleteSource
* @param overwrite
* @return
* @throws IOException
*/
boolean upload(String tenantCode, String srcFile, String dstPath, boolean deleteSource,
boolean overwrite) throws IOException;
/**
* download the srcPath to local
* @param tenantCode
* @param srcFilePath the full path of the srcPath
* @param dstFile
* @param deleteSource
* @param overwrite
* @throws IOException
*/
void download(String tenantCode, String srcFilePath, String dstFile, boolean deleteSource,
boolean overwrite) throws IOException;
/**
* vim the context of filePath
* @param tenantCode
* @param filePath
* @param skipLineNums
* @param limit
* @return
* @throws IOException
*/
List<String> vimFile(String tenantCode, String filePath, int skipLineNums, int limit) throws IOException;
/**
* delete the files and directory of the tenant
*
* @param tenantCode
* @throws Exception
*/
void deleteTenant(String tenantCode) throws Exception;
/**
* return the storageType
*
* @return
*/
ResUploadType returnStorageType();
/**
* return files and folders in the current directory and subdirectories
* */
List<StorageEntity> listFilesStatusRecursively(String path, String defaultPath, String tenantCode,
ResourceType type);
/**
* return files and folders in the current directory
* */
List<StorageEntity> listFilesStatus(String path, String defaultPath, String tenantCode,
ResourceType type) throws Exception;
/**
* return a file status
* */
StorageEntity getFileStatus(String path, String defaultPath, String tenantCode,
ResourceType type) throws Exception;
}