2021-02-10 12:02:44 +00:00
|
|
|
<p align="center">
|
|
|
|
<img src="./.github/logo.svg" width="500px" alt="NeoFS">
|
|
|
|
</p>
|
|
|
|
<p align="center">
|
2022-12-22 13:28:24 +00:00
|
|
|
UN/LOCODE database for <a href="https://frostfs.info">ForstFS</a>
|
2021-02-10 12:02:44 +00:00
|
|
|
</p>
|
|
|
|
|
|
|
|
---
|
|
|
|
# Overview
|
|
|
|
|
2023-04-21 14:23:19 +00:00
|
|
|
FrostFS uses UN/LOCODE in storage node attributes and storage policies. Inner
|
|
|
|
ring nodes converts UN/LOCODE into human-readable set of attributes such as
|
|
|
|
continent, country name, etc.
|
|
|
|
|
|
|
|
This repository tools generate UN/LOCODE database for FrostFS using data from
|
|
|
|
following sources:
|
|
|
|
- [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) database in CSV
|
|
|
|
format, licensed under the [ODC Public Domain Dedication and Licence (PDDL)](http://opendatacommons.org/licenses/pddl/1-0/)
|
|
|
|
- [OpenFlight Airports and
|
|
|
|
Countries](https://raw.githubusercontent.com/jpatokal/openflights/master/data/)
|
|
|
|
databases, licensed under the [GNU AGPL-3.0
|
|
|
|
license](https://github.com/jpatokal/openflights/blob/master/LICENSE)
|
|
|
|
- [OpenStreetMap](https://www.openstreetmap.org/)® open data, licensed under the [Open Data Commons Open
|
|
|
|
Database License](https://opendatacommons.org/licenses/odbl/) (ODbL)
|
2021-02-10 12:02:44 +00:00
|
|
|
|
|
|
|
# Build
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
2023-04-21 14:23:19 +00:00
|
|
|
- Latest [frostfs-cli](https://git.frostfs.info/TrueCloudLab/frostfs-node) tool
|
2021-02-10 12:02:44 +00:00
|
|
|
|
2022-10-27 10:45:25 +00:00
|
|
|
## Quick start
|
|
|
|
|
2022-12-22 13:28:24 +00:00
|
|
|
Just run `make` to generate `locode_db` file for use with FrostFS InnerRing nodes.
|
2022-10-27 10:45:25 +00:00
|
|
|
|
|
|
|
``` shell
|
|
|
|
$ make
|
|
|
|
...
|
|
|
|
--out locode_db
|
|
|
|
```
|
|
|
|
|
|
|
|
## Building
|
2021-02-10 12:02:44 +00:00
|
|
|
|
2023-04-21 14:23:19 +00:00
|
|
|
Then run frost-cli command to generate boltDB file.
|
2021-02-10 12:02:44 +00:00
|
|
|
```
|
2023-04-21 14:23:19 +00:00
|
|
|
$ frostfs-cli util locode generate --help
|
2022-12-22 13:28:24 +00:00
|
|
|
generate UN/LOCODE database for FrostFS
|
2021-02-10 12:02:44 +00:00
|
|
|
|
|
|
|
Usage:
|
2023-04-21 14:23:19 +00:00
|
|
|
frostfs-cli util locode generate [flags]
|
2021-02-10 12:02:44 +00:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
--airports string Path to OpenFlights airport database (csv)
|
|
|
|
--continents string Path to continent polygons (GeoJSON)
|
|
|
|
--countries string Path to OpenFlights country database (csv)
|
|
|
|
-h, --help help for generate
|
|
|
|
--in strings List of paths to UN/LOCODE tables (csv)
|
|
|
|
--out string Target path for generated database
|
|
|
|
--subdiv string Path to UN/LOCODE subdivision database (csv)
|
2022-10-27 12:05:52 +00:00
|
|
|
|
2023-04-21 14:23:19 +00:00
|
|
|
$ ./frostfs-cli util locode generate \
|
2021-02-10 12:02:44 +00:00
|
|
|
--airports airports.dat \
|
|
|
|
--continents continents.geojson \
|
|
|
|
--countries countries.dat \
|
2023-04-21 14:23:19 +00:00
|
|
|
--in 2022-2\ UNLOCODE\ CodeList.csv \
|
|
|
|
--subdiv 2022-2\ SubdivisionCodes.csv \
|
2021-02-10 12:02:44 +00:00
|
|
|
--out locode_db
|
|
|
|
```
|
|
|
|
|
|
|
|
**Database generation might take some time!**
|
|
|
|
|
2023-04-21 14:23:19 +00:00
|
|
|
You can test generated database with `frostfs-cli`.
|
2021-02-10 12:02:44 +00:00
|
|
|
```
|
2023-04-21 14:23:19 +00:00
|
|
|
$ frostfs-cli util locode info --db locode_db --locode 'RU LED'
|
2021-02-10 12:02:44 +00:00
|
|
|
Country: Russia
|
|
|
|
Location: Saint Petersburg (ex Leningrad)
|
|
|
|
Continent: Europe
|
|
|
|
Subdivision: [SPE] Sankt-Peterburg
|
2022-10-27 12:05:52 +00:00
|
|
|
Coordinates: 59.88, 30.25
|
|
|
|
```
|
|
|
|
|
|
|
|
# Building Debian package
|
|
|
|
|
|
|
|
The most simple way is to run a make target
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ make debpackage
|
|
|
|
```
|
|
|
|
|
|
|
|
When packages are built, you can clean up the leftover with
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ dh clean
|
|
|
|
```
|
|
|
|
or
|
|
|
|
```shell
|
|
|
|
$ make debclean
|
2021-02-10 12:02:44 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under the CC Attribution-ShareAlike 4.0 International -
|
|
|
|
see the [LICENSE](LICENSE) file for details
|