Skip to content

v0.19.0

Compare
Choose a tag to compare
@loicsaintroch loicsaintroch released this 10 Nov 10:20
· 9 commits to main since this release

Changes

Common

  • [Refactor] Update all dependencies across modules, fixing some known bugs in third-party libraries.

Internal

  • [Refactor] Rename orchestrator package to cloudprovider.

Logger

  • [Feature] Detect Qovery as a cloud provider, which automatically add the following log labels:

    qovery_region
    qovery_project_id
    qovery_environment_id
    qovery_application_id
    qovery_deployment_id
    kubernetes_cluster
    kubernetes_namespace
    kubernetes_pod
    
  • [Feature] Detect Render as a cloud provider, which automatically add the following log labels:

    render_instance_id
    render_service_id
    render_service_name
    render_service_type
    

Tracer

  • [Feature] Detect Qovery as a cloud provider, which automatically add the following trace attributes:

    qovery.region
    qovery.project_id
    qovery.environment_id
    qovery.application_id
    qovery.deployment_id
    kubernetes.cluster
    kubernetes.namespace
    kubernetes.pod
    service.name
    
  • [Feature] Detect Render as a cloud provider, which automatically add the following trace attributes:

    render.instance_id
    render.service_id
    render.service_name
    render.service_type
    service.name
    

Integrations

REST router

  • [Feature] Introduce generics on all writer functions and split With attachments between success and error responses for stronger type safety. Example:

    import (
      "go.nunchi.studio/helix/integration/rest"
    )
    
    rest.WriteAccepted[types.MyResponseType](rw, req,
      rest.WithMetadataOnSuccess[types.MyResponseTypeMetadata](metadata),
      rest.WithDataOnSuccess[types.MyResponseTypeData](data),
    )

Temporal

  • [Feature] Introduce package temporalrest, which holds utilities and public objects designed and scoped in the Temporal integration about Temporal and that can be exposed in a REST API. Example:

    import (
      "go.nunchi.studio/helix/integration/rest"
      "go.nunchi.studio/helix/integration/temporal/temporalrest"
    )
    
    type MyResponseTypeMetadata struct {
      Temporal *temporalrest.Metadata `json:"temporal,omitempty"`
    }
    
    func myHandlerFunc(rw http.ResponseWriter, req *http.Request) {
      // ...
    
      metadata := MyResponseTypeMetadata{
        Temporal: temporalrest.GetMetadata(wr),
      }
    
      rest.WriteAccepted[types.MyResponseType](rw, req,
        rest.WithMetadataOnSuccess[types.MyResponseTypeMetadata](metadata),
      )
    }