From 9b40533b4da671cf38e0074c6b654dca1871e56a Mon Sep 17 00:00:00 2001 From: Daisuke Taniwaki Date: Fri, 25 Jan 2019 15:26:16 +0900 Subject: [PATCH] Allow shareProcessNamespace in pod manifests --- client/src/main/scala/skuber/Pod.scala | 5 +++-- client/src/main/scala/skuber/json/package.scala | 12 +++++++----- .../src/test/resources/examplePodExtendedSpec.json | 1 + .../src/test/scala/skuber/json/PodFormatSpec.scala | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/client/src/main/scala/skuber/Pod.scala b/client/src/main/scala/skuber/Pod.scala index 722ba656..bf66dd0d 100644 --- a/client/src/main/scala/skuber/Pod.scala +++ b/client/src/main/scala/skuber/Pod.scala @@ -50,8 +50,9 @@ object Pod { priorityClassName: Option[String] = None, schedulerName: Option[String] = None, subdomain: Option[String] = None, - dnsConfig: Option[DNSConfig] = None) { - + dnsConfig: Option[DNSConfig] = None, + shareProcessNamespace: Option[Boolean] = None) { + // a few convenience methods for fluently building out a pod spec def addContainer(c: Container) = { this.copy(containers = c :: containers) } def addInitContainer(c: Container) = { this.copy(initContainers = c :: initContainers) } diff --git a/client/src/main/scala/skuber/json/package.scala b/client/src/main/scala/skuber/json/package.scala index 1c696b47..01b03eed 100644 --- a/client/src/main/scala/skuber/json/package.scala +++ b/client/src/main/scala/skuber/json/package.scala @@ -792,7 +792,7 @@ package object format { (JsPath \ "securityContext").formatNullable[PodSecurityContext] ).tupled - val podSpecPartTwoFormat: OFormat[(Option[String], List[Pod.HostAlias], Option[Boolean], Option[Boolean], Option[Boolean], Option[Int], Option[String], Option[String], Option[String], Option[Pod.DNSConfig])] = ( + val podSpecPartTwoFormat: OFormat[(Option[String], List[Pod.HostAlias], Option[Boolean], Option[Boolean], Option[Boolean], Option[Int], Option[String], Option[String], Option[String], Option[Pod.DNSConfig], Option[Boolean])] = ( (JsPath \ "hostname").formatNullable[String] and (JsPath \ "hostAliases").formatMaybeEmptyList[Pod.HostAlias] and (JsPath \ "hostPID").formatNullable[Boolean] and @@ -802,14 +802,15 @@ package object format { (JsPath \ "priorityClassName").formatNullable[String] and (JsPath \ "schedulerName").formatNullable[String] and (JsPath \ "subdomain").formatNullable[String] and - (JsPath \ "dnsConfig").formatNullable[Pod.DNSConfig] + (JsPath \ "dnsConfig").formatNullable[Pod.DNSConfig] and + (JsPath \ "shareProcessNamespace").formatNullable[Boolean] ).tupled implicit val podSpecFmt: Format[Pod.Spec] = ( podSpecPartOneFormat and podSpecPartTwoFormat ).apply({ - case ((conts, initConts, vols, rpol, tgps, adls, dnspol, nodesel, svcac, node, hnet, ips, aff, tol, psc), (host, aliases, pid, ipc, asat, prio, prioc, sched, subd, dnsc)) => - Pod.Spec(conts, initConts, vols, rpol, tgps, adls, dnspol, nodesel, svcac, node, hnet, ips, aff, tol, psc, host, aliases, pid, ipc, asat, prio, prioc, sched, subd, dnsc) + case ((conts, initConts, vols, rpol, tgps, adls, dnspol, nodesel, svcac, node, hnet, ips, aff, tol, psc), (host, aliases, pid, ipc, asat, prio, prioc, sched, subd, dnsc, spn)) => + Pod.Spec(conts, initConts, vols, rpol, tgps, adls, dnspol, nodesel, svcac, node, hnet, ips, aff, tol, psc, host, aliases, pid, ipc, asat, prio, prioc, sched, subd, dnsc, spn) }, s =>( ( s.containers, s.initContainers, @@ -836,7 +837,8 @@ package object format { s.priorityClassName, s.schedulerName, s.subdomain, - s.dnsConfig + s.dnsConfig, + s.shareProcessNamespace )) ) diff --git a/client/src/test/resources/examplePodExtendedSpec.json b/client/src/test/resources/examplePodExtendedSpec.json index 583a77d4..2f9895b7 100644 --- a/client/src/test/resources/examplePodExtendedSpec.json +++ b/client/src/test/resources/examplePodExtendedSpec.json @@ -11,6 +11,7 @@ }, "restartPolicy": "OnFailure", "serviceAccountName": "my-account", + "shareProcessNamespace": true, "terminationGracePeriodSeconds": 60, "hostNetwork": true, "dnsPolicy": "None", diff --git a/client/src/test/scala/skuber/json/PodFormatSpec.scala b/client/src/test/scala/skuber/json/PodFormatSpec.scala index 3b707970..411a779e 100644 --- a/client/src/test/scala/skuber/json/PodFormatSpec.scala +++ b/client/src/test/scala/skuber/json/PodFormatSpec.scala @@ -648,6 +648,7 @@ import Pod._ pod.spec.get.subdomain mustEqual Some("def") pod.spec.get.dnsPolicy mustEqual DNSPolicy.None pod.spec.get.hostNetwork mustEqual true + pod.spec.get.shareProcessNamespace mustEqual true // write and read it back in again and compare val json = Json.toJson(pod)