-
Notifications
You must be signed in to change notification settings - Fork 55
Expand file tree
/
Copy pathservice_instances.py
More file actions
68 lines (60 loc) · 2.42 KB
/
service_instances.py
File metadata and controls
68 lines (60 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from typing import TYPE_CHECKING
from cloudfoundry_client.common_objects import JsonObject
from cloudfoundry_client.v3.entities import Entity, EntityManager, ToOneRelationship
if TYPE_CHECKING:
from cloudfoundry_client.client import CloudFoundryClient
class ServiceInstanceManager(EntityManager):
def __init__(self, target_endpoint: str, client: "CloudFoundryClient"):
super(ServiceInstanceManager, self).__init__(target_endpoint, client, "/v3/service_instances")
def create(
self,
name: str,
space_guid: str,
service_plan_guid: str,
meta_labels: dict | None = None,
meta_annotations: dict | None = None,
parameters: dict | None = None,
tags: list[str] | None = None,
) -> Entity:
data = {
"name": name,
"type": "managed",
"relationships": {"space": ToOneRelationship(space_guid), "service_plan": ToOneRelationship(service_plan_guid)},
}
if parameters:
data["parameters"] = parameters
if tags:
data["tags"] = tags
self._metadata(data, meta_labels, meta_annotations)
return super(ServiceInstanceManager, self)._create(data)
def update(
self,
instance_guid: str,
name: str | None = None,
parameters: dict | None = None,
service_plan: str | None = None,
maintenance_info: str | None = None,
meta_labels: dict | None = None,
meta_annotations: dict | None = None,
tags: list[str] | None = None
) -> Entity:
data = {}
if name:
data["name"] = name
if parameters:
data["parameters"] = parameters
if service_plan:
data["relationships"] = {
"service_plan": ToOneRelationship(service_plan)}
if maintenance_info:
data["maintenance_info"] = {"version": maintenance_info}
if tags:
data["tags"] = tags
super()._metadata(data, meta_labels, meta_annotations)
return super()._update(instance_guid, data)
def remove(self, guid: str, asynchronous: bool = True):
super()._remove(guid, asynchronous)
def get_permissions(self, instance_guid: str) -> JsonObject:
return super(ServiceInstanceManager, self)._get(
"%s%s/%s/permissions" % (self.target_endpoint, self.entity_uri, instance_guid)
)