Skip to main content

Librería de utilidades para Oracle Cloud Infrastructure (OCI)

Project description

Utils OCI - Librería de Utilidades para Oracle Cloud Infrastructure

Una librería Python con funciones utilitarias para trabajar con Oracle Cloud Infrastructure (OCI), incluyendo conexiones, SQL endpoints, y más.

🚀 Instalación

📦 Método 1: Instalación Directa desde Git (Recomendado)

La forma más sencilla de usar esta librería en tus proyectos es instalarla directamente desde el repositorio Git.

Opción A: Con requirements.txt

Agrega esta línea a tu archivo requirements.txt:

git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

Luego instala:

pip install -r requirements.txt

Opción B: Con pyproject.toml

Agrega esta línea en las dependencias de tu pyproject.toml:

[project]
dependencies = [
    "utils-oci @ git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git",
    # ... otras dependencias
]

Opción C: Instalación Directa con pip

pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

🏷️ Instalación de Versiones Específicas

# Versión específica (tag)
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git@v0.1.0

# Rama específica
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git@main

# Commit específico
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git@abc1234

# Al hacer pruebas con la versión de desarrollo y forzando reinstalacion para eviar problemas con cache
pip install --upgrade --force-reinstall --no-cache-dir git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git@dev

🛠️ Método 2: Instalación Local de Desarrollo

Para desarrollo local o si tienes problemas con pip:

# Clonar el repositorio
git clone https://bitbucket.org/entel_fuentes/utils_oci_lib.git
cd utils-oci-lib

# Opción A: Instalación estándar
pip install -e .

# Opción B: Si hay problemas con pip (Windows)
python install_library.py

📖 Uso Básico

Importar y Usar

# Importar la librería
from utils_oci import hello_world
from utils_oci.core import get_version

# Función de prueba
result = hello_world()
print(result)  # ¡Hola! Utils OCI está funcionando correctamente 🚀

# Verificar versión
version = get_version()
print(f"Versión: {version}")  # Versión: 0.1.0

Ejemplo Completo en Otro Proyecto

  1. Crear requirements.txt en tu proyecto:
# requirements.txt
requests>=2.25.0
pandas>=1.3.0
git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git
python-dotenv>=0.19.0
  1. Instalar dependencias:
pip install -r requirements.txt
  1. Usar en tu código Python:
# main.py
from utils_oci import hello_world

def main():
    # Usar funciones de la librería
    result = hello_world()
    print(result)
    
    # Aquí irán tus funciones de OCI
    # connection = oci_connect()
    # endpoint = start_sql_endpoint()

if __name__ == "__main__":
    main()

🧪 Verificar Instalación

Script de Prueba Rápida

# test_install.py
try:
    from utils_oci import hello_world
    print("✅ Importación exitosa")
    
    result = hello_world()
    print(f"✅ Función ejecutada: {result}")
    
    print("🎉 ¡Instalación completamente funcional!")
    
except ImportError as e:
    print(f"❌ Error de importación: {e}")
except Exception as e:
    print(f"❌ Error general: {e}")

📁 Estructura del Proyecto

