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 @@ -15,6 +15,8 @@
- **Feature:** Add new field `DemoUrl` to `CatalogProductDetail` model
- [v1.10.0](services/stackitmarketplace/CHANGELOG.md#v1100)
- **Feature:** Added `PlanId` to `CatalogProductPricingOption` and `SubscriptionProduct`
- `git`: [v0.5.0](services/git/CHANGELOG.md#v050)
- **Feature**: Add support for instance patch operation
- `loadbalancer`: [v0.7.0](services/loadbalancer/CHANGELOG.md#v070)
- **Feature**: Add new attribute `labels` to `LoadBalancer`, `CreateLoadBalancerPayload`, `UpdateLoadBalancerPayload` model classes

Expand Down
3 changes: 3 additions & 0 deletions services/git/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## v0.5.0
- **Feature**: Add support for instance patch operation

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

Expand Down
4 changes: 2 additions & 2 deletions services/git/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "stackit-git"

[tool.poetry]
name = "stackit-git"
version = "v0.4.0"
version = "v0.5.0"
authors = [
"STACKIT Developer Tools <developer-tools@stackit.cloud>",
]
Expand Down Expand Up @@ -96,4 +96,4 @@ docstring-quotes = '"""'
multiline-quotes = '"""'
ban-relative-imports = true
# Exclude generated code
extend-exclude = [ "src/stackit/*/models/*", "src/stackit/*/api/*", "src/stackit/*/*.py" ]
extend-exclude = [ "src/stackit/*/models/*", "src/stackit/*/api/*", "src/stackit/*/*.py" ]
2 changes: 2 additions & 0 deletions services/git/src/stackit/git/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"InternalServerErrorResponse",
"ListFlavors",
"ListInstances",
"PatchOperation",
"UnauthorizedResponse",
]

Expand Down Expand Up @@ -67,6 +68,7 @@
)
from stackit.git.models.list_flavors import ListFlavors as ListFlavors
from stackit.git.models.list_instances import ListInstances as ListInstances
from stackit.git.models.patch_operation import PatchOperation as PatchOperation
from stackit.git.models.unauthorized_response import (
UnauthorizedResponse as UnauthorizedResponse,
)
291 changes: 291 additions & 0 deletions services/git/src/stackit/git/api/default_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from stackit.git.models.instance import Instance
from stackit.git.models.list_flavors import ListFlavors
from stackit.git.models.list_instances import ListInstances
from stackit.git.models.patch_operation import PatchOperation
from stackit.git.rest import RESTResponseType


Expand Down Expand Up @@ -1300,3 +1301,293 @@ def _list_instances_serialize(
_host=_host,
_request_auth=_request_auth,
)

@validate_call
def patch_instance(
self,
project_id: Annotated[str, Field(min_length=36, strict=True, max_length=36, description="Project identifier.")],
instance_id: Annotated[
str, Field(min_length=36, strict=True, max_length=36, description="Instance identifier.")
],
patch_operation: List[PatchOperation],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> Instance:
"""Patch Instance.

Patches the Instance.

:param project_id: Project identifier. (required)
:type project_id: str
:param instance_id: Instance identifier. (required)
:type instance_id: str
:param patch_operation: (required)
:type patch_operation: List[PatchOperation]
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501

_param = self._patch_instance_serialize(
project_id=project_id,
instance_id=instance_id,
patch_operation=patch_operation,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index,
)

_response_types_map: Dict[str, Optional[str]] = {
"200": "Instance",
"202": None,
"400": "GenericErrorResponse",
"401": "UnauthorizedResponse",
"404": None,
"409": None,
"500": "GenericErrorResponse",
}
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
).data

@validate_call
def patch_instance_with_http_info(
self,
project_id: Annotated[str, Field(min_length=36, strict=True, max_length=36, description="Project identifier.")],
instance_id: Annotated[
str, Field(min_length=36, strict=True, max_length=36, description="Instance identifier.")
],
patch_operation: List[PatchOperation],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[Instance]:
"""Patch Instance.

Patches the Instance.

:param project_id: Project identifier. (required)
:type project_id: str
:param instance_id: Instance identifier. (required)
:type instance_id: str
:param patch_operation: (required)
:type patch_operation: List[PatchOperation]
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501

_param = self._patch_instance_serialize(
project_id=project_id,
instance_id=instance_id,
patch_operation=patch_operation,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index,
)

_response_types_map: Dict[str, Optional[str]] = {
"200": "Instance",
"202": None,
"400": "GenericErrorResponse",
"401": "UnauthorizedResponse",
"404": None,
"409": None,
"500": "GenericErrorResponse",
}
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
)

@validate_call
def patch_instance_without_preload_content(
self,
project_id: Annotated[str, Field(min_length=36, strict=True, max_length=36, description="Project identifier.")],
instance_id: Annotated[
str, Field(min_length=36, strict=True, max_length=36, description="Instance identifier.")
],
patch_operation: List[PatchOperation],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> RESTResponseType:
"""Patch Instance.

Patches the Instance.

:param project_id: Project identifier. (required)
:type project_id: str
:param instance_id: Instance identifier. (required)
:type instance_id: str
:param patch_operation: (required)
:type patch_operation: List[PatchOperation]
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501

_param = self._patch_instance_serialize(
project_id=project_id,
instance_id=instance_id,
patch_operation=patch_operation,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index,
)

_response_types_map: Dict[str, Optional[str]] = {
"200": "Instance",
"202": None,
"400": "GenericErrorResponse",
"401": "UnauthorizedResponse",
"404": None,
"409": None,
"500": "GenericErrorResponse",
}
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
return response_data.response

def _patch_instance_serialize(
self,
project_id,
instance_id,
patch_operation,
_request_auth,
_content_type,
_headers,
_host_index,
) -> RequestSerialized:

_host = None

_collection_formats: Dict[str, str] = {
"PatchOperation": "",
}

_path_params: Dict[str, str] = {}
_query_params: List[Tuple[str, str]] = []
_header_params: Dict[str, Optional[str]] = _headers or {}
_form_params: List[Tuple[str, str]] = []
_files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
_body_params: Optional[bytes] = None

# process the path parameters
if project_id is not None:
_path_params["projectId"] = project_id
if instance_id is not None:
_path_params["instanceId"] = instance_id
# process the query parameters
# process the header parameters
# process the form parameters
# process the body parameter
if patch_operation is not None:
_body_params = patch_operation

# set the HTTP header `Accept`
if "Accept" not in _header_params:
_header_params["Accept"] = self.api_client.select_header_accept(["application/json"])

# set the HTTP header `Content-Type`
if _content_type:
_header_params["Content-Type"] = _content_type
else:
_default_content_type = self.api_client.select_header_content_type(["application/json-patch+json"])
if _default_content_type is not None:
_header_params["Content-Type"] = _default_content_type

# authentication setting
_auth_settings: List[str] = []

return self.api_client.param_serialize(
method="PATCH",
resource_path="/v1beta/projects/{projectId}/instances/{instanceId}",
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
body=_body_params,
post_params=_form_params,
files=_files,
auth_settings=_auth_settings,
collection_formats=_collection_formats,
_host=_host,
_request_auth=_request_auth,
)
1 change: 1 addition & 0 deletions services/git/src/stackit/git/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@
)
from stackit.git.models.list_flavors import ListFlavors
from stackit.git.models.list_instances import ListInstances
from stackit.git.models.patch_operation import PatchOperation
from stackit.git.models.unauthorized_response import UnauthorizedResponse
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class CreateInstancePayload(BaseModel):
Request a STACKIT Git instance to be created with these properties.
""" # noqa: E501

acl: Optional[Annotated[List[StrictStr], Field(max_length=5)]] = Field(
default=None, description="Restricted ACL for instance access."
acl: Optional[Annotated[List[StrictStr], Field(max_length=50)]] = Field(
default=None, description="A list of CIDR network addresses that are allowed to access the instance."
)
flavor: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(
default=None, description="Desired instance flavor. Must be one of the defined enum values"
Expand Down
Loading