Skip to content

Commit 71971b6

Browse files
committed
added delete op
1 parent e85ca96 commit 71971b6

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

main.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88
def main():
99
eda = EDAClient(base_url="https://devbox.panda-cobra.ts.net")
1010

11-
my_banner = banner("Let's have some model driven automation going on!")
12-
eda.add_to_transaction_replace(my_banner)
11+
my_banner = banner(
12+
ns="clab-vlan",
13+
name="my-banner",
14+
motd_text="Let's have some model driven automation going on!",
15+
)
16+
eda.add_to_transaction_delete(my_banner)
1317
_ = eda.commit_transaction()
1418

1519

src/banner.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
from models.com.nokia.eda.siteinfo.v1alpha1 import Banner, Metadata, Spec
22

3+
API_VERSION = "siteinfo.eda.nokia.com/v1alpha1"
4+
KIND = "Banner"
35

4-
def banner(motd_text: str) -> Banner:
6+
7+
def banner(ns: str, name: str, motd_text: str) -> Banner:
58
"""
69
Create a banner
710
"""
811

912
banner = Banner(
10-
apiVersion="siteinfo.eda.nokia.com/v1alpha1",
11-
kind="Banner",
13+
apiVersion=API_VERSION,
14+
kind=KIND,
1215
metadata=Metadata(
13-
name="banner",
14-
namespace="clab-vlan",
16+
name=name,
17+
namespace=ns,
1518
labels={"app": "banner"},
1619
),
1720
spec=Spec(motd=motd_text, nodeSelector=["containerlab=managed"]),

src/client.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pydantic import BaseModel
66

77
from models.core import (
8+
GroupVersionKind,
9+
NsCrGvkName,
810
Transaction,
911
TransactionContent,
1012
TransactionCr,
@@ -68,6 +70,11 @@ def add_to_transaction_replace(self, resource: BaseModel) -> None:
6870

6971
self.add_to_transaction(resource, _REPLACE)
7072

73+
def add_to_transaction_delete(self, resource: BaseModel) -> None:
74+
"""Add resource to the delete list of a transaction"""
75+
76+
self.add_to_transaction(resource, _DELETE)
77+
7178
def add_to_transaction(self, resource: BaseModel, type: TxType) -> None:
7279
"""Add resource to transaction"""
7380

@@ -78,15 +85,34 @@ def add_to_transaction(self, resource: BaseModel, type: TxType) -> None:
7885
)
7986
)
8087

88+
if (
89+
content.apiVersion is None
90+
or content.kind is None
91+
or content.metadata is None
92+
):
93+
raise ValueError(
94+
f"Resource {content.apiVersion} {content.kind} is not a valid resource"
95+
)
96+
8197
logger.info(
8298
f"Adding '{content.kind}' resource from '{content.apiVersion}' to the '{type}' transaction list"
8399
)
84100

85101
tx_type_mapping = {
86102
"create": TransactionType(create=TransactionValue(value=content)),
87-
# "delete": TransactionType(delete=content),
103+
"delete": TransactionType(
104+
delete=NsCrGvkName(
105+
gvk=GroupVersionKind(
106+
group=content.apiVersion.split("/")[0],
107+
version=content.apiVersion.split("/")[1],
108+
kind=content.kind,
109+
),
110+
name=content.metadata.name,
111+
namespace=content.metadata.namespace,
112+
)
113+
),
88114
"modify": TransactionType(modify=TransactionValue(value=content)),
89-
"replace": TransactionType(modify=TransactionValue(value=content)),
115+
"replace": TransactionType(replace=TransactionValue(value=content)),
90116
}
91117

92118
tx_cr = TransactionCr(type=tx_type_mapping[type])
@@ -114,6 +140,8 @@ def commit_transaction(self) -> Any:
114140
exclude_unset=True, exclude_none=True, exclude_defaults=True
115141
)
116142

143+
logger.info(f"Committing transaction: {content}")
144+
117145
response = self.post(
118146
url=self.transaction_endpoint,
119147
content=content,

0 commit comments

Comments
 (0)