utils_oci_lib/ ├── setup.py # Configuración del paquete (legacy) ├── pyproject.toml # Configuración moderna de Python
├── requirements.txt # Dependencias del proyecto ├── LICENSE # Licencia MIT ├── MANIFEST.in # Archivos a incluir en el paquete ├── README.md # Esta documentación ├── Dockerfile # Imagen Docker para testing ├── .gitignore # Archivos a ignorar en Git ├── bitbucket-pipelines.yml # CI/CD configuration │ ├── utils_oci/ # 📦 Librería principal │ ├── init.py # Hace que sea un paquete importable │ ├── core.py # Funciones principales y versión │ ├── auth.py # 🔐 Autenticación OCI (Config/Instance/Resource Principal) │ ├── clients.py # 🔌 Clientes OCI (DataFlow, Object Storage, etc.) │ ├── compartments.py # 🗂️ Gestión de compartments │ ├── container_instances.py # 🐳 Gestión de Container Instances │ ├── sqle.py # 💾 SQL Endpoints y conexiones JDBC │ └── logger_config.py # 📝 Configuración de logging │ ├── tests/ # 🧪 Tests unitarios e integración │ ├── init.py │ ├── test_basic.py # Tests básicos de importación │ ├── test_auth_.py # Tests de autenticación │ ├── test_logger_.py # Tests de logging │ ├── test_connect_sqle.py # Tests de conexión SQL Endpoint │ ├── test_integration.py # Tests de integración │ ├── test_git_install.py # Tests de instalación desde Git │ └── test_from_outside.py # Tests externos │ ├── docs/ # 📚 Documentación adicional │ └── EJEMPLO_CONNECT_SQLE.md # Ejemplos de conexión SQLE │ ├── archivos_de_ejemplo/ # 📋 Ejemplos de uso │ ├── example_usage.py │ ├── pyproject_example.toml │ └── requirements_example.txt │ ├── airflow_dags/ # ✈️ DAGs de ejemplo para Airflow │ └── test_DAG_airflow.py │ ├── test_de_libreria_en_CI/ # 🔬 Testing en CI/CD │ ├── build_docker.sh │ ├── requirements.txt │ └── test_utils_oci.py │ └── sandbox/ # 🏖️ Archivos de desarrollo ├── install_library.py # Instalación manual (fallback) └── setup.py # Setup alternativo


### 📦 Módulos Principales

#### 🔐 `auth.py`
- Autenticación multi-método (Config file, Instance Principal, Resource Principal)
- Detección automática del método de autenticación
- Signers para diferentes contextos de ejecución

#### 🔌 `clients.py`
- Factory de clientes OCI pre-configurados
- `get_dataflow_client()`: Cliente para DataFlow y SQL Endpoints
- `get_object_storage_client()`: Cliente para Object Storage (buckets)
- Gestión automática de autenticación

#### 🗂️ `compartments.py`
- Validación de compartments
- Gestión de recursos por compartment

#### 🐳 `container_instances.py`
- Gestión de Container Instances
- Ejecución de jobs en contenedores
- Monitoreo de logs en tiempo real

#### 💾 `sqle.py`
- Gestión de SQL Endpoints (start, stop, status)
- Conexión JDBC a SQL Endpoints
- Soporte automático para Resource/Instance Principal

#### 📝 `logger_config.py`
- Configuración centralizada de logging
- Formateo consistente de logs
- Integración con sistemas de logging externos

## 🔄 Actualización de la Librería

### Actualizar a la Última Versión

