StoneWork is a high-performance, all-(CNFs)-in-one network solution.

StoneWork, high-performance dataplane, modular control-plane solution

StoneWork is used by PANTHEON.tech to integrate its CNFs on top of a single shared FD.io VPP data-plane instance to achieve the best possible resource utilization. This network appliance, however, is not a step back from distributed chained/meshed microservices to the monolith architecture. Instead, the integration is dynamic, based on container orchestration, CNF discovery, sharing of network namespaces and re-use of data paths for packet punting between CNFs.

Features

  • High-performance VPP-based data-plane
  • Management agent build on top of Ligato VPP-Agent
  • Suitable for both cloud and bare-metal deployments
  • Can be deployed as either multiple interconnected instances (service function chaining), or a set of control/management plane microservices that use a single VPP instance for data plane (this is a trade-off between flexibility and resource utilization)
  • Northbound APIs are modeled with protobuf and accessible over gRPC, REST, K8s CRDor through a key-value DB (etcd, redis, ...)
  • Wide-range of networking features natively implemented in VPP, e.g.:
    • High-performance device drivers (DPDK, RDMA, virtio)
    • Routing, switching
    • Tunneling (VXLAN, GRE, IP-IP)
    • ACL-based filtering and routing
    • NAT44, NAT64
    • Segment routing
    • VPN (wireguard, IPSec)
    • Bridge domains, VRFs (multi-tenancy)
  • Management of features provided by the Linux network stack:
    • Routes, ARPs
    • iptables
    • Namespaces, VRFs (multi-tenancy)
  • Dynamically (at run-time) extensible with additional features provided by CNFs from our offering

Examples

Before using StoneWork we recommend reading in this README and related documentation in the StoneWork distribution folder about how to install and configure StoneWork. If you are new to StoneWork, it may be easier to first explore and run the provided examples, rather than trying to create deployment manifests from scratch.

Examples of deployment manifests and configurations for various use-cases can be found under the examples sub-directory.\ The [Getting Started] getting-started example will guide you through your first StoneWork deployment.

Configuration

Configuration for StoneWork is twofold:

1. VPP Startup Configuration

The VPP Startup Configuration comprises configuration options which are set before VPP is started. They cannot be changed at the run-time, either by a management plane API or the VPP CLI). For StoneWork, the default VPP startup configuration file is packaged in the image under /etc/vpp/vpp.conf. Some of the examples override the default configuration with a customized version of vpp.confmounted into the container using volumes. Typically, the only configuration section that may require customization is the dpdk stanza, where PCI addresses of NICs to be used by VPP should be listed. Run the lshw-class network -businfo command to obtain the available network devices and their respective PCI addresses. For example, if the PCI addresses of interfaces were 0000:00:08.0 and 0000:00:09.0 (e.g. inside and outside network), then the dpdk configuration would be:

dpdk {
    dev 0000:00:08.0 {
        name eth0
    }
    dev 0000:00:09.0 {
        name eth1
    }
}

Interface names can be selected arbitrarily, for example as eth0 and eth1' in the above example.

More information about attaching physical interfaces into VPP can be found here.

2. Protobuf-modeled Network Configuration

StoneWork's network configuration (VPP, Linux, CNFs) is modeled using Google Protocol Buffers. A summary of all configuration items and their attributes with descriptions can be found here (in markdown; also available as a single PDF document). Provided is also a JSON Schema that can be used to validate input configuration before it is submitted. Some text editors, for example VS Code, can even load the Schema and provide autocomplete suggestions based on it, thus making the process of preparing input configuration a lot easier. The original protobuf files from which the documentation and schema were generated can be found in the /api folder inside the StoneWork distribution. There is also the /api/models.spec.yaml file, which contains one yaml document with metadata for every configuration model. These metadata are used to associate configuration model with corresponding protobuf definitions.

Network configuration is submitted into the control-plane agent either via CLI (yaml formatted), written into a key-value datastore (e.g. etcd; JSON-formatted) or applied programmatically over gRPC (serialized by protobuf) or REST (JSON) APIs. The initial configuration that should be applied immediately after StoneWork starts up can be mounted into the container under /etc/stonework/config/day0-config.yaml (YAML formatted).

Each of the attached examples has a sub-directory named config, where you can find configuration stanzas to learn from. Each example contains the startup configuration day0-config.yaml. Additional attached *.yaml files are used to show how run-time configuration can be modified over CLI. Please refer to each example's EXAMPLE.md file for more information.

Installation

The following steps will guide you through the StoneWork installation process. The distribution package contains the StoneWork docker image (stonework.image), documentation (*.md) and some examples to get you started.

