stackit-vpn 0.7.0__tar.gz → 0.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/PKG-INFO +1 -1
  2. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/pyproject.toml +2 -2
  3. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter_rule_match.py +2 -2
  4. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_tunnel_config.py +2 -2
  5. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/network_config.py +18 -2
  6. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/.gitignore +0 -0
  7. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/LICENSE.md +0 -0
  8. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/NOTICE.txt +0 -0
  9. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/README.md +0 -0
  10. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/__init__.py +0 -0
  11. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/api/__init__.py +0 -0
  12. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/api/default_api.py +0 -0
  13. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/api_client.py +0 -0
  14. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/api_response.py +0 -0
  15. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/configuration.py +0 -0
  16. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/exceptions.py +0 -0
  17. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/__init__.py +0 -0
  18. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/api_error.py +0 -0
  19. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/api_error_detail.py +0 -0
  20. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/api_error_response.py +0 -0
  21. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter.py +0 -0
  22. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter_list.py +0 -0
  23. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter_rule.py +0 -0
  24. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter_rule_list.py +0 -0
  25. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_filter_rule_set.py +0 -0
  26. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_gateway_config.py +0 -0
  27. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_status.py +0 -0
  28. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_status_peers.py +0 -0
  29. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/bgp_status_routes.py +0 -0
  30. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/connection_list.py +0 -0
  31. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/connection_response.py +0 -0
  32. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/connection_status_response.py +0 -0
  33. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/create_gateway_bgp_filter_payload.py +0 -0
  34. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/create_gateway_bgp_filter_rule_payload.py +0 -0
  35. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/create_gateway_connection_payload.py +0 -0
  36. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/create_gateway_payload.py +0 -0
  37. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/create_gateway_payload_availability_zones.py +0 -0
  38. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/gateway.py +0 -0
  39. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/gateway_list.py +0 -0
  40. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/gateway_response.py +0 -0
  41. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/gateway_status.py +0 -0
  42. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/gateway_status_response.py +0 -0
  43. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/peering_config.py +0 -0
  44. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/phase.py +0 -0
  45. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/phase1_status.py +0 -0
  46. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/phase2_status.py +0 -0
  47. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/plan.py +0 -0
  48. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/plan_list.py +0 -0
  49. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/quota.py +0 -0
  50. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/quota_list.py +0 -0
  51. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/quota_list_response.py +0 -0
  52. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/region.py +0 -0
  53. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/routing_type.py +0 -0
  54. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/tunnel_configuration.py +0 -0
  55. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/tunnel_configuration_phase1.py +0 -0
  56. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/tunnel_configuration_phase2.py +0 -0
  57. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/tunnel_status.py +0 -0
  58. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/update_gateway_bgp_filter_payload.py +0 -0
  59. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/update_gateway_bgp_filter_rule_payload.py +0 -0
  60. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/update_gateway_connection_payload.py +0 -0
  61. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/update_gateway_payload.py +0 -0
  62. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/models/vpn_tunnels.py +0 -0
  63. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/py.typed +0 -0
  64. {stackit_vpn-0.7.0 → stackit_vpn-0.7.2}/src/stackit/vpn/rest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stackit-vpn
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: STACKIT VPN API
5
5
  Project-URL: Homepage, https://github.com/stackitcloud/stackit-sdk-python
6
6
  Project-URL: Issues, https://github.com/stackitcloud/stackit-sdk-python/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stackit-vpn"
3
- version = "v0.7.0"
3
+ version = "v0.7.2"
4
4
  description = "STACKIT VPN API"
