Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
230 commits
Select commit Hold shift + click to select a range
08c2c86
ADO-330 Basic Hbase provider implementation
Dimitrionian Dec 15, 2025
60cba34
ADO-330 Advanced Hbase provider implementation
Dimitrionian Dec 16, 2025
e43cd78
ADO-330 Change branch to cache dependencies
Dimitrionian Dec 16, 2025
c6da543
ADO-330 Build from the current branch
Dimitrionian Dec 16, 2025
a3164f4
ADO-330 Fix google-re2 version
Dimitrionian Dec 16, 2025
e35c1e4
ADO-330 Fix uv version
Dimitrionian Dec 16, 2025
df2a2a9
ADO-330 Add FERNET_KEY from env
Dimitrionian Dec 17, 2025
1f9822f
ADO-330 Fix params
Dimitrionian Dec 17, 2025
4df3e03
ADO-330 Create backup/restore, intermediate results
Dimitrionian Dec 17, 2025
6527d17
Merge pull request #1 from arenadata/feature/ado-330
Dimitrionian Dec 17, 2025
5fb9b15
ADO-330 Create backup/restore, different approach
Dimitrionian Dec 18, 2025
7e354e9
ADO-330 Use SSH to make backups
Dimitrionian Dec 19, 2025
8e68d67
ADO-330 Fix SSH backup logic, fix build problems
Dimitrionian Dec 19, 2025
3809919
ADO-330 Fix SSH full backup logic
Dimitrionian Dec 19, 2025
e00a236
ADO-330 Resore SSH full backup logic
Dimitrionian Dec 19, 2025
5a82441
ADO-330 Fix tests
Dimitrionian Dec 19, 2025
44f26a0
ADO-368 Update documentation
Dimitrionian Dec 19, 2025
269d5b4
Merge pull request #3 from arenadata/feature/ado-368
Dimitrionian Dec 19, 2025
a7c244b
ADO-336 Basic Kerberos implementation
Dimitrionian Dec 22, 2025
8f2572e
ADO-336 Remove redundant library use
Dimitrionian Dec 22, 2025
8cb57d9
ADO-336 Add example dag
Dimitrionian Dec 22, 2025
f9796c3
ADO-336 Add basic operations with Kerberos support
Dimitrionian Dec 23, 2025
136ac50
ADO-336 Refactor to use strategy
Dimitrionian Dec 23, 2025
58285db
ADO-336 Finish and test strategy
Dimitrionian Dec 24, 2025
b3e8a0d
ADO-336 Fix all tests
Dimitrionian Dec 24, 2025
a2c8378
ADO-336 Make example_hbase dag idempotent
Dimitrionian Dec 24, 2025
1d0233a
ADO-336 Make example_hbase_advanced dag idempotent
Dimitrionian Dec 24, 2025
a237472
ADO-336 Backup fix
Dimitrionian Dec 24, 2025
eb1e1d4
ADO-336 Add the restore backup functionality dag
Dimitrionian Dec 24, 2025
031dfa2
ADO-336 Fix dags examples
Dimitrionian Dec 25, 2025
d2fb979
ADO-336 Fix tests
Dimitrionian Dec 25, 2025
a7055e0
ADO-336 Mask sensitive data in logs
Dimitrionian Dec 25, 2025
30e53d0
ADO-336 Test the sensitive data masking in logs
Dimitrionian Dec 25, 2025
8333c67
ADO-336 Attempt to establish SSL over Thrift, naive approach
Dimitrionian Dec 25, 2025
dbee6d2
ADO-336 Expand happybase to handle SSL via Thrift
Dimitrionian Dec 25, 2025
7e5f9da
ADO-336 Provide retry logic
Dimitrionian Dec 25, 2025
fd1b76d
ADO-336 Test ssl dag with proxy tunnel
Dimitrionian Dec 26, 2025
3233a99
ADO-336 Add ssl proxy example
Dimitrionian Dec 26, 2025
7703da0
ADO-336 Add the connections documentation
Dimitrionian Dec 26, 2025
9386bf1
ADO-336 Fulfill the changelog
Dimitrionian Dec 26, 2025
60287d9
ADO-336 Update the docs index
Dimitrionian Dec 26, 2025
02b3013
ADO-336 Update the security docs
Dimitrionian Dec 26, 2025
3df6ac1
Merge pull request #5 from arenadata/feature/ado-336
Dimitrionian Dec 26, 2025
dab6266
ADO-334 Use connection pools for hbase thrift operations
Dimitrionian Dec 29, 2025
237e7fb
ADO-334 Optimize bulk inserts
Dimitrionian Dec 29, 2025
591392b
ADO-334 Make bulk inserts connection pooled
Dimitrionian Dec 29, 2025
97d3bf8
ADO-334 Update documentation
Dimitrionian Dec 30, 2025
a25d09a
Merge pull request #6 from arenadata/feature/ado-334
Dimitrionian Dec 30, 2025
1d975c6
Fix sphinxcontrib-serializinghtml version
Dimitrionian Jan 12, 2026
da36222
Upgrade pip
Dimitrionian Jan 12, 2026
9b6a47f
Merge pull request #7 from arenadata/feature/build-3.10
Dimitrionian Jan 13, 2026
daa5207
Include hbase into prod list
Dimitrionian Jan 16, 2026
373d333
Remove Exception handling to forward an exception higher to allow Air…
Dimitrionian Jan 16, 2026
88f8541
Remove redundant dags
Dimitrionian Jan 16, 2026
69202f3
Use enums instead of strings
Dimitrionian Jan 16, 2026
aba2d1f
Add HBaseRowCountSensor warning
Dimitrionian Jan 16, 2026
c1a4a44
Compare bytes directly to avoid UnicodeDecodeError on HBase binary data
Dimitrionian Jan 16, 2026
075d0b2
Merge pull request #9 from arenadata/feature/hbase-provider-review
Dimitrionian Jan 16, 2026
a31c495
Add current date for Hbase provider
Dimitrionian Jan 16, 2026
931de7f
Merge pull request #10 from arenadata/feature/hbase-provider-review
Dimitrionian Jan 16, 2026
4f79af7
Generalize a default connection name
Dimitrionian Jan 19, 2026
02f3ccf
Remove JAVA_HOME hardcode
Dimitrionian Jan 19, 2026
899cc34
Remove hardcoded connection parameters
Dimitrionian Jan 19, 2026
8323b43
Remove hasattr and delattr
Dimitrionian Jan 19, 2026
ba1ce2d
Remove redundant sss_conn_id parameter
Dimitrionian Jan 19, 2026
ad9c415
Add if_exists parameter for better table handling
Dimitrionian Jan 19, 2026
e57e610
Add if_not_exists parameter for better table handling
Dimitrionian Jan 19, 2026
512f113
Fix docstrings
Dimitrionian Jan 19, 2026
c2098e2
Make encoding arbitrary in HBaseScanOperator and HBaseBatchGetOperator
Dimitrionian Jan 19, 2026
1275e9d
Fix SSH tests as it failed in python package mode. Now it's universal
Dimitrionian Jan 20, 2026
1b83e0b
Basic thrift2 operations
Dimitrionian Jan 28, 2026
f1b9428
Basic thrift2 operations refactoring
Dimitrionian Jan 28, 2026
4d1f8da
Batch thrift2 operations
Dimitrionian Jan 28, 2026
e7cde78
Pooled connections
Dimitrionian Jan 28, 2026
20fc323
Merge pull request #11 from arenadata/feature/hbase-provider-thrift2
Dimitrionian Jan 28, 2026
00a26ca
Add SSL
Dimitrionian Jan 28, 2026
3232f70
Improve backup/restore functionality
Dimitrionian Jan 29, 2026
9e0f48f
Merge pull request #12 from arenadata/feature/hbase-provider-thrift2
Dimitrionian Jan 30, 2026
e29b6f6
Remove SSH functionality, add HBaseAdministrationHook interface
Dimitrionian Jan 30, 2026
233d83b
Remove thrift1 functionality
Dimitrionian Jan 30, 2026
5513a72
Adjust retry logic to thrift2
Dimitrionian Jan 30, 2026
2b38614
Fix test_hbase tests
Dimitrionian Jan 30, 2026
ef4e790
Remove obsolete tests
Dimitrionian Jan 30, 2026
84a70a7
Cleanup the codebase
Dimitrionian Jan 30, 2026
3f032b0
Add coverage
Dimitrionian Jan 30, 2026
9bbaf22
Merge pull request #14 from arenadata/feature/hbase-provider-refactoring
Dimitrionian Jan 30, 2026
1a71c19
Generate thrift2 client code
Dimitrionian Feb 2, 2026
a4394c0
Migrate from thriftpy2 to Apache Thrift
Dimitrionian Feb 2, 2026
ece826d
Cleanup the codebase
Dimitrionian Feb 2, 2026
52aec86
Merge pull request #15 from arenadata/feature/hbase-provider-thrift
Dimitrionian Feb 2, 2026
8359fa5
Perform backup/restore via Hbase client
Dimitrionian Feb 2, 2026
f4cc4ce
Fix tests
Dimitrionian Feb 2, 2026
42922d5
Merge pull request #16 from arenadata/feature/hbase-provider-client
Dimitrionian Feb 2, 2026
78afcd2
Add batch operations with specific operators
Dimitrionian Feb 3, 2026
e2d2db0
Remove redundant dag
Dimitrionian Feb 3, 2026
73255ba
Split backup operations into a producer and a consumer dags using dat…
Dimitrionian Feb 4, 2026
efbe3e2
Split backup operations into a full and incremental one
Dimitrionian Feb 4, 2026
f9d3baa
Fix the produce and restore functionality
Dimitrionian Feb 4, 2026
a383293
Change the dag's naming
Dimitrionian Feb 4, 2026
cfe5e9f
Fix dag ids
Dimitrionian Feb 4, 2026
9b9772c
Add a sensor example dag
Dimitrionian Feb 4, 2026
d240a44
Fix tests
Dimitrionian Feb 4, 2026
7191ffb
Merge pull request #17 from arenadata/feature/hbase-provider-dags
Dimitrionian Feb 4, 2026
e00b804
Move hbase providers to arenadata folder
Dimitrionian Feb 5, 2026
4487dad
Fix hooks naming
Dimitrionian Feb 5, 2026
4f5cc29
Create a universal CLI HBase command
Dimitrionian Feb 5, 2026
91dd691
Define java_home and hbase_home in a client side
Dimitrionian Feb 5, 2026
35f0654
Merge pull request #18 from arenadata/feature/hbase-provider-refactor
Dimitrionian Feb 5, 2026
63883c9
Fix ssl to use TSSLSocket from Apache Thrift
Dimitrionian Feb 6, 2026
7fe6a9e
Merge pull request #19 from arenadata/feature/hbase-provider-ssl
Dimitrionian Feb 9, 2026
6d8cceb
Switch between buffered and framed protocols
Dimitrionian Feb 9, 2026
7b75e44
Handle Kerberos auth
Dimitrionian Feb 10, 2026
ae4446c
Kerberos fixes
Dimitrionian Feb 11, 2026
2c39355
Fix tests
Dimitrionian Feb 11, 2026
7b8b30f
Remove redundant dag
Dimitrionian Feb 11, 2026
c0ca873
Make example_hbase dag connection agnostic
Dimitrionian Feb 11, 2026
11fb950
Remove redundant step
Dimitrionian Feb 11, 2026
82d55ad
Execute hbase command with kerberos
Dimitrionian Feb 12, 2026
0fbca5f
Remove debugging code
Dimitrionian Feb 12, 2026
0ff699e
Auto kinit
Dimitrionian Feb 13, 2026
133cae4
Merge pull request #20 from arenadata/feature/hbase-provider-kerberos
Dimitrionian Feb 13, 2026
7748261
Fix import
Dimitrionian Feb 16, 2026
1fc25b2
Get principal from keytab and then get ticket in case of it's missing
Dimitrionian Feb 17, 2026
e6fabc4
Use OSError to wrap a potential os.unlink exception
Dimitrionian Feb 24, 2026
8ef622f
Move imports to top
Dimitrionian Feb 24, 2026
a8a37b4
Use concrete exception
Dimitrionian Feb 24, 2026
89fe0ac
Remove outdated Type
Dimitrionian Feb 24, 2026
62f1f71
Refactor thrift client
Dimitrionian Feb 24, 2026
42dbb7f
Fix tests
Dimitrionian Feb 25, 2026
968dc72
Fix dependencies
Dimitrionian Feb 25, 2026
23ad61f
Better handling of transport closure
Dimitrionian Feb 25, 2026
18704b6
Add a possibility to change a namespace
Dimitrionian Feb 25, 2026
d38c612
Remove redundant parameter
Dimitrionian Feb 25, 2026
88908b2
Remove redundant parameter
Dimitrionian Feb 25, 2026
d4bbab3
Refactor SSL get options
Dimitrionian Feb 25, 2026
ae7dd81
Move big string to a json file
Dimitrionian Feb 25, 2026
e6ffae4
Close pooled connections explicitly
Dimitrionian Feb 25, 2026
6928657
Set variables more flexible
Dimitrionian Feb 25, 2026
836b6cb
Get keytab from connections extra
Dimitrionian Feb 25, 2026
5780a5a
Explain sudo usage
Dimitrionian Feb 25, 2026
c9f79ba
Supress SLF4J warnings
Dimitrionian Feb 25, 2026
89a1a98
Refactor strategies
Dimitrionian Feb 25, 2026
0d754b5
Remove redundant code
Dimitrionian Feb 25, 2026
75c6fd9
Better handle batch delay
Dimitrionian Feb 25, 2026
8381f36
Remove potential race condition
Dimitrionian Feb 25, 2026
f81fe8c
Check server
Dimitrionian Feb 25, 2026
d0b214a
Dynamic cleanup pools
Dimitrionian Feb 25, 2026
d669af8
Get POOL_CONNECTION_TIMEOUT from env
Dimitrionian Feb 25, 2026
cf44529
Close connections on a pool __del__
Dimitrionian Feb 25, 2026
1d2b99e
Improve the ssl context cleanup
Dimitrionian Feb 25, 2026
136fbe2
Warn about storing secrets in Airflow variables
Dimitrionian Feb 25, 2026
e1f9de6
Remove not implemented cases
Dimitrionian Feb 25, 2026
54ba84c
Validate table name
Dimitrionian Feb 25, 2026
e7913e1
Remove redundant parameter
Dimitrionian Feb 25, 2026
994bd29
Validate table name in datasets
Dimitrionian Feb 25, 2026
4d3ed19
Update connection types
Dimitrionian Feb 25, 2026
d3da8a2
Update example dags
Dimitrionian Feb 25, 2026
6f58d41
Fix import
Dimitrionian Feb 25, 2026
4b996f5
Merge pull request #21 from arenadata/feature/hbase-provider-review
Dimitrionian Feb 25, 2026
63adf49
Add get_provider_info
Dimitrionian Feb 26, 2026
5f0b833
Add get_provider_info
Dimitrionian Feb 26, 2026
a505d8e
Move common functionality to utils
Dimitrionian Feb 26, 2026
b25bf84
Fix delete_table functionality
Dimitrionian Feb 26, 2026
56f8a3a
Remove redundant code
Dimitrionian Feb 26, 2026
8407b8e
Fix the batch optimized dag
Dimitrionian Feb 26, 2026
e9fd2d6
Add versioning policy
Dimitrionian Feb 26, 2026
4cc91f4
Pylint the hbase provider top level
Dimitrionian Feb 26, 2026
2e5706e
Pylint the thrift pool
Dimitrionian Feb 26, 2026
04b02ee
Pylint the thrift ssl module
Dimitrionian Feb 26, 2026
cf40b1b
Pylint the thrift2_client
Dimitrionian Feb 26, 2026
bad9e17
Pylint operators
Dimitrionian Feb 26, 2026
0cba4d2
Pylint hooks hbase
Dimitrionian Feb 26, 2026
c6f7997
Pylint hooks hbase_cli
Dimitrionian Feb 26, 2026
e794372
Pylint hooks hbase_strategy
Dimitrionian Feb 26, 2026
d172530
Pylint example dags
Dimitrionian Feb 26, 2026
3642d75
Pylint sensors
Dimitrionian Feb 26, 2026
42ab472
Pylint auth and utils
Dimitrionian Feb 26, 2026
7e58f47
Refactor thrift2_client and thrift2_pool, deduplicate code
Dimitrionian Feb 27, 2026
658271a
Refactor thrift2_client and thrift2_pool, deduplicate code
Dimitrionian Feb 27, 2026
6e0517d
Deduplicate code, finish pylint
Dimitrionian Feb 27, 2026
6f5d023
Run black
Dimitrionian Feb 27, 2026
c4c8017
Adapt pylint to black rules
Dimitrionian Feb 27, 2026
034e77f
Apply mypy to HBase
Dimitrionian Feb 27, 2026
fa36906
Pass Airflow context properly
Dimitrionian Feb 27, 2026
7bc1b14
Update documentation (no SSL included so far)
Dimitrionian Feb 27, 2026
d7735c5
Merge pull request #22 from arenadata/feature/hbase-provider-best-pra…
Dimitrionian Feb 27, 2026
ce0b7f0
Use http transport
Dimitrionian Mar 4, 2026
2569f46
SSL and dag fixes
Dimitrionian Mar 6, 2026
6ddac5d
Fix backup check
Dimitrionian Mar 6, 2026
a071bc0
Fix tests
Dimitrionian Mar 10, 2026
970e38e
Run black
Dimitrionian Mar 10, 2026
80687f0
Run pylint
Dimitrionian Mar 10, 2026
5ba543b
Run mypy
Dimitrionian Mar 10, 2026
f0c185e
Merge pull request #23 from arenadata/feature/hbase-provider-ssl
Dimitrionian Mar 10, 2026
516e1d6
Update the docs
Dimitrionian Mar 10, 2026
08955b2
Remove redundant check
Dimitrionian Mar 10, 2026
3a0c4b3
Improve CLI command
Dimitrionian Mar 11, 2026
83e1d07
Substitute prints with logs
Dimitrionian Mar 11, 2026
01b1af4
Merge pull request #24 from arenadata/feature/hbase-provider-demo-rem…
Dimitrionian Mar 11, 2026
a3ad34f
Use Popen for long running tasks
Dimitrionian Mar 17, 2026
bc587ce
Add more test cases (quotes, list, kerberos) for the build cli comman…
Dimitrionian Mar 17, 2026
21b44f8
Properly build a shell string
Dimitrionian Mar 17, 2026
597383b
Validate empty input
Dimitrionian Mar 17, 2026
9a7b44d
Fix chunks
Dimitrionian Mar 17, 2026
f9ae19f
Log the amount of skipped rows
Dimitrionian Mar 17, 2026
226326d
Properly handle namespaces in data-plane operations
Dimitrionian Mar 17, 2026
6f77995
Remove duplicated ssl context creation logic
Dimitrionian Mar 17, 2026
5afe77b
Fix backup_path, add tests
Dimitrionian Mar 18, 2026
7bdbf89
Fix backup_type, add tests
Dimitrionian Mar 18, 2026
8218ded
Properly forward timeout
Dimitrionian Mar 18, 2026
6533c9e
Reset cached strategy
Dimitrionian Mar 18, 2026
9dc9862
Import DatabaseInfo lazily
Dimitrionian Mar 18, 2026
47ccc8c
Log exception on garbage collection
Dimitrionian Mar 18, 2026
6109403
Check batch size
Dimitrionian Mar 18, 2026
dff99ae
Remove dangerous and redundant logs
Dimitrionian Mar 18, 2026
c9282ee
Merge pull request #25 from arenadata/feature/hbase-provider-final
Dimitrionian Mar 19, 2026
58ae41e
Expand the exception catching
Dimitrionian Mar 19, 2026
d70c0b5
Expand the exception catching
Dimitrionian Mar 19, 2026
6e419c2
Remove redundant old code
Dimitrionian Mar 20, 2026
e69ff2c
Update the list of dags in provider.yaml
Dimitrionian Mar 20, 2026
d4ae31f
Update the connection docs
Dimitrionian Mar 20, 2026
fe85744
Update the changelog
Dimitrionian Mar 20, 2026
ecafe1b
Update the changelog.rst and index.rst
Dimitrionian Mar 20, 2026
4319e4e
Update the operators.rst
Dimitrionian Mar 20, 2026
6de67ea
Update security.rst
Dimitrionian Mar 20, 2026
d03dc2e
Update sensors.rst
Dimitrionian Mar 20, 2026
d1702f2
Merge branch '2.11.1-develop' into feature/hbase-provider-2.11.1
Dimitrionian Mar 23, 2026
28db74d
Run black
Dimitrionian Mar 24, 2026
e60f7fd
Run pylint
Dimitrionian Mar 24, 2026
4c40a27
Run mypy
Dimitrionian Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ airflow/www/static/docs
**/.DS_Store
**/Thumbs.db

