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

enhancement: add sse service skeleton #6992

Merged
merged 4 commits into from
Aug 30, 2023
Merged

Conversation

fschade
Copy link
Contributor

@fschade fschade commented Aug 8, 2023

Description

So far, SSE has only been used to exchange content type messages between the server and the client.
In order to be able to send more content (and context) to the client, we have moved the endpoint to a separate service and are now also using it for other notifications like:

  • notify postprocessing state changes.
  • notify file locking and unlocking.
  • TBD

Related Issue

Motivation and Context

First SSE POC was build as part of our christmas hacking and is used as a content messaging (no context) layer only at the moment, this is nice but does not show or use the whole potential of that endpoint.

To do so, and also make our clients more interactive (RIP F4), we start to use it for other notifications more and more.
For the moment we should not rely on SSE exclusively for business critical communications, that's why we're going on two tracks for the moment.

How Has This Been Tested?

  • test environment:
  • test case 1:
  • test case 2:
  • ...

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Technical debt
  • Tests only (no source changes)

Checklist:

  • Code changes
  • Unit tests added
  • Acceptance tests added
  • Documentation ticket raised:

@fschade
Copy link
Contributor Author

fschade commented Aug 8, 2023

@kobergj, skeleton only right now, feel free to take over, i'm back on monday.
@lookacat FYI

@kobergj
Copy link
Collaborator

kobergj commented Aug 21, 2023

  • Provide a README.md for that service in the root folder of that service.
    • Use CamelCase for section headers.
  • For images and example files used in README.md:
    • Create a folder named md-sources on the same level where README.md is located. Put all the images and example files referenced by README.md into this folder.
    • Use absolute references like https://raw.githubusercontent.com/owncloud/ocis/master/services/<service-name>/md-sources/file to make the content accessible for both README.md and owncloud.dev
      bad <img src="https://github.com/owncloud/ocis/blob/master/services/graph/images/mermaid-graph.svg" width="500" />
      good <img src="https://raw.githubusercontent.com/owncloud/ocis/master/services/graph/images/mermaid-graph.svg" width="500" />
  • If new CLI command are introduced, that command must be described in readme.md.
  • If new global envvar is introduced, the name must start with OCIS_.
  • Add the service to the makefile in the ocis repo root.
  • Make the service startable for binary and individual startup:
    • For single binary add service to ocis/pkg/runtime
    • For individual startup add service to ocis/pkg/commands
  • Add the service to .drone.star to enable CI.
  • Inform doc team in an early stage to review the readme AND the environment variables created.
    • The description must reflect the behaviour AND usually has a positive code quality impact.
  • Create proper description strings for envvars - see other services for examples, especially when it comes to multiple values. This must include:
    • base description, set of available values, description of each value.
  • When suggestable commits are created for text changes and you agree, collect them to a batch and commit them. Do not forget to rebase locally to avoid overwriting the changes made.
  • If new envvars are introduced which serve the same purpose but in multiple services, an additional envvar must be added at the beginning of the list starting with OCIS_ (global envvar).
  • Ensure that a service has a debug port
  • If the new service introduces a new port:
  • Make sure to have a function FullDefaultConfig() in pkg/config/defaults/defaultconfig.go of your service. It is needed to create the documentation.

@kobergj kobergj force-pushed the sse-service branch 2 times, most recently from e1dca56 to 5226153 Compare August 21, 2023 11:31
services/sse/README.md Outdated Show resolved Hide resolved
@kobergj kobergj force-pushed the sse-service branch 3 times, most recently from 6d64c9e to 8f7b855 Compare August 28, 2023 09:27
@kobergj kobergj marked this pull request as ready for review August 28, 2023 09:28
@sonarcloud
Copy link

sonarcloud bot commented Aug 29, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

7.2% 7.2% Coverage
15.4% 15.4% Duplication

@kobergj kobergj merged commit 9eb73f0 into owncloud:master Aug 30, 2023
ownclouders pushed a commit that referenced this pull request Aug 30, 2023
enhancement: add sse service skeleton
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants