Source system modules for Foundation DP#274
Conversation
1. Small update on success criteria 2. Added inconsistencies as a pain point
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces the Foundation Deployment Pack (dp:foundation), providing a modular architecture for CDF projects with pre-configured modules for PI, OPC-UA, SAP, DB, and file ingestion. Feedback focuses on ensuring all identifiers and prefixes are properly parameterized using Toolkit variables to avoid hardcoding. Several potential bugs were identified regarding inconsistent casing and typos in SAP OData filters. Security improvements are required for the example notebook to restrict overly broad 'WRITE' permissions, and the notebook module ID must be updated to follow the snake_case naming convention.
| sap_service: ZGW_GETEQIP_SRV # verify service name in your SAP NW Gateway | ||
| sap_entity: EquipmentListSet | ||
| sap_key: [Equipment] | ||
| filter: "Maintplant eq '{{sapPlant}}'" |
There was a problem hiding this comment.
The filter property Maintplant has inconsistent casing compared to MaintPlant used for FunclocListSet (line 62). This is likely a typo and may cause filtering to fail if the OData service expects consistent casing. Please verify the correct property name from the SAP service metadata and use it consistently.
filter: "MaintPlant eq '{{sapPlant}}'"| sap_service: ZPM_NOTI_EXTRACT_DATA_SRV # verify service name in your SAP NW Gateway | ||
| sap_entity: ExNotifheader | ||
| sap_key: [NotifNo] | ||
| filter: "Mainplant eq '{{sapPlant}}'" |
There was a problem hiding this comment.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
|
Please split this PR into several:
|
Summary
Introduces the Layer 1 source system modules for
dp:foundation. Each module is self-contained - no shared foundation module required - and ships a production-grade extractor configuration template alongside the CDF resources needed to start ingesting on day one.Added
cdf_pi_foundation— OSIsoft PI .NET Extractor. Writes timeseries directly to CDF with no RAW staging. Extractor config usesspace-idto writeExtractorTimeSeriesinstances straight into the DM instance space.cdf_opcua_foundation— OPC-UA Extractor. Timeseries values go direct to CDF; node browse metadata and state caches land in RAW (db_{{location}}_opcua).cdf_sap_foundation— SAP OData Extractor. Lands functional locations, equipment, work orders, work packages, work tasks, and notifications into seven RAW tables indb_{{location}}_sap. Includes a state store table for delta tracking.cdf_db_foundation— DB Extractor (ODBC). RAW landing for relational databases (PostgreSQL, MSSQL, Oracle, MySQL). Config template uses PostgreSQL as the example.cdf_files_foundation— SharePoint Extractor. Ingests files from SharePoint into CDF Files.Test Plan
cdf_sap_foundation: confirm all seven RAW tables are created indb_{{location}}_sapcdf_pi_foundationandcdf_opcua_foundation: confirm no RAW database is created (direct-write only)