# Exclude non-existent standard provider to prevent entry point issues
airflow/providers/standard

# Exclude docs generated files
docs/_build/
docs/_api/
Expand Down
16 changes: 16 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[MESSAGES CONTROL]
# Disable duplicate-code warnings for HBase provider
# These are legitimate uses of the same configuration pattern
disable=

[FORMAT]
# Maximum number of characters on a single line (black uses 88 by default)
max-line-length=120

[SIMILARITIES]
# Minimum lines number of a similarity - increased to avoid false positives
# in configuration initialization code
min-similarity-lines=20

# Ignore duplicate code in example DAGs (they share common patterns)
ignore-signatures=yes
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
# much smaller.
#
# Use the same builder frontend version for everyone
ARG AIRFLOW_EXTRAS="aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,docker,elasticsearch,fab,ftp,google,google-auth,graphviz,grpc,hashicorp,http,ldap,microsoft-azure,mysql,odbc,openlineage,pandas,postgres,redis,sendgrid,sftp,slack,snowflake,ssh,statsd,uv,virtualenv"
ARG AIRFLOW_EXTRAS="aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,docker,elasticsearch,fab,ftp,google,google-auth,graphviz,grpc,hashicorp,hbase,http,ldap,microsoft-azure,mysql,odbc,openlineage,pandas,postgres,redis,sendgrid,sftp,slack,snowflake,ssh,statsd,uv,virtualenv"
ARG ADDITIONAL_AIRFLOW_EXTRAS=""
ARG ADDITIONAL_PYTHON_DEPS=""

