diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 05:50:25 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 05:50:25 +0000 |
| commit | 5a9197f304d9f70a98689326dfc820917b6f25fc (patch) | |
| tree | 51dca8cc16808b0df5d1f0a2c300e332880b137e | |
| parent | dd660092c1c2d3bacd14ad535444cd2187af9237 (diff) | |
automatic import of python-pgsyncopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pgsync.spec | 430 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 432 insertions, 0 deletions
@@ -0,0 +1 @@ +/pgsync-2.5.0.tar.gz diff --git a/python-pgsync.spec b/python-pgsync.spec new file mode 100644 index 0000000..ad5de5d --- /dev/null +++ b/python-pgsync.spec @@ -0,0 +1,430 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pgsync +Version: 2.5.0 +Release: 1 +Summary: Postgres to Elasticsearch/OpenSearch sync +License: LGPLv3 +URL: https://github.com/toluaina/pgsync +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/6d/e2/b89c70db649a723f8542d6304ba43e96d1009f1b4786bf2576ac2d95147c/pgsync-2.5.0.tar.gz +BuildArch: noarch + +Requires: python3-async-timeout +Requires: python3-black +Requires: python3-boto3 +Requires: python3-botocore +Requires: python3-bump2version +Requires: python3-bumpversion +Requires: python3-certifi +Requires: python3-charset-normalizer +Requires: python3-click +Requires: python3-distlib +Requires: python3-elasticsearch +Requires: python3-elasticsearch-dsl +Requires: python3-environs +Requires: python3-faker +Requires: python3-filelock +Requires: python3-greenlet +Requires: python3-idna +Requires: python3-importlib-metadata +Requires: python3-isort +Requires: python3-jmespath +Requires: python3-marshmallow +Requires: python3-mypy-extensions +Requires: python3-newrelic +Requires: python3-opensearch-dsl +Requires: python3-opensearch-py +Requires: python3-packaging +Requires: python3-pathspec +Requires: python3-platformdirs +Requires: python3-psycopg2-binary +Requires: python3-dateutil +Requires: python3-dotenv +Requires: python3-redis +Requires: python3-requests +Requires: python3-requests-aws4auth +Requires: python3-s3transfer +Requires: python3-six +Requires: python3-sqlalchemy +Requires: python3-sqlparse +Requires: python3-tomli +Requires: python3-typing-extensions +Requires: python3-urllib3 +Requires: python3-virtualenv +Requires: python3-zipp + +%description +# PostgreSQL to Elasticsearch/OpenSearch sync + + +- [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). +- It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and +expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). + + +### Requirements + +- [Python](https://www.python.org) 3.7+ +- [Postgres](https://www.postgresql.org) 9.6+ +- [Redis](https://redis.io) 3.1.0 +- [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ +- [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ + +### Postgres setup + + Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) in your + Postgres setting. + + - You also need to set up two parameters in your Postgres config postgresql.conf + + ```wal_level = logical``` + + ```max_replication_slots = 1``` + +### Installation + +You can install PGSync from [PyPI](https://pypi.org): + + $ pip install pgsync + +### Config + +Create a schema for the application named e.g **schema.json** + +[Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) + +Example spec + +.. code-block:: + + [ + { + "database": "[database name]", + "index": "[Elasticsearch or OpenSearch index]", + "nodes": { + "table": "[table A]", + "schema": "[table A schema]", + "columns": [ + "column 1 from table A", + "column 2 from table A", + ... additional columns + ], + "children": [ + { + "table": "[table B with relationship to table A]", + "schema": "[table B schema]", + "columns": [ + "column 1 from table B", + "column 2 from table B", + ... additional columns + ], + "relationship": { + "variant": "object", + "type": "one_to_many" + }, + ... + }, + { + ... additional children + } + ] + } + } + ] + +### Environment variables + +Setup environment variables required for the application + + SCHEMA='/path/to/schema.json' + + ELASTICSEARCH_HOST=localhost + ELASTICSEARCH_PORT=9200 + + PG_HOST=localhost + PG_USER=i-am-root # this must be a postgres superuser or replication user + PG_PORT=5432 + PG_PASSWORD=***** + + REDIS_HOST=redis + REDIS_PORT=6379 + REDIS_DB=0 + REDIS_AUTH=***** + + +### Running + +Bootstrap the database (one time only) + - $ bootstrap --config schema.json + +Run pgsync as a daemon + - $ pgsync --config schema.json --daemon + + +%package -n python3-pgsync +Summary: Postgres to Elasticsearch/OpenSearch sync +Provides: python-pgsync +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pgsync +# PostgreSQL to Elasticsearch/OpenSearch sync + + +- [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). +- It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and +expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). + + +### Requirements + +- [Python](https://www.python.org) 3.7+ +- [Postgres](https://www.postgresql.org) 9.6+ +- [Redis](https://redis.io) 3.1.0 +- [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ +- [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ + +### Postgres setup + + Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) in your + Postgres setting. + + - You also need to set up two parameters in your Postgres config postgresql.conf + + ```wal_level = logical``` + + ```max_replication_slots = 1``` + +### Installation + +You can install PGSync from [PyPI](https://pypi.org): + + $ pip install pgsync + +### Config + +Create a schema for the application named e.g **schema.json** + +[Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) + +Example spec + +.. code-block:: + + [ + { + "database": "[database name]", + "index": "[Elasticsearch or OpenSearch index]", + "nodes": { + "table": "[table A]", + "schema": "[table A schema]", + "columns": [ + "column 1 from table A", + "column 2 from table A", + ... additional columns + ], + "children": [ + { + "table": "[table B with relationship to table A]", + "schema": "[table B schema]", + "columns": [ + "column 1 from table B", + "column 2 from table B", + ... additional columns + ], + "relationship": { + "variant": "object", + "type": "one_to_many" + }, + ... + }, + { + ... additional children + } + ] + } + } + ] + +### Environment variables + +Setup environment variables required for the application + + SCHEMA='/path/to/schema.json' + + ELASTICSEARCH_HOST=localhost + ELASTICSEARCH_PORT=9200 + + PG_HOST=localhost + PG_USER=i-am-root # this must be a postgres superuser or replication user + PG_PORT=5432 + PG_PASSWORD=***** + + REDIS_HOST=redis + REDIS_PORT=6379 + REDIS_DB=0 + REDIS_AUTH=***** + + +### Running + +Bootstrap the database (one time only) + - $ bootstrap --config schema.json + +Run pgsync as a daemon + - $ pgsync --config schema.json --daemon + + +%package help +Summary: Development documents and examples for pgsync +Provides: python3-pgsync-doc +%description help +# PostgreSQL to Elasticsearch/OpenSearch sync + + +- [PGSync](https://pgsync.com) is a middleware for syncing data from [Postgres](https://www.postgresql.org) to [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/) or [OpenSearch](https://opensearch.org/). +- It allows you to keep [Postgres](https://www.postgresql.org) as your source of truth data source and +expose structured denormalized documents in [Elasticsearch](https://www.elastic.co/products/elastic-stack)/[OpenSearch](https://opensearch.org/). + + +### Requirements + +- [Python](https://www.python.org) 3.7+ +- [Postgres](https://www.postgresql.org) 9.6+ +- [Redis](https://redis.io) 3.1.0 +- [Elasticsearch](https://www.elastic.co/products/elastic-stack) 6.3.1+ or [OpenSearch](https://opensearch.org/) 1.3.7+ +- [SQlAlchemy](https://www.sqlalchemy.org) 1.3.4+ + +### Postgres setup + + Enable [logical decoding](https://www.postgresql.org/docs/current/logicaldecoding.html) in your + Postgres setting. + + - You also need to set up two parameters in your Postgres config postgresql.conf + + ```wal_level = logical``` + + ```max_replication_slots = 1``` + +### Installation + +You can install PGSync from [PyPI](https://pypi.org): + + $ pip install pgsync + +### Config + +Create a schema for the application named e.g **schema.json** + +[Example schema](https://github.com/toluaina/pgsync/blob/main/examples/airbnb/schema.json) + +Example spec + +.. code-block:: + + [ + { + "database": "[database name]", + "index": "[Elasticsearch or OpenSearch index]", + "nodes": { + "table": "[table A]", + "schema": "[table A schema]", + "columns": [ + "column 1 from table A", + "column 2 from table A", + ... additional columns + ], + "children": [ + { + "table": "[table B with relationship to table A]", + "schema": "[table B schema]", + "columns": [ + "column 1 from table B", + "column 2 from table B", + ... additional columns + ], + "relationship": { + "variant": "object", + "type": "one_to_many" + }, + ... + }, + { + ... additional children + } + ] + } + } + ] + +### Environment variables + +Setup environment variables required for the application + + SCHEMA='/path/to/schema.json' + + ELASTICSEARCH_HOST=localhost + ELASTICSEARCH_PORT=9200 + + PG_HOST=localhost + PG_USER=i-am-root # this must be a postgres superuser or replication user + PG_PORT=5432 + PG_PASSWORD=***** + + REDIS_HOST=redis + REDIS_PORT=6379 + REDIS_DB=0 + REDIS_AUTH=***** + + +### Running + +Bootstrap the database (one time only) + - $ bootstrap --config schema.json + +Run pgsync as a daemon + - $ pgsync --config schema.json --daemon + + +%prep +%autosetup -n pgsync-2.5.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pgsync -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2.5.0-1 +- Package Spec generated @@ -0,0 +1 @@ +8e022b9d99743bb5c25d5813529c34f5 pgsync-2.5.0.tar.gz |
