跳转到主要内容

sdap数据导入的辅助工具

项目描述

SDAP数据集导入管理器

先决条件

python 3

为python 3安装anaconda。例如,对于macos,使用图形安装。

https://anaconda.net.cn/distribution/#macos

git lfs(开发用)

Git lfs用于从git部署,请参阅https://git-lfs.github.com/

如果不可用,您需要获取测试用的netcdf文件,如果您需要测试。

在Kubernetes集群上部署nexus

请参阅项目https://github.com/apache/incubator-sdap-nexus

$ helm install nexus .  --namespace=sdap --dependency-update -f ~/overridden-nexus-values.yml 

安装、配置和运行

安装

以用户身份登录

$ pip install sdap-ingest-manager

配置导入系统

在安装输出的末尾捕获消息

--------------------------------------------------------------
Now, create configuration files in
***/<some path>>/.sdap_ingest_manager***
 Use templates and examples provided there
--------------------------------------------------------------

如果路径未在安装标准输出中显示,您可以使用以下命令找到它

python -c "import sys; print(f'{sys.prefix}/.sdap_ingest_manager')"

使用消息中显示的路径创建自己的配置文件

$ cd /<some path>>/.sdap_ingest_manager
$ cp sdap_ingest_manager.ini.default sdap_ingest_manager.ini

按照注释中的说明编辑和更新新创建的文件。

请注意,如果没有在.ini文件中配置值,将使用.ini.default文件。因此,您可以有一个只包含您特定配置的简化.ini文件。不要将您的特定配置放在.ini.default文件中,因为它将在您升级软件包时被替换。

.ini文件的示例

[COLLECTIONS_YAML_CONFIG]
yaml_file = collections.yml

[OPTIONS]
# set to False to actually call the ingestion command for each granule
dry_run = False
# set to True to automatically list the granules as seen on the nfs server when they are mounted on the local file system.
deconstruct_nfs = True
# number of parallel ingestion pods on kubernetes (1 per granule)
parallel_pods = 2

[INGEST]
# kubernetes namespace where the sdap cluster is deployed
kubernetes_namespace = nexus-dev

配置收集

您可以在sdap_ingest_manager.ini文件中引用的本地yaml文件中配置它。

它也可以在Google表格中。

如果两者都配置了,将使用本地yaml文件。

运行导入

在配置的收集列表中

$ run_collections

可以在sdap_ingest_manager.ini文件中更新过程中的并行作业数。

如果中断(终止),过程将在中断处重新启动。

针对开发者

部署项目

$ bash
$ git clone ...
$ cd sdap_ingest_manager
$ python -m venv venv
$ source ./venv/bin/activate
$ pip install .

注意:命令pip install -e .无法正常工作,因为它不会部署配置文件。

更新项目

使用您喜欢的IDE(例如pyCharm)更新代码和测试。

测试并创建包

当进行推送时,基于dev分支的包将自动在github release中发布。

在文件setup.py中更改版本

$ python setup.py test
$ git tag <version>
$ git push origin <version>

发布将通过github action自动推送到pypi。

容器化

Docker

(开发版本)

cd containers/docker
docker build --no-cache --tag tloubrieu/sdap-ingest-manager:latest .    
docker run -it --name sdap-ingest-manager -v sdap_ingest_config:/usr/local/.sdap_ingest_manager tloubrieu/sdap-ingest-manager:latest
docker volume inspect sdap_ingest_config

您可以在命名卷的目录中看到配置文件(例如 /var/lib/docker/volumes/sdap_ingest_config/_data)。

注意:在macos上,要访问此目录,您需要进入运行docker服务的虚拟机内部。要在macos上更新配置

docker run --rm -it -v /:/vm-root alpine:edge /bin/ash
cd /vm-root/var/lib/docker/volumes/sdap_ingest_config/_data
cp sdap_ingest_manager.ini.default sdap_ingest_manager.ini
vi sdap_ingest_manager.ini

要发布docker镜像到dockerhub,请执行(对于kubernetes部署是必要的步骤)

docker login
docker push tloubrieu/sdap-ingest-manager:latest

Kubernetes

为您的部署创建configMap

从现有的本地配置文件准备一个configMap

kubectl create configmap collection-ingester-config --from-file=venv/.sdap_ingest_manager -n sdap

如果您从的不是您需要的配置,您可以手动更新configMap

kubectl get configmap collection-ingester-config -o yaml -n sdap > containers/kubernetes/sdap_ingester_config.yml

手动编辑yml文件,只保留与部署相关的配置(如果与当前配置不同)

替换configmap

kubectl delete configmap collection-ingester-config -n sdap
kubectl apply -f containers/kubernetes/sdap_ingester_config.yml -n sdap

启动服务

kubectl apply -f containers/kubernetes/job.yml -n sdap

删除服务

kubectl delete jobs --all -n sdap

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

sdap_ingest_manager-0.3.0rc3.tar.gz (1.9 MB 查看哈希值)

上传时间

构建分布

sdap_ingest_manager-0.3.0rc3-py3-none-any.whl (3.9 MB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面