• lakefs sdk 使用


    因为lakefs 是基于openapi 开发的后端,所以提供sdk 是很简单的,同时官方的sdk就是基于代码生成的

    构建sdk

    官方提供了中央仓库里的,也可以自己构建

    • java 版本自己构建
    cd clients/java
    mvn clean package install -Dmaven.test.skip -Dgpg.skip

    使用

    • maven 引用
    <dependencies>
         <dependency>
             <groupId>io.lakefs</groupId>
             <artifactId>api-client</artifactId>
             <version>0.56.0</version>
         </dependency>
    </dependencies>
    • 代码集成
      lakefs sdk 的集成模式就是标准openapi client 的处理,初始化ApiClient,获取token,具体业务操作api初始化传递 ApiClient
      进行业务操作就可以了,整体还是比较简单的
     
    package com.dalong;
     
    import io.lakefs.clients.api.*;
    import io.lakefs.clients.api.auth.HttpBearerAuth;
    import io.lakefs.clients.api.model.AuthenticationToken;
    import io.lakefs.clients.api.model.LoginInformation;
    import io.lakefs.clients.api.model.Repository;
     
    import java.util.function.Consumer;
     
    public class App {
        public static void main(String[] args) throws ApiException {
            ApiClient defaultClient = Configuration.getDefaultApiClient();
            defaultClient.setBasePath("http://localhost:8000/api/v1");
            RepositoriesApi repositoriesApi = new RepositoriesApi(defaultClient);
            AuthApi authApi  = new AuthApi(defaultClient);
            LoginInformation loginInformation =  new LoginInformation();
            loginInformation.secretAccessKey("xxxxxxxx");
            loginInformation.setAccessKeyId("xxxxxx");
            AuthenticationToken jwtToken =  authApi.login(loginInformation);
            HttpBearerAuth jwt_token = (HttpBearerAuth) defaultClient.getAuthentication("jwt_token");
            jwt_token.setBearerToken(jwtToken.getToken());
            try {
                repositoriesApi.listRepositories("","",null).getResults().forEach(new Consumer<Repository>() {
                    @Override
                    public void accept(Repository repository) {
                        String repoFormat = "createtime: %s====storagenamespace: %s=====default branch: %s========repositry id: %s";
                        System.out.println(String.format(repoFormat,repository.getCreationDate(),repository.getStorageNamespace(),repository.getDefaultBranch(),repository.getId()));
                    }
                });
            } catch (ApiException e) {
                System.err.println("Exception when calling ActionsApi#getRun");
                System.err.println("Status code: " + e.getCode());
                System.err.println("Reason: " + e.getResponseBody());
                System.err.println("Response headers: " + e.getResponseHeaders());
                e.printStackTrace();
            }
        }
    }

    说明

    官方代码库中的文档还是比较全的,可以直接参考使用,同时对于apiclient 在多线程环境,官方建议是使用独立的
    参考实例

     
    package com.dalong;
     
    import io.lakefs.clients.api.ApiClient;
    import io.lakefs.clients.api.Configuration;
     
    public class SingletonApiClient {
     
        private SingletonApiClient() {
        }
     
        private static ThreadLocal<ApiClient> _threadLocal =
                new ThreadLocal<ApiClient>() {
                    @Override
                    protected ApiClient initialValue() {
                        return Configuration.getDefaultApiClient();
                    }
                };
     
        public static ApiClient getInstance() {
            return _threadLocal.get();
        }
     
    }

    使用

    ApiClient defaultClient = SingletonApiClient.getInstance();

    参考资料

    https://docs.lakefs.io/reference/api.html#/
    https://github.com/treeverse/lakeFS/tree/master/clients/java

  • 相关阅读:
    谢惠民,恽自求,易法槐,钱定边编数学分析习题课讲义16.2.3练习题参考解答[来自陶哲轩小弟]
    高考题(可作为试讲资料)
    美国数学教父拒绝10亿美元 免费分享教学视频
    梁启超死亡真相:主刀医生错把健康的肾切除
    [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
    陆启铿同志去世
    [电视剧]养父的花样年华
    [电视剧]错爱一生
    [家里蹲大学数学杂志]第413期插值不等式
    Oracle的 EXEC SQL CONTEXT学习
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/15880466.html
Copyright © 2020-2023  润新知