Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add a new protobuf field #6128

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .codacy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
exclude_paths:
- 'etc/**'
- 'tests/**'
- 'cylc/flow/**_pb2.py'
- 'cylc/flow/network/protobuf/**_pb2.py'
2 changes: 1 addition & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ coverage:
# files to ignore
ignore:
- "tests/**"
- "ws_messages_pb2.py"
- "cylc/flow/network/protobuf/cylc/v5/schema_pb2.py"
- "cylc/flow/scripts/report_timings.py"

flag_management:
Expand Down
4 changes: 2 additions & 2 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ disable_warnings =
module-not-measured
omit =
tests/*
*/cylc/flow/*_pb2.py
*/cylc/flow/network/protobuf/cylc/v5/*_pb2.py
cylc/flow/etc/*
cylc/flow/scripts/report_timings.py
parallel = True
Expand Down Expand Up @@ -43,7 +43,7 @@ fail_under=0
ignore_errors = False
omit =
tests/*
*/cylc/flow/*_pb2.py
*/cylc/flow/network/protobuf/cylc/v5/*_pb2.py
cylc/flow/etc/*
precision = 2
show_missing = False
Expand Down
81 changes: 81 additions & 0 deletions .github/workflows/protobuf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: protobuf

on:
pull_request:
# NOTE: don't run this on "workflow_dispatch" or "schedule" as it will commit
# directly to the branch

jobs:
protobuf:
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v4
with:
# we need all of the commits on the PR branch in order to be able to add new ones
fetch-depth: 100

- name: Install Protobuf
uses: mamba-org/setup-micromamba@v1
with:
environment-name: protobuf
create-args: protobuf
init-shell: bash

- name: Install bufbuild/buf
run: |
# activate homebrew (NOTE: must use "shell: bash -el {0}" to use this)
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew

# NOTE: bufbuild does exist on conda-forge but hasn't been updated for a while
brew install bufbuild/buf/buf

- name: Lint
run: |
# lint .proto files
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew
cd cylc/flow/network/protobuf
buf lint

- name: Compatibility
shell: bash -el {0}
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew
cd cylc/flow/network/protobuf
# NOTE: "buf breaking" exits "100" for a missing file (i.e. new version not present on old branch)
# --against 'https://github.com/cylc/cylc-flow.git#tag=${{ github.base_ref }},subdir=proto') \
buf breaking \
--against 'https://github.com/oliver-sanders/cylc-flow.git#tag=${{ github.base_ref }},subdir=proto' \
|| ( \
ret=$?; \
if [[ $ret == 100 ]]; then exit 0; \
elif [[ $ret != 0 ]]; then echo '::error:: Breaking changes detected, create a new version of the protobuf schema if this is desired and increment the Cylc API number to match'; \
fi \
)

- name: Build
shell: bash -el {0}
run: |
# generate .py and .pyi files from the .proto files
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew
micromamba activate protobuf
cd cylc/flow/network/protobuf
buf generate

- name: Configure git
uses: cylc/release-actions/configure-git@v1

- name: Commit & Push
run: |
if [[ -z $(git diff --stat) ]]; then
echo '::error:: No functional changes made to the protobuf schema'
exit 0
else
echo '::info:: pushing update commit'
git add -u
git commit -m 'protobuf: updating generated files'
git push origin HEAD:${{ github.head_ref }}
exit 0
fi
100 changes: 0 additions & 100 deletions cylc/flow/data_messages_pb2.py

This file was deleted.

20 changes: 10 additions & 10 deletions cylc/flow/data_store_mgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@

from cylc.flow import __version__ as CYLC_VERSION, LOG
from cylc.flow.cycling.loader import get_point
from cylc.flow.data_messages_pb2 import (
from cylc.flow.network.protobuf.cylc.v5.schema_pb2 import (
PbEdge, PbEntireWorkflow, PbFamily, PbFamilyProxy, PbJob, PbTask,
PbTaskProxy, PbWorkflow, PbRuntime, AllDeltas, EDeltas, FDeltas,
FPDeltas, JDeltas, TDeltas, TPDeltas, WDeltas)
Expand Down Expand Up @@ -382,7 +382,7 @@ def create_delta_store(delta=None, workflow_id=None):
"""Create a mini data-store out of the all deltas message.

Args:
delta (cylc.flow.data_messages_pb2.AllDeltas):
delta (cylc.flow.v5.schema_pb2.AllDeltas):
The message of accumulated deltas for publish/push.
workflow_id (str):
The workflow ID.
Expand Down Expand Up @@ -430,18 +430,18 @@ class DataStoreMgr:
Local store of config.get_first_parent_ancestors()
.data (dict):
.edges (dict):
cylc.flow.data_messages_pb2.PbEdge by internal ID.
cylc.flow.v5.schema_pb2.PbEdge by internal ID.
.families (dict):
cylc.flow.data_messages_pb2.PbFamily by name (internal ID).
cylc.flow.v5.schema_pb2.PbFamily by name (internal ID).
.family_proxies (dict):
cylc.flow.data_messages_pb2.PbFamilyProxy by internal ID.
cylc.flow.v5.schema_pb2.PbFamilyProxy by internal ID.
.jobs (dict):
cylc.flow.data_messages_pb2.PbJob by internal ID.
cylc.flow.v5.schema_pb2.PbJob by internal ID.
.tasks (dict):
cylc.flow.data_messages_pb2.PbTask by name (internal ID).
cylc.flow.v5.schema_pb2.PbTask by name (internal ID).
.task_proxies (dict):
cylc.flow.data_messages_pb2.PbTaskProxy by internal ID.
.workflow (cylc.flow.data_messages_pb2.PbWorkflow)
cylc.flow.v5.schema_pb2.PbTaskProxy by internal ID.
.workflow (cylc.flow.v5.schema_pb2.PbWorkflow)
Message containing the global information of the workflow.
.descendants (dict):
Local store of config.get_first_parent_descendants()
Expand Down Expand Up @@ -2688,7 +2688,7 @@ def get_entire_workflow(self):
"""Gather data elements into single Protobuf message.

Returns:
cylc.flow.data_messages_pb2.PbEntireWorkflow
cylc.flow.v5.schema_pb2.PbEntireWorkflow

"""

Expand Down
10 changes: 10 additions & 0 deletions cylc/flow/network/protobuf/buf.gen.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# file containing protobuf configuration

version: v2

plugins:
- protoc_builtin: python
out: .

- protoc_builtin: pyi
out: .
11 changes: 11 additions & 0 deletions cylc/flow/network/protobuf/buf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# file containing protobuf configuration

version: v2

lint:
use:
- DEFAULT

breaking:
use:
- FILE
Loading
Loading