Skip to content
Merged
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: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
- **Feature:** Add new field `DemoUrl` to `CatalogProductDetail` model
- [v1.10.0](services/stackitmarketplace/CHANGELOG.md#v1100)
- **Feature:** Added `PlanId` to `CatalogProductPricingOption` and `SubscriptionProduct`
- `loadbalancer`: [v0.7.0](services/loadbalancer/CHANGELOG.md#v070)
- **Feature**: Add new attribute `labels` to `LoadBalancer`, `CreateLoadBalancerPayload`, `UpdateLoadBalancerPayload` model classes

## Release (2025-09-11)
- `cdn`: [v1.6.0](services/cdn/CHANGELOG.md#v160)
Expand Down
3 changes: 3 additions & 0 deletions services/loadbalancer/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## v0.7.0
- **Feature**: Add new attribute `labels` to `LoadBalancer`, `CreateLoadBalancerPayload`, `UpdateLoadBalancerPayload` model classes

## v0.6.0
- **Version**: Minimal version is now python 3.9

Expand Down
2 changes: 1 addition & 1 deletion services/loadbalancer/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "stackit-loadbalancer"

[tool.poetry]
name = "stackit-loadbalancer"
version = "v0.6.0"
version = "v0.7.0"
authors = [
"STACKIT Developer Tools <developer-tools@stackit.cloud>",
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ class CreateLoadBalancerPayload(BaseModel):
description="External load balancer IP address where this load balancer is exposed. Not changeable after creation.",
alias="externalAddress",
)
labels: Optional[Dict[str, StrictStr]] = Field(
default=None,
description="Labels represent user-defined metadata as key-value pairs. Label count should not exceed 64 per LB. **Key Formatting Rules:** Length: 1-63 characters. Characters: Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. Keys starting with 'stackit-' are system-reserved; users MUST NOT manage them. **Value Formatting Rules:** Length: 0-63 characters (empty string explicitly allowed). Characters (for non-empty values): Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. ",
)
listeners: Optional[List[Listener]] = Field(
default=None,
description="There is a maximum listener count of 20. Port and protocol limitations: - UDP listeners cannot have the same port. - TCP-derived listeners cannot have the same port. A TCP-derived listener is any listener that listens on a TCP port. As of now those are: TCP, TCP_PROXY, and PROTOCOL_TLS_PASSTHROUGH. The only exception is, if all listeners for the same port are PROTOCOL_TLS_PASSTHROUGH. - PROTOCOL_TLS_PASSTHROUGH listeners cannot have the same port and at least one common domain name. - PROTOCOL_TLS_PASSTHROUGH listeners can have the same domain name and different ports though (e.g. ports 443 and 8443 for domain example.com). - PROTOCOL_TLS_PASSTHROUGH listeners without a domain name serve as a default listener and you can have only one default listener. ",
Expand Down Expand Up @@ -101,6 +105,7 @@ class CreateLoadBalancerPayload(BaseModel):
"disableTargetSecurityGroupAssignment",
"errors",
"externalAddress",
"labels",
"listeners",
"loadBalancerSecurityGroup",
"name",
Expand Down Expand Up @@ -248,6 +253,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
else None
),
"externalAddress": obj.get("externalAddress"),
"labels": obj.get("labels"),
"listeners": (
[Listener.from_dict(_item) for _item in obj["listeners"]]
if obj.get("listeners") is not None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ class LoadBalancer(BaseModel):
description="External load balancer IP address where this load balancer is exposed. Not changeable after creation.",
alias="externalAddress",
)
labels: Optional[Dict[str, StrictStr]] = Field(
default=None,
description="Labels represent user-defined metadata as key-value pairs. Label count should not exceed 64 per LB. **Key Formatting Rules:** Length: 1-63 characters. Characters: Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. Keys starting with 'stackit-' are system-reserved; users MUST NOT manage them. **Value Formatting Rules:** Length: 0-63 characters (empty string explicitly allowed). Characters (for non-empty values): Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. ",
)
listeners: Optional[List[Listener]] = Field(
default=None,
description="There is a maximum listener count of 20. Port and protocol limitations: - UDP listeners cannot have the same port. - TCP-derived listeners cannot have the same port. A TCP-derived listener is any listener that listens on a TCP port. As of now those are: TCP, TCP_PROXY, and PROTOCOL_TLS_PASSTHROUGH. The only exception is, if all listeners for the same port are PROTOCOL_TLS_PASSTHROUGH. - PROTOCOL_TLS_PASSTHROUGH listeners cannot have the same port and at least one common domain name. - PROTOCOL_TLS_PASSTHROUGH listeners can have the same domain name and different ports though (e.g. ports 443 and 8443 for domain example.com). - PROTOCOL_TLS_PASSTHROUGH listeners without a domain name serve as a default listener and you can have only one default listener. ",
Expand Down Expand Up @@ -101,6 +105,7 @@ class LoadBalancer(BaseModel):
"disableTargetSecurityGroupAssignment",
"errors",
"externalAddress",
"labels",
"listeners",
"loadBalancerSecurityGroup",
"name",
Expand Down Expand Up @@ -248,6 +253,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
else None
),
"externalAddress": obj.get("externalAddress"),
"labels": obj.get("labels"),
"listeners": (
[Listener.from_dict(_item) for _item in obj["listeners"]]
if obj.get("listeners") is not None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ class UpdateLoadBalancerPayload(BaseModel):
description="External load balancer IP address where this load balancer is exposed. Not changeable after creation.",
alias="externalAddress",
)
labels: Optional[Dict[str, StrictStr]] = Field(
default=None,
description="Labels represent user-defined metadata as key-value pairs. Label count should not exceed 64 per LB. **Key Formatting Rules:** Length: 1-63 characters. Characters: Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. Keys starting with 'stackit-' are system-reserved; users MUST NOT manage them. **Value Formatting Rules:** Length: 0-63 characters (empty string explicitly allowed). Characters (for non-empty values): Must begin and end with [a-zA-Z0-9]. May contain dashes (-), underscores (_), dots (.), and alphanumerics in between. ",
)
listeners: Optional[List[Listener]] = Field(
default=None,
description="There is a maximum listener count of 20. Port and protocol limitations: - UDP listeners cannot have the same port. - TCP-derived listeners cannot have the same port. A TCP-derived listener is any listener that listens on a TCP port. As of now those are: TCP, TCP_PROXY, and PROTOCOL_TLS_PASSTHROUGH. The only exception is, if all listeners for the same port are PROTOCOL_TLS_PASSTHROUGH. - PROTOCOL_TLS_PASSTHROUGH listeners cannot have the same port and at least one common domain name. - PROTOCOL_TLS_PASSTHROUGH listeners can have the same domain name and different ports though (e.g. ports 443 and 8443 for domain example.com). - PROTOCOL_TLS_PASSTHROUGH listeners without a domain name serve as a default listener and you can have only one default listener. ",
Expand Down Expand Up @@ -101,6 +105,7 @@ class UpdateLoadBalancerPayload(BaseModel):
"disableTargetSecurityGroupAssignment",
"errors",
"externalAddress",
"labels",
"listeners",
"loadBalancerSecurityGroup",
"name",
Expand Down Expand Up @@ -248,6 +253,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
else None
),
"externalAddress": obj.get("externalAddress"),
"labels": obj.get("labels"),
"listeners": (
[Listener.from_dict(_item) for _item in obj["listeners"]]
if obj.get("listeners") is not None
Expand Down