Core skills that we will be evaluating are as below:
1. Python coding skills, with good understanding of coding standards and guidelines.
2. Basic knowledge of Ubuntu OS, files paths etc
3. Knowledge of Docker containers, docker compose etc
What the Application Does without getting too much into domain.
The Configuration Generator is a Python-based command line application that transforms JSON files (based on defined JSON schema) into deployable configuration artifacts for Fluence OS. Commissioning of Fluence OS requires many coordinated configuration files across controls, edge runtime, SQL schema, network inventory, alarming, and protocol adapters — this tool automates that process of file creation.
The pipeline operates in two phases: a setup phase (load inputs, validate topology, build an in-memory site model, pre-generate metric identifiers) and a generation phase (execute 10+ specialized generator modules in a fixed order to emit output artifacts). Generators cover domains including EdgeX device profiles, controls XML, network host inventories, historian SQL schemas, OPC UA node filters, alarm configs, and UI configuration.
Coding Standards & Practices
Language & Structure: Python 3.10+, organized in a standard packages with folder structures with domain-specific sub-packages.
SOLID/OOP design principles are explicitly referenced in contributor guidance.
Validation: Pydantic models are used extensively for input validation and domain entity definition, enforcing data contracts at load time.
Templating: Jinja2 templates are used to separate output formatting from data preparation logic, keeping generator modules clean and domain-focused.
Dependency Injection: Constructor-based DI (manual wiring, no framework).
Deterministic & Cacheable: Device and metric IDs are generated deterministically for reproducibility.
Error Handling: Fail-fast for required data (strict lookups), tolerant try_find_ function calls for optional data — reducing silent errors while retaining flexibility.
Testing: pytest with parallel execution (pytest-xdist), Allure reporting, and a large golden-data test corpus for integration/regression validation. Tests are organized by domain, mirroring the source structure.
Static Analysis: mypy is the primary enforced static type checker (run in CI).
CI/CD: Jenkins build, mypy, tests, artifact packaging, and Nexus publishing.