```bash
# Desinstalar versión actual
pip uninstall utils-oci

# Reinstalar última versión
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

Actualizar con pip

pip install --upgrade git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

🔧 CI/CD con Bitbucket Pipelines

¿Qué es bitbucket-pipelines.yml?

El archivo bitbucket-pipelines.yml configura la integración y despliegue continuo (CI/CD) para tu librería en Bitbucket. Automatiza las siguientes tareas:

  • Pruebas automáticas en cada push y pull request
  • Verificación de instalación desde Git
  • Testing en múltiples versiones de Python (3.8, 3.9, 3.10, 3.11)
  • Validación de código con herramientas de calidad

Cómo Funciona

  1. Activación automática: Se ejecuta en cada git push y pull request
  2. Testing paralelo: Prueba en diferentes versiones de Python simultáneamente
  3. Instalación: Verifica que la librería se instale correctamente desde Git
  4. Pruebas: Ejecuta todos los tests en la carpeta tests/

Configuración en Bitbucket

Para habilitar Bitbucket Pipelines en tu repositorio:

  1. Ir a tu repositorio en Bitbucket
  2. Navegar a: Repository settingsPipelinesSettings
  3. Habilitar: "Enable Pipelines"
  4. Confirmar: El archivo bitbucket-pipelines.yml se detectará automáticamente

Estados del Pipeline

  • 🟢 Verde (Éxito): Todas las pruebas pasan, librería lista para usar
  • 🔴 Rojo (Fallo): Hay errores que necesitan corrección
  • 🟡 Amarillo (En progreso): Pipeline ejecutándose

Ver Resultados

  • En Bitbucket: Ve a Pipelines en la barra lateral de tu repositorio
  • En commits: Verás el estado del pipeline junto a cada commit
  • En Pull Requests: El estado aparece antes de hacer merge

Beneficios

Detección temprana: Encuentra errores antes de que lleguen a producción
Calidad garantizada: Solo código que pasa pruebas llega a main
Colaboración segura: Pull requests se validan automáticamente
Documentación viva: Los tests sirven como ejemplos de uso

Personalizar el Pipeline

Para modificar el comportamiento, edita bitbucket-pipelines.yml:

# Agregar más versiones de Python
- step:
    name: Test Python 3.12
    image: python:3.12
    
# Agregar herramientas de análisis
- pip install black flake8
- black --check .
- flake8 .

# Agregar tests de integración
- python tests/integration_tests.py

🔧 Para Desarrolladores

Configuración del Repositorio

  1. Actualiza información del autor:

    • Edita setup.py y pyproject.toml
    • Cambia "Tu Nombre" y email por tu información real
  2. Publica en GitHub:

    git init
    git add .
    git commit -m "Initial commit: Utils OCI library"
    git remote add origin https://bitbucket.org/entel_fuentes/utils_oci_lib.git
    git push -u origin main
    

Crear Nuevas Versiones (Tags)

# Crear tag para nueva versión
git tag v0.1.0
git push origin v0.1.0

# Los usuarios podrán instalar esta versión específica:
# pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git@v0.1.0

🐛 Solución de Problemas

Error: "No module named 'utils_oci'"

Causa: La librería no se instaló correctamente desde Git.

Solución:

# Verificar instalación
pip list | grep utils-oci

# Si no aparece, reinstalar
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

Error: "Permission denied" en Git

Causa: Problemas de autenticación con GitHub.

Solución:

# Usar HTTPS en lugar de SSH
pip install git+https://bitbucket.org/entel_fuentes/utils_oci_lib.git

# Si el repositorio es privado, usar token personal:
pip install git+https://TOKEN@github.com/entel_fuentes/utils_oci_lib.git

Error: "Could not find a version"

Causa: URL del repositorio incorrecta o repositorio no existe.

Solución:

  1. Verificar que el repositorio existe en GitHub
  2. Comprobar que la URL es correcta
  3. Verificar que el repositorio es público o tienes acceso

🎯 Ventajas de Este Método

Una sola línea: Solo agregar al requirements.txt o pyproject.toml
Actualización automática: pip install --upgrade funciona
Compatible con pipenv, poetry, conda: Funciona con todos los gestores
Versionado: Puedes especificar tags, ramas o commits específicos
CI/CD friendly: Funciona en contenedores y pipelines
Sin configuración extra: No requiere configuración adicional en proyectos

📝 Próximas Funciones

  • ✅ Función hello_world (implementada)
  • ✅ Instalación desde Git (implementada)
  • 🔄 Conexiones a OCI
  • 🔄 Manejo de SQL endpoints
  • 🔄 Funciones de autenticación
  • 🔄 Utilidades de configuración

¿Problemas? Consulta la sección "Solución de Problemas" o crea un issue en el repositorio.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

utils_oci-0.1.0.tar.gz (66.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

utils_oci-0.1.0-py3-none-any.whl (41.1 kB view details)

Uploaded Python 3

File details

Details for the file utils_oci-0.1.0.tar.gz.

File metadata

  • Download URL: utils_oci-0.1.0.tar.gz
  • Upload date:
  • Size: 66.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for utils_oci-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2264d565e5937cad5c722d7df90a7f4f9255c9e1fbf7c28d0192bf3bff79e8b0
MD5 37c46b9a8a1d6770323387398fafe01c
BLAKE2b-256 f6c690dd2f372444e63e302e8ccc7186fd445d44d6f65559b205b4e2ec72c07c

See more details on using hashes here.

File details

Details for the file utils_oci-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: utils_oci-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for utils_oci-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d101396dc802d8e42dba5f2cf91140fd563ff233926fd79eaf579206a02f7ea
MD5 d2babcd7ee8d0e920bc36aef289a82e2
BLAKE2b-256 5d12bb819c8a0409f339a15acc12ad57137aff9642d16565ba5accb116697617

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page