Requirements

  1. StoneWork requires a Ubuntu VM or a bare-metal server running Ubuntu, preferably version 18.04 (Bionic Beaver).

  2. Next, Docker and Docker-compose must be installed.

    Install with:

    $ apt-get install docker.io docker-compose
    
  3. [For DPDK only]
    Depending on the type of NICs that VPP of StoneWork should bind to, you may have to install/enable the corresponding drivers. For example, in a VM environment, the Virtual Function I/O (VFIO) is preferred over the UIO framework for better performance and more security. In order to load VFIO driver, run:

    $ modprobe vfio-pci
    $ echo "vfio-pci" > /etc/modules-load.d/vfio.conf
    

    Check with:

    $ lsmod | grep vfio_pci
    vfio_pci               45056  0
    

    More information about Linux network I/O drivers that are compatible with DPDK (used by VPP), can be found here.

  4. [For DPDK only]
    Make sure that the network interfaces are not already used by the Linux kernel, or else VPP/DPDK will not be able to grab them. Run ip link set dev {device} down for each device to un-configure it from Linux. Preferably disable the interfaces using configuration files to make the changes persistent (e.g. inside /etc/network/interfaces).

  5. [For DPDK only]
    In order to optimize memory access, VPP/DPDK uses Huge Pages, which have to be allocated before deploying StoneWork. For example, to allocate 512 Huge Pages (1024MiB memory for default 2M hugepage size), run:

    $ echo "vm.nr_hugepages=512" >> /etc/sysctl.conf
    $ sysctl -p
    

    Detailed recommendations on allocations of Huge Pages for VPP can be found here.

  6. Finally, the StoneWork image has to be loaded so that Docker/DockerCompose/K8s is able to provision a container instance. Run:

    $ docker load <./stonework.image
    

Deployment

StoneWork is deployed using Docker Compose version 3.3 or newer. StoneWork itself is only a single container (with VPP and StoneWork agent inside), but every CNF that is deployed alongside it runs in a separate container, hence the use of Compose. The following is a template of docker-compose.yaml file, used to describe deployment in the language of Docker Compose. The template contains detailed comments that explain the meaning of attributes contained in the template and how they relate to StoneWork. Angle brackets are used to mark placeholders that have to be replaced with appropriate actual values in the target deployment.

version: '3.3'

# Volume shared between StoneWork and every CNF deployed alongside it.
# CNFs and StoneWork use it to discover each other.
volumes:
  runtime_data: {}

services:
  stonework:
    container_name: stonework
    image: "ghcr.io/pantheontech/stonework"
    # StoneWork runs in the privileged mode to be able to perform administrative network operations.
    privileged: true
    # StoneWork runs in the PID namespace of the host so that it can read PIDs of CNF processes.
    pid: "host"
    environment:
      # Set log level (i.e. only log entries with that severity or anything above it will be printed).
      # Supported values: Trace, Debug, Info, Warning, Error, Fatal and Panic.
      INITIAL_LOGLVL: "debug"
      # MICROSERVICE_LABEL is used to mark container with StoneWork.
      MICROSERVICE_LABEL: "stonework"
      # By default etcd datastore is used as the source of the configuration.
      # Env. variable ETCD_CONFIG with empty value is used to disable etcd
      # and use CLI (agentctl) or gRPC as the primary source of the configuration.
      ETCD_CONFIG: ""
    ports:
      # Expose HTTP and gRPC APIs.
      - "9111:9111"
      - "9191:9191"
    volumes:
      # /run/stonework must be shared between StoneWork and every CNF.
      - runtime_data:/run/stonework
      # /sys/bus/pci and /dev are mounted for StoneWork to be able to access PCI devices over DPDK.
      - /sys/bus/pci:/sys/bus/pci
      - /dev:/dev
      # Docker socket is mounted so that StoneWork can obtain container metadata for every CNF.
      - /run/docker.sock:/run/docker.sock
      # To customize vpp startup configuration, create your own version of vpp.conf (here called vpp-startup.conf),
      # put it next to this docker-compose.yaml and mount it under /etc/vpp/vpp.conf.
      # Otherwise remove this mount.
      - ./vpp-startup.conf:/etc/vpp/vpp.conf
      # To start StoneWork with some initial configuration, create day0-config.yaml under the config
      # sub-directory, placed next to this docker-compose.yaml and mount it under /etc/stonework/config
      # Otherwise remove this mount.
      - ./config:/etc/stonework/config

  # Multiple CNFs may share the same Linux network namespace. This is in some case needed
  # if CNFs are to work together (e.g. BGP peering established over OSPF-learned routes).
  # The common network namespace is represented by a separate container (similar to the
  # sandbox container of a K8s Pod).
  router-ns:
    container_name: router-ns
    image: "busybox:1.29.3"
    command: tail -f /dev/null

  # CNF running alongside StoneWork (i.e. using the VPP of StoneWork as data-plane).
  # Name the container such that it is clear what services CNF provides (e.g. "cnf-dhcp").
  <cnf-name>:
    container_name: <cnf-name>
    image: "<cnf-image-name>"
    depends_on:
      - stonework
    # CNFs typically require privileges to perform administrative network operations.
    privileged: true
    # <cnf-name>-license.env is file that is obtained when the license of CNF is purchased.
    # Put <cnf-name>-license.env into the same directory as docker-compose.yaml.
    # It contains single line:
    # LICENSE=<signed license content>
    env_file:
      - <cnf-name>-license.env
    volumes:
      # /run/stonework must be shared between StoneWork and every CNF.
      - runtime_data:/run/stonework
    environment:
      INITIAL_LOGLVL: "debug"
      # MICROSERVICE_LABEL is effectively used to mark the container with CNF name.
      # StoneWork is then able to identify the CNF container among all containers.
      MICROSERVICE_LABEL: "<cnf-name>"
      ETCD_CONFIG: ""
      # If CNF runs alongside StoneWork (and not standalone), env. variable "CNF_MODE"
      # must be defined with value "STONEWORK_MODULE".
      CNF_MODE: "STONEWORK_MODULE"
    # Multiple CNFs may share the same Linux network namespace.
    # Use network_mode and point a group of CNFs to the same container (acting just like sandbox
    # container of a K8s Pod).
    network_mode: "service:router-ns"

  # here list other CNFs...

