File tree Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -134,6 +134,18 @@ def raw(self) -> Box:
134134 def raw (self , value : Any ) -> None :
135135 self ._raw = Box (value )
136136
137+ @property
138+ def raw_template (self ) -> Box :
139+ """Template representation of the Kubernetes resource without instance-specific data.
140+
141+ Returns a copy of the raw object with metadata.resourceVersion and status removed.
142+ This is useful for creating new resources based on existing ones.
143+ """
144+ template = self .raw .copy ()
145+ if "metadata" in template :
146+ template .metadata .pop ("resourceVersion" , None )
147+ return template
148+
137149 @property
138150 def name (self ) -> str :
139151 """Name of the Kubernetes resource."""
@@ -353,7 +365,7 @@ async def async_create(self) -> None:
353365 version = self .version ,
354366 url = self .endpoint ,
355367 namespace = self .namespace ,
356- data = json .dumps (self .raw ),
368+ data = json .dumps (self .raw_template ),
357369 ) as resp :
358370 self .raw = resp .json ()
359371
Original file line number Diff line number Diff line change @@ -1401,3 +1401,27 @@ async def test_generate_name():
14011401 assert po .metadata .generateName in po .name
14021402 finally :
14031403 await po .delete ()
1404+
1405+
1406+ async def test_recreate_pod (ns ):
1407+ po = await kr8s .asyncio .objects .Pod .gen (
1408+ generate_name = "nginx-" , image = "nginx:latest" , namespace = ns
1409+ )
1410+ await po .create ()
1411+ await po .delete ()
1412+ while await po .exists ():
1413+ await anyio .sleep (0.1 )
1414+ await po .create ()
1415+ while not await po .exists ():
1416+ await anyio .sleep (0.1 )
1417+ assert await po .exists ()
1418+ await po .delete ()
1419+
1420+
1421+ async def test_create_existing_pod_fails ():
1422+ po = await kr8s .asyncio .objects .Pod .gen (
1423+ generate_name = "nginx-" , image = "nginx:latest"
1424+ )
1425+ await po .create ()
1426+ with pytest .raises (kr8s .ServerError , match = "already exists" ):
1427+ await po .create ()
You can’t perform that action at this time.
0 commit comments