Expand Down
22 changes: 22 additions & 0 deletions airflow/providers/arenadata/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""Arenadata providers."""

from __future__ import annotations

__path__ = __import__("pkgutil").extend_path(__path__, __name__)
31 changes: 31 additions & 0 deletions airflow/providers/arenadata/hbase/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

``apache-airflow-providers-hbase``

Changelog
---------

1.0.0
.....

Initial version of the provider.

Features
~~~~~~~~

* ``Add HBase provider with basic functionality``
81 changes: 81 additions & 0 deletions airflow/providers/arenadata/hbase/VERSIONING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Versioning Policy

## Overview

The Arenadata HBase Provider follows [Semantic Versioning (SemVer)](https://semver.org/) principles.

## Version Format

Versions follow the format: `MAJOR.MINOR.PATCH` (e.g., `1.0.0`)

- **MAJOR** (X.0.0): Backward incompatible changes
- **MINOR** (0.X.0): New functionality with backward compatibility
- **PATCH** (0.0.X): Bug fixes with backward compatibility

## Initial Version

All providers start with version **1.0.0** (no alpha or beta releases).

## Version Increment Rules

| Change Type | Version Increment | Example |
|----------------------------------|-------------------|----------------------------------|
| Method/class removal | MAJOR | 1.0.0 → 2.0.0 |
| Method signature change | MAJOR | 1.0.0 → 2.0.0 |
| Breaking API changes | MAJOR | 1.0.0 → 2.0.0 |
| New functionality (backward compatible) | MINOR | 1.0.0 → 1.1.0 |
| New operators/hooks/sensors | MINOR | 1.0.0 → 1.1.0 |
| Bug fixes | PATCH | 1.0.0 → 1.0.1 |
| Documentation updates | PATCH | 1.0.0 → 1.0.1 |
| Dependency updates (minor) | PATCH | 1.0.0 → 1.0.1 |
| Dependency updates (major) | MINOR | 1.0.0 → 1.1.0 |

## Examples

### MAJOR Version Change (Breaking)
```python
# Version 1.0.0
def create_table(table_name: str, families: dict) -> None:
pass

# Version 2.0.0 - signature changed (breaking)
def create_table(table_name: str, families: dict, namespace: str = "default") -> None:
pass
```

### MINOR Version Change (New Feature)
```python
# Version 1.0.0
class HBaseCreateTableOperator:
pass

# Version 1.1.0 - new operator added
class HBaseAlterTableOperator: # New functionality
pass
```

### PATCH Version Change (Bug Fix)
```python
# Version 1.0.0
def delete_table(table_name: str) -> None:
# Bug: doesn't disable table before deletion
pass

# Version 1.0.1 - bug fixed
def delete_table(table_name: str) -> None:
# Fixed: now disables table before deletion
pass
```

## Backward Compatibility

- **MAJOR** versions may break backward compatibility
- **MINOR** and **PATCH** versions must maintain backward compatibility
- Deprecated features should be marked with warnings before removal in next MAJOR version

## Release Process

1. Update version in `__init__.py` and `provider.yaml`
2. Update `CHANGELOG.rst` with changes
3. Create git tag with version number
4. Build and publish package
35 changes: 35 additions & 0 deletions airflow/providers/arenadata/hbase/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""HBase provider package."""

from __future__ import annotations

import os
from pathlib import Path

import yaml # type: ignore # pylint: disable=import-error


def get_provider_info():
"""Return provider metadata from provider.yaml."""
provider_yaml_path = Path(__file__).parent / "provider.yaml"
with open(provider_yaml_path, encoding="utf-8") as f:
return yaml.safe_load(f)


__version__ = "1.0.0"
22 changes: 22 additions & 0 deletions airflow/providers/arenadata/hbase/client/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""HBase Thrift2 client module."""

from airflow.providers.arenadata.hbase.client.thrift2_client import HBaseThrift2Client

__all__ = ["HBaseThrift2Client"]
Loading