Skip to content

Commit f339658

Browse files
authored
Add pool manager daemon (#115)
1 parent d1c6e4d commit f339658

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

kopf-opt.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
2-
KOPF_OPTIONS="--log-format=json"
2+
KOPF_OPTIONS="${KOPF_OPTIONS:---log-format=json}"
33

44
# Restrict watch to operator namespace.
55
KOPF_NAMESPACED=false

operator/operator.py

+35
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,41 @@ async def resource_pool_delete(
335335
)
336336
await resource_pool.handle_delete(logger=logger)
337337

338+
@kopf.daemon(Poolboy.operator_domain, Poolboy.operator_version, 'resourcepools',
339+
cancellation_timeout = 1,
340+
initial_delay = Poolboy.manage_pools_interval,
341+
labels = {Poolboy.ignore_label: kopf.ABSENT},
342+
)
343+
async def resource_pool_daemon(
344+
annotations: kopf.Annotations,
345+
labels: kopf.Labels,
346+
logger: kopf.ObjectLogger,
347+
meta: kopf.Meta,
348+
name: str,
349+
namespace: str,
350+
spec: kopf.Spec,
351+
status: kopf.Status,
352+
stopped: Optional[datetime],
353+
uid: str,
354+
**_
355+
):
356+
resource_pool = await ResourcePool.register(
357+
annotations = annotations,
358+
labels = labels,
359+
meta = meta,
360+
name = name,
361+
namespace = namespace,
362+
spec = spec,
363+
status = status,
364+
uid = uid,
365+
)
366+
try:
367+
while not stopped:
368+
await resource_pool.manage(logger=logger)
369+
await asyncio.sleep(Poolboy.manage_pools_interval)
370+
except asyncio.CancelledError:
371+
pass
372+
338373

339374
@kopf.on.event(Poolboy.operator_domain, Poolboy.operator_version, 'resourceproviders')
340375
async def resource_provider_event(event: Mapping, logger: kopf.ObjectLogger, **_) -> None:

operator/poolboy.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
class Poolboy():
55
manage_claims_interval = int(os.environ.get('MANAGE_CLAIMS_INTERVAL', 60))
66
manage_handles_interval = int(os.environ.get('MANAGE_HANDLES_INTERVAL', 60))
7+
manage_pools_interval = int(os.environ.get('MANAGE_POOLS_INTERVAL', 10))
78
operator_domain = os.environ.get('OPERATOR_DOMAIN', 'poolboy.gpte.redhat.com')
89
operator_version = os.environ.get('OPERATOR_VERSION', 'v1')
910
operator_api_version = f"{operator_domain}/{operator_version}"

0 commit comments

Comments
 (0)