External Volume SDK说明

本文为您介绍使用Java SDK操作External Volume的说明。

项目依赖

使用SDK操作External Volume前需要添加如下依赖。

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-sdk-core</artifactId>
  <version>0.44.0-SNAPSHOT</version>
</dependency>

创建External Volume

  • Create

    /**
    * 创建 External Volume
    * @param builder volume 的参数配置
    * @throws OdpsException
    */
    public void create(VolumeBuilder builder) throws OdpsException
    
        /**
    * 创建External Volume
    *
    * @param volumeName volume名称
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @throws OdpsException
    */
    public void create(String volumeName, String comment, Volume.Type type)
    
    
        /**
    * 创建External Volume
    *
    * @param projectName 目标External Volume所在Project名称
    * @param volumeName 所要创建的volume名
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type)
    
        /**
    * 创建Volume
    *
    * @param projectName 目标External Volume所在Project名称
    * @param volumeName 所要创建的volume名
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @param lifecycle 生命周期
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type, Long lifecycle) throws OdpsException
    
    
    
  • Create示例

    /*
     创建External Volume
    */
    
    public void createExternalVolume() throws Exception {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
        String externalLocation = "oss://...";
        
        Long lifecycle;
        String comment;
        String roleArn;
        
        Volumes.VolumeBuilder builder = new Volumes.VolumeBuilder();
            
        builder.project(projectName).volumeName(extVolumeName).type(Volume.Type.EXTERNAL).extLocation(externalLocation);
            
        if (lifecycle != null) {
            builder.lifecycle(lifecycle);
        }
            
        if (comment != null) {
            builder.comment(comment);
        }
            
        if (roleArn != null) {
            builder.addProperty(Volumes.EXTERNAL_VOLUME_ROLEARN_KEY, roleArn);
        }
            
        getCurrentOdps().volumes().create(builder);  
    }

获取指定External Volume信息

  • Get

    /**
    * 获取指定External Volume信息
    *
    * @param volumeName Volume名
    * @return
    */
    public Volume get(String volumeName)
    
    /**
    * 获取指定External Volume信息
    *
    * @param projectName 所在Project名称
    * @param volumeName  External Volume名
    * @return
    */
    public Volume get(String projectName, String volumeName)
    
  • Get示例

    /*
    获取External Volume信息
    */
    public Volume getVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        Volume volume = odps.volumes().get(projectName, extVolumeName);
        return volume;
    }

获取External Volume信息迭代器

  • Iterator

    /**
    * 获取默认Project的所有Volume信息迭代器
    *
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator() 
    
        /**
    * 获取Volume信息迭代器
    *
    * @param projectName 指定Project名称
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final String projectName)
    
    
        /**
    * 获取Volume信息迭代器
    *
    * @param filter 过滤条件
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final VolumeFilter filter)
    
        /**
    * 获取Volume信息迭代器
    *
    * @param projectName 所在Project名称
    * @param filter 过滤条件
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final String projectName, final VolumeFilter filter)
  • Iterator示例

    /*
    获取volume迭代器
    */
    public Iterator<Volume> getVolumeIterator() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        VolumeFilter volumeFilter = new VolumeFilter();
        volumeFilter.setName(extVolumeName);
    
        Iterator<Volume> iterator = odps.volumes().iterator(projectName, volumeFilter);
        return iterator;
    }

删除External Volume

  • Delete

    /**
    * 删除External Volume
    *
    * @param volumeName External Volume名
    * @throws OdpsException
    */
    public void delete(String volumeName)
    
    /**
    * 删除External Volume
    *
    * @param projectName External Volume所在Project
    * @param volumeName External Volume名
    * @throws OdpsException
    */
    public void delete(String projectName, String volumeName)
  • Delete示例

    /*
    删除External Volume
    */
    public void deleteVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        try {
            odps.volumes().delete(projectName, extVolumeName);
        } catch (OdpsException e) {
            throw new RuntimeException(e);
        }
    }