5
5
  authors = [{name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud"}]
6
6
  requires-python = ">=3.10,<4.0"
@@ -55,7 +55,7 @@ include = ["src/stackit"]
55
55
  [tool.hatch.build.targets.wheel]
56
56
  include = ["src/stackit"]
57
57
 
58
- [tool.hatch.build.targets.wheel-sources]
58
+ [tool.hatch.build.targets.wheel.sources]
59
59
  "src/stackit" = "stackit"
60
60
 
61
61
  [build-system]
@@ -29,7 +29,7 @@ class BGPFilterRuleMatch(BaseModel):
29
29
  """ # noqa: E501
30
30
 
31
31
  as_path_contains_any: Optional[
32
- Annotated[List[Annotated[int, Field(le=4294967294, strict=True, ge=64512)]], Field(max_length=10)]
32
+ Annotated[List[Annotated[int, Field(le=4294967294, strict=True, ge=1)]], Field(max_length=10)]
33
33
  ] = Field(
34
34
  default=None,
35
35
  description="Matches if the AS-PATH contains any one of the listed ASNs (logical OR within the list). Treated as an unordered set; ordering is not preserved by the storage layer. When combined with firstASN, both conditions must hold (logical AND, consistent with the rest of the match block). If firstASN is also listed here, its presence as the first hop is sufficient to satisfy this list; no duplicate hop is required. ",
@@ -39,7 +39,7 @@ class BGPFilterRuleMatch(BaseModel):
39
39
  default=None,
40
40
  description="Matches if the route carries any one of these BGP standard communities (logical OR within the list). Format is 'asn:value' per RFC 1997 (both halves must fit in a uint32, i.e. 0..4294967295). Extended, large and well-known communities are not supported. ",
41
41
  )
42
- first_asn: Optional[Annotated[int, Field(le=4294967294, strict=True, ge=64512)]] = Field(
42
+ first_asn: Optional[Annotated[int, Field(le=4294967294, strict=True, ge=1)]] = Field(
43
43
  default=None,
44
44
  description="Matches if the first ASN (immediate neighbor) in the AS-PATH equals this ASN. Combines with asPathContainsAny using logical AND: when both are set, the first ASN must equal firstASN AND the path must additionally contain at least one ASN from asPathContainsAny. ",
45
45
  alias="firstASN",
@@ -33,8 +33,8 @@ class BGPTunnelConfig(BaseModel):
33
33
  description="UUID of the BGPFilter to apply to incoming routes from this tunnel's BGP neighbor. The filter must exist in the same gateway. Multiple tunnels may reference the same BGPFilter; in that case the rules' 'match.peer' field can be used to scope behavior per neighbor. Outbound filtering is not yet supported; use gateway.bgp.overrideAdvertisedRoutes to control what is advertised. ",
34
34
  alias="inboundFilterId",
35
35
  )
36
- remote_asn: Annotated[int, Field(le=4294967294, strict=True, ge=64512)] = Field(
37
- description="ASN for private use (reserved by IANA), both 16Bit and 32Bit ranges are valid (RFC 6996). ",
36
+ remote_asn: Annotated[int, Field(le=4294967294, strict=True, ge=1)] = Field(
37
+ description='Number of an Autonomous System. Both 16Bit and 32Bit ranges are supported, excluding values reserved by: * RFC 7607 (0) * RFC 6793 (23456, AS_TRANS) * RFC 7300 (65535 and 4294967295, the "Last ASNs") ',
38
38
  alias="remoteAsn",
39
39
  )
40
40
  __properties: ClassVar[List[str]] = ["inboundFilterId", "remoteAsn"]
@@ -15,10 +15,11 @@ from __future__ import annotations
15
15
 
16
16
  import json
17
17
  import pprint
18
+ import re # noqa: F401
18
19
  from typing import Any, ClassVar, Dict, List, Optional, Set
19
20
  from uuid import UUID
20
21
 
21
- from pydantic import BaseModel, ConfigDict, Field
22
+ from pydantic import BaseModel, ConfigDict, Field, field_validator
22
23
  from pydantic_core import to_jsonable_python
23
24
  from typing_extensions import Annotated, Self
24
25
 
@@ -28,7 +29,7 @@ class NetworkConfig(BaseModel):
28
29
  NetworkConfig
29
30
  """ # noqa: E501
30
31
 
31
- predefined_network_prefix: Optional[List[Annotated[str, Field(strict=True)]]] = Field(
32
+ predefined_network_prefix: Optional[Annotated[str, Field(strict=True)]] = Field(
32
33
  default=None,
33
34
  description="The IPv4 network prefix (CIDR notation) allocated for the VPN gateway. Must have a prefix length of /28 or larger. Once the gateway is created, is not possible to change this attribute. ",
34
35
  alias="predefinedNetworkPrefix",
@@ -38,6 +39,21 @@ class NetworkConfig(BaseModel):
38
39
  )
39
40
  __properties: ClassVar[List[str]] = ["predefinedNetworkPrefix", "routingTableId"]
40
41
 
42
+ @field_validator("predefined_network_prefix")
43
+ def predefined_network_prefix_validate_regular_expression(cls, value):
44
+ """Validates the regular expression"""
45
+ if value is None:
46
+ return value
47
+
48
+ if not isinstance(value, str):
49
+ value = str(value)
50
+
51
+ if not re.match(r"^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}(\/([0-9]|[1-2][0-9]|3[0-2]))?$", value):
52
+ raise ValueError(
53
+ r"must validate the regular expression /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/"
54
+ )
55
+ return value
56
+
41
57
  model_config = ConfigDict(
42
58
  validate_by_name=True,
43
59
  validate_by_alias=True,
File without changes
File without changes
File without changes
File without changes