From ed60972006b9b9745e9bef2b5f2132b0da2ea706 Mon Sep 17 00:00:00 2001 From: ggHost Date: Mon, 26 Jan 2026 00:00:08 +0300 Subject: [PATCH 01/17] feat: implement lab01 devops info service on python --- app_python/.gitignore | 12 ++ app_python/README.md | 46 +++++ app_python/app.py | 186 ++++++++++++++++++ app_python/docs/LAB01.md | 164 +++++++++++++++ .../docs/screenshots/01-main-endpoint.png | Bin 0 -> 123317 bytes .../docs/screenshots/02-health-check.png | Bin 0 -> 19477 bytes .../docs/screenshots/03-formatted-output.png | Bin 0 -> 149906 bytes app_python/requirements.txt | 4 + app_python/tests/__init__.py | 1 + 9 files changed, 413 insertions(+) create mode 100644 app_python/.gitignore create mode 100644 app_python/README.md create mode 100644 app_python/app.py create mode 100644 app_python/docs/LAB01.md create mode 100644 app_python/docs/screenshots/01-main-endpoint.png create mode 100644 app_python/docs/screenshots/02-health-check.png create mode 100644 app_python/docs/screenshots/03-formatted-output.png create mode 100644 app_python/requirements.txt create mode 100644 app_python/tests/__init__.py diff --git a/app_python/.gitignore b/app_python/.gitignore new file mode 100644 index 0000000000..ba1db0ed69 --- /dev/null +++ b/app_python/.gitignore @@ -0,0 +1,12 @@ +# Python +__pycache__/ +*.py[cod] +venv/ +*.log + +# IDE +.vscode/ +.idea/ + +# OS +.DS_Store diff --git a/app_python/README.md b/app_python/README.md new file mode 100644 index 0000000000..452d417361 --- /dev/null +++ b/app_python/README.md @@ -0,0 +1,46 @@ +# DevOps Info Service + +## Overview +A simple Python web service that returns service info, system information, runtime uptime, and request details. + +## Prerequisites +- Python 3.10+ (recommended: latest available in your environment) +- pip + virtualenv + +## Installation +```bash +python3 -m venv venv +source venv/bin/activate +pip3 install -r requirements.txt +``` + +## Running the Application +```bash +python3 app.py +``` +Custom config: +```bash +PORT=8080 python3 app.py +# or +HOST=127.0.0.1 PORT=3000 DEBUG=true python3 app.py +``` +Production-like run (WSGI): +```bash +gunicorn -w 2 -b 0.0.0.0:5000 app:app +``` + +## API Endpoints +- GET `/` — Service and system information +- GET `/health` — Health check + +## Configuration +| Variable | Default | Description | +| ------------------- | -------------------------- | ------------------- | +| HOST | 0.0.0.0 | Bind address | +| PORT | 5000 | Listen port | +| DEBUG | false | Flask debug mode | +| LOG_LEVEL | INFO | Logging level | +| SERVICE_NAME | devops-info-service | Service name | +| SERVICE_VERSION | 1.0.0 | Service version | +| SERVICE_DESCRIPTION | DevOps course info service | Service description | + diff --git a/app_python/app.py b/app_python/app.py new file mode 100644 index 0000000000..6bc37cf056 --- /dev/null +++ b/app_python/app.py @@ -0,0 +1,186 @@ +""" +DevOps Info Service +LAB01: Python Web Application (Flask) +""" +import os +import socket +import logging +import platform +from datetime import datetime, timezone +from flask import Flask, jsonify, request + +# Logging +logging.basicConfig( + level=os.getenv("LOG_LEVEL", "INFO").upper(), + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", +) +logger = logging.getLogger("devops-info-service") + +# Configuration (env) +HOST = os.getenv("HOST", "0.0.0.0") +PORT = int(os.getenv("PORT", "5000")) +DEBUG = os.getenv("DEBUG", "false").lower() == "true" + +SERVICE_NAME = os.getenv("SERVICE_NAME", "devops-info-service") +SERVICE_VERSION = os.getenv("SERVICE_VERSION", "1.0.0") +SERVICE_DESCRIPTION = os.getenv("SERVICE_DESCRIPTION", "DevOps course info service") +SERVICE_FRAMEWORK = "Flask" + +# App init +app = Flask(__name__) + +START_TIME = datetime.now(timezone.utc) + + +# Helpers +def iso_utc_now() -> str: + """Current time in UTC as ISO8601 with milliseconds and Z suffix.""" + return ( + datetime.now(timezone.utc) + .isoformat(timespec="milliseconds") + .replace("+00:00", "Z") + ) + + +def _plural(n: int, one: str, many: str) -> str: + return one if n == 1 else many + + +def get_uptime() -> dict: + """Return uptime in seconds and human-readable format.""" + delta = datetime.now(timezone.utc) - START_TIME + seconds = int(delta.total_seconds()) + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + human = f"{hours} {_plural(hours, 'hour', 'hours')}, {minutes} {_plural(minutes, 'minute', 'minutes')}" + return {"seconds": seconds, "human": human} + + +def get_platform_version() -> str: + """ + Try to return a friendly OS version string (e.g., Ubuntu 24.04). + Falls back to platform.platform(). + """ + try: + if hasattr(platform, "freedesktop_os_release"): + data = platform.freedesktop_os_release() + pretty = data.get("PRETTY_NAME") + if pretty: + return pretty + except Exception: + pass + return platform.platform() + + +def get_system_info() -> dict: + """Collect system information.""" + return { + "hostname": socket.gethostname(), + "platform": platform.system(), + "platform_version": get_platform_version(), + "architecture": platform.machine(), + "cpu_count": os.cpu_count() or 0, + "python_version": platform.python_version(), + } + + +def get_request_info() -> dict: + """Collect request information.""" + # request.remote_addr gives client address (may be proxy without X-Forwarded-For) + forwarded_for = request.headers.get("X-Forwarded-For", "").split(",")[0].strip() + client_ip = forwarded_for or request.remote_addr + + user_agent = request.headers.get("User-Agent", "") + + return { + "client_ip": client_ip, + "user_agent": user_agent, + "method": request.method, + "path": request.path, + } + + +def get_endpoints() -> list: + return [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"}, + ] + + +# Hooks +@app.before_request +def log_request(): + logger.info("%s %s from %s", request.method, request.path, request.remote_addr) + + +# Routes +@app.route("/", methods=["GET"]) +def index(): + uptime = get_uptime() + payload = { + "service": { + "name": SERVICE_NAME, + "version": SERVICE_VERSION, + "description": SERVICE_DESCRIPTION, + "framework": SERVICE_FRAMEWORK, + }, + "system": get_system_info(), + "runtime": { + "uptime_seconds": uptime["seconds"], + "uptime_human": uptime["human"], + "current_time": iso_utc_now(), + "timezone": "UTC", + }, + "request": get_request_info(), + "endpoints": get_endpoints(), + } + return jsonify(payload), 200 + + +@app.route("/health", methods=["GET"]) +def health(): + uptime = get_uptime() + return ( + jsonify( + { + "status": "healthy", + "timestamp": iso_utc_now(), + "uptime_seconds": uptime["seconds"], + } + ), + 200, + ) + + +# Error handlers +@app.errorhandler(404) +def not_found(_error): + return ( + jsonify( + { + "error": "Not Found", + "message": "Endpoint does not exist", + } + ), + 404, + ) + + +@app.errorhandler(500) +def internal_error(_error): + logger.exception("Internal error") + return ( + jsonify( + { + "error": "Internal Server Error", + "message": "An unexpected error occurred", + } + ), + 500, + ) + + +# Entry point +if __name__ == "__main__": + logger.info("Starting %s on %s:%s (debug=%s)", SERVICE_NAME, HOST, PORT, DEBUG) + app.run(host=HOST, port=PORT, debug=DEBUG) diff --git a/app_python/docs/LAB01.md b/app_python/docs/LAB01.md new file mode 100644 index 0000000000..ffbc88c4f8 --- /dev/null +++ b/app_python/docs/LAB01.md @@ -0,0 +1,164 @@ +# LAB01 — Python Web Application (DevOps Info Service) + +## 1) Framework Selection + +### Chosen framework: Flask +I chose **Flask** because it is a lightweight Python web framework that is quick to set up for small REST services and does not force a heavy project structure. +For this lab (two endpoints + JSON responses + basic best practices) Flask keeps the implementation minimal and easy to explain. + +### Comparison table +| Framework | Pros | Cons | Fit for this lab | +|-----------|---------------------------------------------|------------------------------------------------------|-----------------------------| +| Flask | Lightweight, flexible, easy to learn | Fewer built-in components than full-stack frameworks | Best match (simple service) | +| FastAPI | Async-first, automatic OpenAPI docs | More concepts (ASGI, Pydantic), more setup | Good, but not required here | +| Django | Full-featured framework, batteries included | Overkill for 2 endpoints | Too heavy for LAB01 scope | + +--- + +## 2) Best Practices Applied + +### 2.1 Clean code organization (helpers + constants) +I separated logic into small functions (`get_system_info`, `get_uptime`, `get_request_info`) to keep routes readable and maintainable. + +### 2.2 Environment-based configuration (12-factor style) +The service can be configured via environment variables to run in different environments without changing code. + +```python +HOST = os.getenv("HOST", "0.0.0.0") +PORT = int(os.getenv("PORT", "5000")) +DEBUG = os.getenv("DEBUG", "false").lower() == "true" +``` + +### 2.3 Logging (visibility & debugging) +A structured logging format is configured at startup. Each request is logged via a before_request hook. + +```python +logging.basicConfig( + level=os.getenv("LOG_LEVEL", "INFO").upper(), + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", +) +logger = logging.getLogger("devops-info-service") + +@app.before_request +def log_request(): + logger.info("%s %s from %s", request.method, request.path, request.remote_addr) +``` + +### 2.4 Error handling (JSON responses instead of HTML) +Custom handlers return JSON for 404 and 500, which is standard for API-style services. + +```python +@app.errorhandler(404) +def not_found(_error): + return jsonify({"error": "Not Found", "message": "Endpoint does not exist"}), 404 + +@app.errorhandler(500) +def internal_error(_error): + logger.exception("Internal error") + return jsonify({"error": "Internal Server Error", "message": "An unexpected error occurred"}), 500 +``` + +### 2.5 Request data handling (headers, client IP) +Request metadata is taken from Flask’s request object (headers, path, method, remote address). + +```python +def get_request_info() -> dict: + forwarded_for = request.headers.get("X-Forwarded-For", "").split(",").strip() + client_ip = forwarded_for or request.remote_addr + user_agent = request.headers.get("User-Agent", "") + return { + "client_ip": client_ip, + "user_agent": user_agent, + "method": request.method, + "path": request.path, + } +``` + +## 3) API Documentation +### 3.1 Endpoints +- GET `/` — service + system + runtime + request information. + ```json + { + "endpoints": [ + { + "description": "Service information", + "method": "GET", + "path": "/" + }, + { + "description": "Health check", + "method": "GET", + "path": "/health" + } + ], + "request": { + "client_ip": "127.0.0.1", + "method": "GET", + "path": "/", + "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" + }, + "runtime": { + "current_time": "2026-01-25T20:42:30.631Z", + "timezone": "UTC", + "uptime_human": "0 hours, 8 minutes", + "uptime_seconds": 508 + }, + "service": { + "description": "DevOps course info service", + "framework": "Flask", + "name": "devops-info-service", + "version": "1.0.0" + }, + "system": { + "architecture": "arm64", + "cpu_count": 10, + "hostname": "Mac.ufanet.ru", + "platform": "Darwin", + "platform_version": "macOS-15.6.1-arm64-arm-64bit", + "python_version": "3.12.10" + } + } + ``` +- GET `/health` — health status + timestamp + uptime. + ```json + { + "status": "healthy", + "timestamp": "2026-01-25T20:38:07.959Z", + "uptime_seconds": 246 + } + ``` + +### 3.2 Example requests +Run the app: +```bash +python3 app.py +# Custom config: +HOST=127.0.0.1 PORT=3000 DEBUG=true python app.py +``` +Test endpoints: +```bash +curl -i http://127.0.0.1:5000/ +curl -i http://127.0.0.1:5000/health +``` +Pretty-print JSON: +```bash +curl -s http://127.0.0.1:5000/ | python3 -m json.tool +curl -s http://127.0.0.1:5000/health | python3 -m json.tool +``` +## 4) Testing Evidence (Screenshots) +Screenshots are stored in docs/screenshots/: +- 01-main-endpoint.png — GET `/` full JSON response. + ![](screenshots/01-main-endpoint.png) +- 02-health-check.png — GET `/health` response. + ![](screenshots/02-health-check.png) +- 03-formatted-output.png — pretty-printed JSON output (python -m json.tool). + ![](screenshots/03-formatted-output.png) + +## 5) Challenges & Solutions +- OS version formatting: Different systems expose OS version differently, so I used a helper that tries `platform.freedesktop_os_release()` when available and falls back to `platform.platform()`. +- Client IP behind proxy: If the service is behind a reverse proxy, the real IP may be in `X-Forwarded-For`, so I check that header first, then fall back to `request.remote_addr`. + +## 6) GitHub Community +Starring repositories helps with discovery/bookmarking and signals support to maintainers, which can increase a project’s visibility and contributions over time. + +Following developers helps you stay aware of teammates’ work, learn from their activity, and collaborate more effectively in team projects. \ No newline at end of file diff --git a/app_python/docs/screenshots/01-main-endpoint.png b/app_python/docs/screenshots/01-main-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..18f7edb44f8eb8be83aac5ec6a175afea5f0b4bc GIT binary patch literal 123317 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≤OI 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