Development

Build instruction for StoneWork can be found here.
Architecture of StoneWork is described in detail here.
A guide on how to make CNF compatible with StoneWork can be found here.
Documentation about StoneWork GNS3 VM development is here.

Owner
PANTHEON.tech
Research & software development company based in Slovakia.
PANTHEON.tech
Comments
  • Fix broken links in documentation

    Fix broken links in documentation

    Update regarding STONEWORK-CONFIG.pdf:

    • Fixed broken internal links
    • Fixed overlap and overflow problems in some tables (.md file needs to be properly formatted)

    pdflatex (default pdf engine) doesn't seem to work with anchor links.

    Generated using:

    pandoc STONEWORK-CONFIG.md -o STONEWORK-CONFIG.pdf --pdf-engine=weasyprint -c style.css
    

    style.css:

    body {
            font-size: 12px;
    }
    
    a {
            text-decoration: none;
    }
    
    table, th, td {
            border: 1px solid;
            border-collapse: collapse;
    }
    
    th, td {
            padding: 3px;
    }
    

    Signed-off-by: Samuel Dudík [email protected]

  • Bump github.com/onsi/gomega from 1.22.1 to 1.24.0

    Bump github.com/onsi/gomega from 1.22.1 to 1.24.0

    Bumps github.com/onsi/gomega from 1.22.1 to 1.24.0.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.0

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • ed1156b v1.24.0
    • 756eaa0 Update BeComparableTo documentation
    • 6015576 finish documenting gcustom
    • 0cfc53b godoc for gcustom
    • 6a2e51e First pass at gcustom: a convenience package for making custom matchers. Doc...
    • bf817a4 v1.23.0
    • 7b8b801 fix broken call to Eventually
    • ba35cc6 Allow ctx to be passed in as a leading parameter for Eventually and Consistently
    • 818b78c AsyncAssertions emit the format.Object representation of the error when it i...
    • d63d67e Rename AsyncSignalError to PollingSignalError
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • CNF-985 Various minor corrections

    CNF-985 Various minor corrections

    • All tests are passing without workarounds.
    • I merged indexes reserved by organizations and specific CNF indexes into a single file.
    • The gen-docs.sh script is already present, so I just fixed the paths in documentation.
  • docu: Cleanup documentation

    docu: Cleanup documentation

    • move common instructions on running testing examples into a separate file
    • fix links in documentation
    • other minor changes

    Signed-off-by: mhalaj1 [email protected]

  • Bump go.fd.io/govpp from 0.6.0 to 0.7.0

    Bump go.fd.io/govpp from 0.6.0 to 0.7.0

    Bumps go.fd.io/govpp from 0.6.0 to 0.7.0.

    Changelog

    Sourced from go.fd.io/govpp's changelog.

    0.7.0

    29 November 2022

    Changes

    • Switch to using a generic pool for channels in Connection (#39)
    • feat: Disable default reply timeout (#45)
    • gomemif: migrate from vpp repository (#65)
    • Run golangci-lint in CI (#69)
    • Add GoVPP logo to README (#79)
    • Introduce VPP integration tests (#75)
    • docs: Add troubleshooting guide (#70)
    • Add support of watching events to Connection (#80)

    Fixes

    • Fix format of package comment (#44)
    • Fixes for staticcheck (#27)
    • Prevent data race on msgMapByPath map (#50)
    • Fix panic on the pool put/get operations (#54)
    • Fix endless loop in Reset (#57)
    • Fix generate RPC client for stream with reply (#72)
    • Fix endless Stream's reply waiting on vpp disconnect (#77)
    • Fix WaitReady if directory does not exist (#84)

    Changes

    • Added GitHub CI
    • Remove deprecated vppapiclient
    • Remove unused Travis CI
    • Remove gerrit remains
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.23.0

    Bump github.com/onsi/gomega from 1.22.1 to 1.23.0

    Bumps github.com/onsi/gomega from 1.22.1 to 1.23.0.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • bf817a4 v1.23.0
    • 7b8b801 fix broken call to Eventually
    • ba35cc6 Allow ctx to be passed in as a leading parameter for Eventually and Consistently
    • 818b78c AsyncAssertions emit the format.Object representation of the error when it i...
    • d63d67e Rename AsyncSignalError to PollingSignalError
    • abd25f0 fix go vet
    • 618a133 Introduce TryAgainAfter
    • 67ab22c Simplify StopTrying handling
    • 75c8c70 Fix go vet and drop 1.17 from test matrix
    • 237e97d Matchers can now return StopTrying() errors; StopTrying() can wrap an error t...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/onsi/gomega from 1.19.0 to 1.20.1

    Bump github.com/onsi/gomega from 1.19.0 to 1.20.1

    Bumps github.com/onsi/gomega from 1.19.0 to 1.20.1.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.20.1

    1.20.1

    Fixes

    • fix false positive gleaks when using ginkgo -p (#577) [cb46517]
    • Fix typos in gomega_dsl.go (#569) [5f71ed2]
    • don't panic on Eventually(nil), fixing #555 (#567) [9d1186f]
    • vet optional description args in assertions, fixing #560 (#566) [8e37808]

    Maintenance

    • test: add new Go 1.19 to test matrix (#571) [40d7efe]
    • Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#564) [5f26371]

    v1.20.0

    Features

    • New gleak experimental goroutine leak detection package! (#538) [85ba7bc]
    • New BeComparableTo matcher(#546) that uses gocmp to make comparisons [e77ea75]
    • New HaveExistingField matcher (#553) [fd130e1]
    • Document how to wrap Gomega (#539) [56714a4]

    Fixes

    • Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e]

    Maintenance

    • Bump various dependencies:
      • Upgrade to yaml.v3 (#556) [f5a83b1]
      • Bump github/codeql-action from 1 to 2 (#549) [52f5adf]
      • Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d]
      • Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2]
      • Use latest ginkgo (#535) [1c29028]
      • Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5]
      • Bump actions/setup-go from 2 to 3 (#540) [755485e]
      • Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc]
      • Bump actions/checkout from 2 to 3 (#526) [ac49202]

    1.19.0

    Features

    • New HaveEach matcher to ensure that each and every element in an array, slice, or map satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582]
    • Users can now wrap the Gomega interface to implement custom behavior on each assertion. (#521) [1f2e714]
    • ContainElement now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f]

    Fixes

    • update RELEASING instructions to match ginkgo [0917cde]
    • Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0]
    • Fix CVE-2021-38561 (#534) [f1b4456]
    • Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497]
    • Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5]
    • Fix for Go 1.18 (#532) [56d2a29]
    • Document precendence of timeouts (#533) [b607941]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.20.1

    Fixes

    • fix false positive gleaks when using ginkgo -p (#577) [cb46517]
    • Fix typos in gomega_dsl.go (#569) [5f71ed2]
    • don't panic on Eventually(nil), fixing #555 (#567) [9d1186f]
    • vet optional description args in assertions, fixing #560 (#566) [8e37808]

    Maintenance

    • test: add new Go 1.19 to test matrix (#571) [40d7efe]
    • Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#564) [5f26371]

    1.20.0

    Features

    • New gleak experimental goroutine leak detection package! (#538) [85ba7bc]
    • New BeComparableTo matcher(#546) that uses gocmp to make comparisons [e77ea75]
    • New HaveExistingField matcher (#553) [fd130e1]
    • Document how to wrap Gomega (#539) [56714a4]

    Fixes

    • Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e]

    Maintenance

    • Bump various dependencies:
      • Upgrade to yaml.v3 (#556) [f5a83b1]
      • Bump github/codeql-action from 1 to 2 (#549) [52f5adf]
      • Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d]
      • Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2]
      • Use latest ginkgo (#535) [1c29028]
      • Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5]
      • Bump actions/setup-go from 2 to 3 (#540) [755485e]
      • Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc]
      • Bump actions/checkout from 2 to 3 (#526) [ac49202]
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump google.golang.org/grpc from 1.47.0 to 1.49.0

    Bump google.golang.org/grpc from 1.47.0 to 1.49.0

    Bumps google.golang.org/grpc from 1.47.0 to 1.49.0.

    Release notes

    Sourced from google.golang.org/grpc's releases.

    Release 1.49.0

    New Features

    • gcp/observability: add support for Environment Variable GRPC_CONFIG_OBSERVABILITY_JSON (#5525)
    • gcp/observability: add support for custom tags (#5565)

    Behavior Changes

    • server: reduce log level from Warning to Info for early connection establishment errors (#5524)

    Bug Fixes

    • client: fix race in flow control that could lead to unexpected EOF errors (#5494)
    • client: fix a race that could cause RPCs to time out instead of failing more quickly with UNAVAILABLE (#5503)
    • client & server: fix a panic caused by passing a nil stats handler to grpc.WithStatsHandler or grpc.StatsHandler (#5543)
    • transport/server: fix a race that could cause a stray header to be sent (#5513)
    • balancer: give precedence to IDLE over TRANSIENT_FAILURE when aggregating connectivity state (#5473)
    • xds/xdsclient: request correct resource name when user specifies a new style resource name with empty authority (#5488)
    • xds/xdsclient: NACK endpoint resources with zero weight (#5560)
    • xds/xdsclient: fix bug that would reset resource version information after ADS stream restart (#5422)
    • xds/xdsclient: fix goroutine leaks when load reporting is enabled (#5505)
    • xds/ringhash: fix config update processing to recreate ring and picker when min/max ring size changes (#5557)
    • xds/ringhash: avoid recreating subChannels when update doesn't change address weight information (#5431)
    • xds/priority: fix bug which could cause priority LB to block all traffic after a config update (#5549)
    • xds: fix bug when environment variable GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION is set to true (#5537)

    Release 1.48.0

    Bug Fixes

    • xds/priority: fix bug that could prevent higher priorities from receiving config updates (#5417)
    • RLS load balancer: don't propagate the status code returned on control plane RPCs to data plane RPCs (#5400)

    New Features

    • stats: add support for multiple stats handlers in a single client or server (#5347)
    • gcp/observability: add experimental OpenCensus tracing/metrics support (#5372)
    • xds: enable aggregate and logical DNS clusters by default (#5380)
    • credentials/google (for xds): support xdstp C2P cluster names (#5399)
    Commits
    • 1c29e07 Change version to 1.49.0 (#5583)
    • 8e5a84e xds/resolver: generate channel ID randomly (#5603)
    • 92cee34 gcp/observability: Add logging filters for logging, tracing, and metrics API ...
    • c7fe135 O11Y: Added support for custom tags (#5565)
    • 7981af4 test/kokoro: add missing image tagging to the xDS interop url map buildscript...
    • 6f34b7a xdsclient: NACK endpoint resource if load_balancing_weight is specified and i...
    • f9409d3 ringhash: handle config updates properly (#5557)
    • 946dde0 xdsclient: NACK endpoint resources with zero weight (#5560)
    • b89f49b xdsclient: deflake Test/LDSWatch_PartialValid (#5552)
    • 9bc72de grpc: remove mentions of WithBalancerName from comments (#5555)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump google.golang.org/grpc from 1.47.0 to 1.48.0

    Bump google.golang.org/grpc from 1.47.0 to 1.48.0

    Bumps google.golang.org/grpc from 1.47.0 to 1.48.0.

    Release notes

    Sourced from google.golang.org/grpc's releases.

    Release 1.48.0

    Bug Fixes

    • xds/priority: fix bug that could prevent higher priorities from receiving config updates (#5417)
    • RLS load balancer: don't propagate the status code returned on control plane RPCs to data plane RPCs (#5400)

    New Features

    • stats: add support for multiple stats handlers in a single client or server (#5347)
    • gcp/observability: add experimental OpenCensus tracing/metrics support (#5372)
    • xds: enable aggregate and logical DNS clusters by default (#5380)
    • credentials/google (for xds): support xdstp C2P cluster names (#5399)
    Commits
    • 6417495 Change version to 1.48.0 (#5482)
    • 5770b1d xds: drop localities with zero weight at the xdsClient layer (#5476)
    • 423cd8e interop: update proto to make vet happy (#5475)
    • c9b16c8 transport: remove unused bufWriter.onFlush() (#5464)
    • 755bf5a fix typo in the binary log (#5467)
    • 15739b5 health: split imports into healthpb and healthgrpc (#5466)
    • c075d20 interop client: provide new flag, --soak_min_time_ms_between_rpcs (#5421)
    • 4b75005 clusterresolver: merge P(p)arseConfig functions (#5462)
    • d883f3d test/xds: fail only when state changes to something other than READY and IDLE...
    • c6ee1c7 xdsclient: only include nodeID in error strings, not the whole nodeProto (#5461)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/onsi/gomega from 1.10.3 to 1.20.0

    Bump github.com/onsi/gomega from 1.10.3 to 1.20.0

    Bumps github.com/onsi/gomega from 1.10.3 to 1.20.0.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.20.0

    Features

    • New gleak experimental goroutine leak detection package! (#538) [85ba7bc]
    • New BeComparableTo matcher(#546) that uses gocmp to make comparisons [e77ea75]
    • New HaveExistingField matcher (#553) [fd130e1]
    • Document how to wrap Gomega (#539) [56714a4]

    Fixes

    • Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e]

    Maintenance

    • Bump various dependencies:
      • Upgrade to yaml.v3 (#556) [f5a83b1]
      • Bump github/codeql-action from 1 to 2 (#549) [52f5adf]
      • Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d]
      • Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2]
      • Use latest ginkgo (#535) [1c29028]
      • Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5]
      • Bump actions/setup-go from 2 to 3 (#540) [755485e]
      • Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc]
      • Bump actions/checkout from 2 to 3 (#526) [ac49202]

    1.19.0

    Features

    • New HaveEach matcher to ensure that each and every element in an array, slice, or map satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582]
    • Users can now wrap the Gomega interface to implement custom behavior on each assertion. (#521) [1f2e714]
    • ContainElement now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f]

    Fixes

    • update RELEASING instructions to match ginkgo [0917cde]
    • Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0]
    • Fix CVE-2021-38561 (#534) [f1b4456]
    • Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497]
    • Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5]
    • Fix for Go 1.18 (#532) [56d2a29]
    • Document precendence of timeouts (#533) [b607941]

    v1.19.0

    Features

    • New HaveEach matcher to ensure that each and every element in an array, slice, or map satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582]
    • Users can now wrap the Gomega interface to implement custom behavior on each assertion. (#521) [1f2e714]
    • ContainElement now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f]

    Fixes

    • update RELEASING instructions to match ginkgo [0917cde]
    • Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0]
    • Fix CVE-2021-38561 (#534) [f1b4456]
    • Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497]
    • Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5]

    ... (truncated)

    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.20.0

    Features

    • New gleak experimental goroutine leak detection package! (#538) [85ba7bc]
    • New BeComparableTo matcher(#546) that uses gocmp to make comparisons [e77ea75]
    • New HaveExistingField matcher (#553) [fd130e1]
    • Document how to wrap Gomega (#539) [56714a4]

    Fixes

    • Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e]

    Maintenance

    • Bump various dependencies:
      • Upgrade to yaml.v3 (#556) [f5a83b1]
      • Bump github/codeql-action from 1 to 2 (#549) [52f5adf]
      • Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d]
      • Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2]
      • Use latest ginkgo (#535) [1c29028]
      • Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5]
      • Bump actions/setup-go from 2 to 3 (#540) [755485e]
      • Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc]
      • Bump actions/checkout from 2 to 3 (#526) [ac49202]

    1.19.0

    Features

    • New HaveEach matcher to ensure that each and every element in an array, slice, or map satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582]
    • Users can now wrap the Gomega interface to implement custom behavior on each assertion. (#521) [1f2e714]
    • ContainElement now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f]

    Fixes

    • update RELEASING instructions to match ginkgo [0917cde]
    • Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0]
    • Fix CVE-2021-38561 (#534) [f1b4456]
    • Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497]
    • Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5]
    • Fix for Go 1.18 (#532) [56d2a29]
    • Document precendence of timeouts (#533) [b607941]

    1.18.1

    Fixes

    • Add pointer support to HaveField matcher (#495) [79e41a3]

    1.18.0

    Features

    • Docs now live on the master branch in the docs folder which will make for easier PRs. The docs also use Ginkgo 2.0's new docs html/css/js. [2570272]
    • New HaveValue matcher can handle actuals that are either values (in which case they are passed on unscathed) or pointers (in which case they are indirected). Docs here. (#485) [bdc087c]
    • Gmeasure has been declared GA [360db9d]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.24.1

    Bump github.com/onsi/gomega from 1.22.1 to 1.24.1

    Bumps github.com/onsi/gomega from 1.22.1 to 1.24.1.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.1

    No release notes provided.

    v1.24.0

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.1

    Fixes

    • maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e]
    • fix small typo (#601) [ea0ebe6]

    Maintenance

    • Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372]
    • Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb]
    • fix label-filter in test.yml [d795db6]
    • stop running flakey tests and rely on external network dependencies in CI [7133290]

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance

    • Update BeComparableTo documentation [756eaa0]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • 3eef0d7 v1.24.1
    • 4c7df5e maintain backward compatibility for Eventually and Consisntetly's signatures
    • 1ba8372 Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603)
    • f9426cb Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602)
    • ea0ebe6 fix small typo (#601)
    • d795db6 fix label-filter in test.yml
    • 7133290 stop running flakey tests and rely on external network dependencies in CI
    • ed1156b v1.24.0
    • 756eaa0 Update BeComparableTo documentation
    • 6015576 finish documenting gcustom
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/onsi/gomega from 1.24.1 to 1.24.2

    Bump github.com/onsi/gomega from 1.24.1 to 1.24.2

    Bumps github.com/onsi/gomega from 1.24.1 to 1.24.2.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.2

    1.24.2

    Fixes

    • Correctly handle assertion failure panics for eventually/consistnetly "g Gomega"s in a goroutine [78f1660]
    • docs:Fix typo "you an" -> "you can" (#607) [3187c1f]
    • fixes issue #600 (#606) [808d192]

    Maintenance

    • Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf]
    • Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8]
    • Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.2

    Fixes

    • Correctly handle assertion failure panics for eventually/consistnetly "g Gomega"s in a goroutine [78f1660]
    • docs:Fix typo "you an" -> "you can" (#607) [3187c1f]
    • fixes issue #600 (#606) [808d192]

    Maintenance

    • Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf]
    • Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8]
    • Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9]
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump google.golang.org/grpc from 1.47.0 to 1.50.0

    Bump google.golang.org/grpc from 1.47.0 to 1.50.0

    Bumps google.golang.org/grpc from 1.47.0 to 1.50.0.

    Release notes

    Sourced from google.golang.org/grpc's releases.

    Release 1.50.0

    Behavior Changes

    • client: use proper "@" semantics for connecting to abstract unix sockets. (#5678)
      • This is technically a bug fix; the result is that the address was including a trailing NULL byte, which it should not have. This may break users creating the socket in Go by prefixing a NULL instead of an "@", though, so calling it out as a behavior change.

    New Features

    • metadata: add experimental ValueFromIncomingContext to more efficiently retrieve a single value (#5596)
    • stats: provide peer information in HandleConn context (#5589)
    • xds: add support for Outlier Detection, enabled by default (#5435, #5673)

    Bug Fixes

    • client: fix deadlock in transport caused by GOAWAY racing with stream creation (#5652)
      • This should only occur with an HTTP/2 server that does not follow best practices of an advisory GOAWAY (not a grpc-go server).
    • xds/xdsclient: fix a bug which was causing routes with cluster_specifier_plugin set to be NACKed when GRPC_EXPERIMENTAL_XDS_RLS_LB was off (#5670)
    • xds/xdsclient: NACK cluster resource if config_source_specifier in lrs_server is not self (#5613)
    • xds/ringhash: fix a bug which sometimes prevents the LB policy from retrying connection attempts (#5601)
    • xds/ringhash: do nothing when asked to exit IDLE instead of falling back on the default channel behavior of connecting to all addresses (#5614)
    • xds/rls: fix a bug which was causing the channel to be stuck in IDLE (#5656)
    • alts: fix a bug which was setting WaitForReady on handshaker service RPCs, thereby delaying fallback when required (#5620)
    • gcp/observability: fix End() to cleanup global state correctly (#5623)

    Release 1.49.0

    New Features

    • gcp/observability: add support for Environment Variable GRPC_CONFIG_OBSERVABILITY_JSON (#5525)
    • gcp/observability: add support for custom tags (#5565)

    Behavior Changes

    • server: reduce log level from Warning to Info for early connection establishment errors (#5524)

    Bug Fixes

    • client: fix race in flow control that could lead to unexpected EOF errors (#5494)
    • client: fix a race that could cause RPCs to time out instead of failing more quickly with UNAVAILABLE (#5503)
    • client & server: fix a panic caused by passing a nil stats handler to grpc.WithStatsHandler or grpc.StatsHandler (#5543)
    • transport/server: fix a race that could cause a stray header to be sent (#5513)
    • balancer: give precedence to IDLE over TRANSIENT_FAILURE when aggregating connectivity state (#5473)
    • xds/xdsclient: request correct resource name when user specifies a new style resource name with empty authority (#5488)
    • xds/xdsclient: NACK endpoint resources with zero weight (#5560)
    • xds/xdsclient: fix bug that would reset resource version information after ADS stream restart (#5422)
    • xds/xdsclient: fix goroutine leaks when load reporting is enabled (#5505)
    • xds/ringhash: fix config update processing to recreate ring and picker when min/max ring size changes (#5557)

    ... (truncated)

    Commits
    • c1d7d7a Change version to 1.50.0 (#5685)
    • 1451c62 internal/transport: optimize grpc-message encoding/decoding (#5654)
    • be4b63b test: minor test cleanup (#5679)
    • d83070e Changed Outlier Detection Env Var to default true (#5673)
    • 54521b2 client: remove trailing null from unix abstract socket address (#5678)
    • 36e4810 orca: cleanup old code, and get grpc package to use new code (#5627)
    • e8866a8 build: harden GitHub Workflow permissions (#5660)
    • 8458251 xdsclient: ignore routes with cluster_specifier_plugin when GRPC_EXPERIMENTAL...
    • a238ceb xDS: Outlier Detection Env Var not hardcoded to false (#5664)
    • b1d7f56 transport: Fix deadlock in transport caused by GOAWAY race with new stream cr...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Omit publishing latest/release tags on pre-releases

    Omit publishing latest/release tags on pre-releases

    The release process currently tags and then publishes images for tags as following:

    => new tag v21.06.0 is pushed and release process starts:

    1. image is built with tag :21.06.0 for this specific tag
    2. then rolling release image is tagged :21.06
    3. and finally the :latest tag is updated to this release

    This process is okay for the actual releases, but it should be fixed to skip step 2 and 3 for pre-releases: e.g. v21.06.1-rc1, or simply any version with suffix -*. This is because we do not want to update rolling release image or latest image tags for these pre-releases.

  • Broken internal links in STONEWORK-CONFIG.pdf

    Broken internal links in STONEWORK-CONFIG.pdf

    The internal links in the PDF generated from docs/config/STONEWORK-CONFIG.md are broken. The .md file uses <a name=""/> HTML tags for internal links which are supported by Github markdown viewer, but not by pandocs (program used to generate PDFs) default PDF engine pdflatex. Implicit internal links (https://pandoc.org/MANUAL.html#internal-links) can't be used because resulting headers would be too long + add unnecessary noise and header attributes (https://pandoc.org/MANUAL.html#extension-header_attributes) don't seem to be supported by Github markdown.

    Currently, the solution is to use a PDF engine that can interpret HTML tags e.g. weasyprint:

    pandoc STONEWORK-CONFIG.md -o STONEWORK-CONFIG.pdf --pdf-engine=weasyprint -c style.css
    

    style.css for proper table rendering:

    body {
            font-size: 12px;
    }
    
    a {
            text-decoration: none;
    }
    
    table, th, td {
            border: 1px solid;
            border-collapse: collapse;
    }
    
    th, td {
            padding: 3px;
    }
    

    The problem is that weasyprint and the pandoc version supporting it aren't included in the Ubuntu 18.04 repositories. 18.04 is currently used for the Docker image responsible for STONEWORK-CONFIG.pdf generation. 20.04 does include all required packages by default. On 18.04 direct download and installation of pandoc and weasyprint binaries is required.

    Further information and reference: https://github.com/PANTHEONtech/StoneWork/pull/12

network-node-manager is a kubernetes controller that controls the network configuration of a node to resolve network issues of kubernetes.
network-node-manager is a kubernetes controller that controls the network configuration of a node to resolve network issues of kubernetes.

Network Node Manager network-node-manager is a kubernetes controller that controls the network configuration of a node to resolve network issues of ku

Dec 18, 2022
K8s-network-config-operator - Kubernetes network config operator to push network config to switches

Kubernetes Network operator Will add more to the readme later :D Operations The

May 16, 2022
Conjur Kubernetes All-in-One Dockerfile

conjur-authn-k8s-aio Conjur Kubernetes All-in-One Dockerfile Supported Authenticators Usage Build Secretless Broker Build Conjur Authn-K8s Client Buil

Sep 14, 2022
A golang tool to list out all EKS clusters with active nodegroups in all regions in json format

eks-tool A quick and dirty tool to list out all EKS clusters with active nodegro

Dec 18, 2021
The server-side reproduction, similar the one of https://popcat.click, improve the performance and speed.

PopCat Echo The server-side reproduction, similar the one of https://popcat.click, improve the performance and speed. Docker Image The docker image is

Dec 15, 2022
A Golang based high performance, scalable and distributed workflow framework
A Golang based high performance, scalable and distributed workflow framework

Go-Flow A Golang based high performance, scalable and distributed workflow framework It allows to programmatically author distributed workflow as Dire

Jan 6, 2023
topolvm operator provide kubernetes local storage which is light weight and high performance

Topolvm-Operator Topolvm-Operator is an open source cloud-native local storage orchestrator for Kubernetes, which bases on topolvm. Supported environm

Nov 24, 2022
A batch scheduler of kubernetes for high performance workload, e.g. AI/ML, BigData, HPC
A batch scheduler of kubernetes for high performance workload, e.g. AI/ML, BigData, HPC

kube-batch kube-batch is a batch scheduler for Kubernetes, providing mechanisms for applications which would like to run batch jobs leveraging Kuberne

Jan 6, 2023
Carina: an high performance and ops-free local storage for kubernetes
Carina: an high performance and ops-free local storage for kubernetes

Carina English | 中文 Background Storage systems are complex! There are more and more kubernetes native storage systems nowadays and stateful applicatio

Dec 30, 2022
A high-performance Directed-Acyclic-Graph JIT in Go
A high-performance Directed-Acyclic-Graph JIT in Go

GAG - A Directed-Acyclic-Graph JIT in Go GAG is a library I created while developing https://isobot.io to experiment with different ways of implementi

Mar 16, 2022
A golang CTF competition platform with high-performance, security and low hardware requirements.
A golang CTF competition platform with high-performance, security and low hardware requirements.

CTFgo - CTF Platform written in Golang A golang CTF competition platform with high-performance, security and low hardware requirements. Live Demo • Di

Oct 20, 2022
A high performance online bookstore system.

HPOB 高性能网上书店 A high performance online bookstore system. Introduction 介绍 一个基于Gin、gorm、viper、zap等库的web服务器,实现了网上书店相关接口。 Summary 概要 使用go语言编写的,基于gin、gorm、

Apr 27, 2022
High-performance GitHub webhook events toolset for Go :rocket:
High-performance GitHub webhook events toolset for Go :rocket:

githubevents GitHub webhook events toolset for Go githubevents is a webhook events toolset for the Go programming language inspired by octokit/webhook

Dec 24, 2022
Go Hosting Solution for AWS, Google Could and Digital Ocean
Go Hosting Solution for AWS, Google Could and Digital Ocean

Furnace Intro Brief Explanation Here is a very short description of what Furnace does in a handy IKEA manual format. In More Depth AWS Cloud Formation

Jan 3, 2023
Prevent Kubernetes misconfigurations from ever making it (again 😤) to production! The CLI integration provides policy enforcement solution to run automatic checks for rule violations. Docs: https://hub.datree.io
Prevent Kubernetes misconfigurations from ever making it  (again 😤) to production! The CLI integration provides policy enforcement solution to run automatic checks for rule violations.  Docs: https://hub.datree.io

What is Datree? Datree helps to prevent Kubernetes misconfigurations from ever making it to production. The CLI integration can be used locally or in

Jan 1, 2023
ControllerMesh is a solution that helps developers manage their controllers/operators better.
ControllerMesh is a solution that helps developers manage their controllers/operators better.

ControllerMesh ControllerMesh is a solution that helps developers manage their controllers/operators better. Key Features Canary update: the controlle

Jan 6, 2023
Dependency management solution for Hashicorp Terraform modules

TERRADEP This is the module dependency solution for implementing terraform's modules dependency. Using this, users can now manage dependencies both fr

Dec 21, 2021
WaffleSyrup - Simple backup solution written by Go.

WaffleSyrup Simple backup solution written by Go. Usage WaffleSyrup runs in the current working directory. It will create ./tmp directory to save tarb

Apr 22, 2022
💻 A one-line installer for GitHub projects!
💻 A one-line installer for GitHub projects!

instl Instl is an installer that can install most GitHub projects on your system with a single command. Installation | Documentation | Contributing In

Jul 23, 2022