Skip to content

[License Exception Request] [Cozystack] [GPL-3.0-only] LINSTOR server (patched build in piraeus-server image) #1542

Description

@tym83

For which CNCF project are you requesting exceptions?

Cozystack

Are you an official maintainer of this project?

Yes

List of components requiring an exception

Component Upstream URL Project Usage URL License(s) Purpose
LINSTOR server (controller and satellite) https://github.com/LINBIT/linstor-server https://github.com/cozystack/cozystack/tree/main/packages/system/linstor/images/piraeus-server GPL-3.0-only Software-defined storage control plane that manages DRBD-replicated volumes; the default replicated block storage backend of Cozystack

Distribution and integration model

  • CNCF-Distributed: The CNCF project will distribute the dependency or the resulting combined artifacts to users.
  • User-Fetched Dependency
  • System Component
  • Not Distributed + Not Needed by End User (Internal Project Tooling)

Please explain

Cozystack builds LINSTOR server from upstream source (with the patches described below) into the ghcr.io/cozystack/cozystack/piraeus-server container image and ships that image in the default storage stack (cozystack.linstor package). It is deployed and managed by the Piraeus Operator (Apache-2.0), following the same delivery pattern as the Piraeus Datastore project.

Modification status

  • Modified Upstream: The CNCF project will patch, alter, or otherwise modify the source code of the dependency and contribute upstream.
  • Modified Downstream: The CNCF project will patch, alter, or otherwise modify the source code of the dependency and maintain a downstream fork or local copy.
  • Unmodified

Please explain

The image build clones the upstream tag and applies a small set of patches kept in packages/system/linstor/images/piraeus-server/patches/, each documented in the README there. Most are backports of commits already merged upstream; the remainder were proposed to LINBIT as pull requests by Cozystack maintainers, and each patch is dropped once an upstream release includes the fix. No other changes are made to LINSTOR source.

Structural separation

  • Separated Component: The dependency's code will either be (a) kept in a distinct directory or module clearly separated from CNCF project code, or (b) retrieved at build/installation time from a third-party repository and never stored in the CNCF project repository.
  • Intermingled Code

Please explain

LINSTOR source is not stored in the Cozystack repository; it is cloned from github.com/LINBIT/linstor-server at build time. Only the patch files (GPL-3.0, as derivative changes to LINSTOR) and the Dockerfile live in the repository, in a dedicated image directory.

Communication mechanism

  • Static Linking
  • Dynamic Linking
  • Separate Process: The dependency and the CNCF project code will run as distinct executables and communicate via Inter-Process Communication (e.g., pipes, sockets, or shared files)
  • Network Interaction: The dependency and the CNCF project code will be logically and physically separated by a network boundary, with the CNCF project's code acting as a client or consumer of the remote service and interacting with the dependency exclusively via standardized network protocols.

Please explain

LINSTOR runs in its own containers. Cozystack components and the Apache-2.0 Piraeus Operator / LINSTOR CSI driver interact with it only through the LINSTOR REST API over HTTP(S). A few Cozystack helper scripts invoke the linstor CLI as a separate process.

Data exchange

  • Tightly Coupled
  • Arms-Length Only: The communication between the dependency and the CNCF project code will be limited to standard serialized data (e.g., JSON, XML, or Protobuf) where data is "flattened" for transport and neither component accesses the other's internal memory structures.

Please explain

JSON over the LINSTOR REST API, and CLI arguments/output for the helper scripts.

Additional information

Complete corresponding source for the shipped image is available: upstream source at the tagged version plus the public patch files in the Cozystack repository. Filed as part of Cozystack's Incubation due diligence (cncf/toc#1916), at the reviewer's suggestion.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions