diff --git a/.travis.yml b/.travis.yml index 0c87a223..de247432 100644 --- a/.travis.yml +++ b/.travis.yml @@ -58,14 +58,15 @@ jobs: - sudo apt-get install -y bc build-essential clang-3.9 libcurl4-openssl-dev libgc-dev libre2-dev libunwind8-dev - script/install-oc.sh before_script: + - export OC_PROJECT=orchestration-$(date "+%Y%m%d-%H%M%S") - oc login -u $OC_USERNAME -p $OC_PASSWORD centralpark.lightbend.com > /dev/null - - oc new-project reactivelibtest1 || oc project reactivelibtest1 + - oc new-project $OC_PROJECT || oc project $OC_PROJECT - export OC_TOKEN=$(oc serviceaccounts get-token default) - echo "$OC_TOKEN" | docker login -u unused --password-stdin docker-registry-default.centralpark.lightbend.com - oc status script: sbt -Ddeckhand.openshift cliNative/nativeLink integrationTest/scripted after_script: - - oc delete project reactivelibtest1 + - oc delete project $OC_PROJECT stages: - name: openshift-test diff --git a/cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/PodTemplate.scala b/cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/PodTemplate.scala index 7d22edbe..8013ae3b 100644 --- a/cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/PodTemplate.scala +++ b/cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/PodTemplate.scala @@ -111,7 +111,7 @@ object PodTemplate { s"-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name=$managementEndpointName", appName match { case Some(name) => s"-Dakka.management.cluster.bootstrap.contact-point-discovery.service-name=$name-internal" - case _ => sys.error("appName was expected") + case _ => sys.error("appName was expected") }) }) ++ List( @@ -253,10 +253,18 @@ object PodTemplate { .asJson } - implicit def assignedEncode = EncodeJson[AssignedPort] { assigned => - Json( - "containerPort" -> assigned.port.asJson, - "name" -> serviceName(assigned.endpoint.name).asJson) + implicit def assignedEncode: EncodeJson[AssignedPort] = EncodeJson[AssignedPort] { assigned => + assigned.endpoint match { + case UdpEndpoint(_, _, _) => + Json( + "containerPort" -> assigned.port.asJson, + "name" -> serviceName(assigned.endpoint.name).asJson, + "protocol" -> "UDP".asJson) + case _ => + Json( + "containerPort" -> assigned.port.asJson, + "name" -> serviceName(assigned.endpoint.name).asJson) + } } implicit def endpointsEncode = EncodeJson[Map[String, Endpoint]] { endpoints => diff --git a/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/DeploymentJsonTest.scala b/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/DeploymentJsonTest.scala index 1e1b4672..3e60b3a4 100644 --- a/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/DeploymentJsonTest.scala +++ b/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/DeploymentJsonTest.scala @@ -157,7 +157,8 @@ object DeploymentJsonTest extends TestSuite { | }, | { | "containerPort": 10001, - | "name": "ep3" + | "name": "ep3", + | "protocol": "UDP" | } | ], | "resources": { @@ -277,8 +278,7 @@ object DeploymentJsonTest extends TestSuite { assert(javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.discovery-method=kubernetes-api") && javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name=management") && javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.effective-name=friendimpl") && - javaOpts.contains("-Dakka.discovery.kubernetes-api.pod-label-selector=akka.lightbend.com/service-name=%s") - ) + javaOpts.contains("-Dakka.discovery.kubernetes-api.pod-label-selector=akka.lightbend.com/service-name=%s")) }) } @@ -308,8 +308,7 @@ object DeploymentJsonTest extends TestSuite { javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.service-name=friendimpl-internal") && javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name=management") && !javaOpts.contains("-Dakka.management.cluster.bootstrap.contact-point-discovery.effective-name=friendimpl") && - !javaOpts.contains("-Dakka.discovery.kubernetes-api.pod-label-selector=akka.lightbend.com/service-name=%s") - ) + !javaOpts.contains("-Dakka.discovery.kubernetes-api.pod-label-selector=akka.lightbend.com/service-name=%s")) }) } @@ -379,7 +378,8 @@ object DeploymentJsonTest extends TestSuite { | }, | { | "containerPort": 10001, - | "name": "ep3" + | "name": "ep3", + | "protocol": "UDP" | } | ], | "resources": { @@ -665,7 +665,8 @@ object DeploymentJsonTest extends TestSuite { """ |{ | "containerPort": 9999, - | "name": "ep1" + | "name": "ep1", + | "protocol": "UDP" |} """.stripMargin.parse.right.get val generatedJson = assigned.asJson diff --git a/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/KubernetesPackageTest.scala b/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/KubernetesPackageTest.scala index 86a9c77c..d278b307 100644 --- a/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/KubernetesPackageTest.scala +++ b/cli/shared/src/test/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/KubernetesPackageTest.scala @@ -257,7 +257,8 @@ object KubernetesPackageTest extends TestSuite { | }, | { | "containerPort": 1234, - | "name": "ep5" + | "name": "ep5", + | "protocol": "UDP" | } | ] | } @@ -551,7 +552,8 @@ object KubernetesPackageTest extends TestSuite { | }, | { | "containerPort": 1234, - | "name": "ep5" + | "name": "ep5", + | "protocol": "UDP" | } | ] | } diff --git a/integration-test/src/sbt-test/bootstrap-demo/kubernetes-api/build.sbt b/integration-test/src/sbt-test/bootstrap-demo/kubernetes-api/build.sbt index 00c0dfc9..2b45fb5d 100644 --- a/integration-test/src/sbt-test/bootstrap-demo/kubernetes-api/build.sbt +++ b/integration-test/src/sbt-test/bootstrap-demo/kubernetes-api/build.sbt @@ -43,7 +43,7 @@ lazy val root = (project in file(".")) val s = streams.value val nm = name.value val v = version.value - val namespace = "reactivelibtest1" + val namespace = sys.env.get("OC_PROJECT").getOrElse("reactivelibtest1") val rpPath = file(sys.props("reactiveclipath")) / "reactive-cli-out" val out = Process(s"$rpPath generate-kubernetes-resources --registry-use-local --generate-all --discovery-method kubernetes-api $nm:$v --pod-controller-replicas 3").!! val x = @@ -61,7 +61,7 @@ lazy val root = (project in file(".")) val s = streams.value val nm = name.value val v = version.value - val namespace = "reactivelibtest1" + val namespace = sys.env.get("OC_PROJECT").getOrElse("reactivelibtest1") val kubectl = Deckhand.kubectl(s.log) val docker = Deckhand.docker(s.log) val yamlDir = baseDirectory.value / "kubernetes" diff --git a/integration-test/src/sbt-test/bootstrap-demo/kubernetes-dns/build.sbt b/integration-test/src/sbt-test/bootstrap-demo/kubernetes-dns/build.sbt index fbe72234..e54f2463 100644 --- a/integration-test/src/sbt-test/bootstrap-demo/kubernetes-dns/build.sbt +++ b/integration-test/src/sbt-test/bootstrap-demo/kubernetes-dns/build.sbt @@ -42,7 +42,7 @@ lazy val root = (project in file(".")) val s = streams.value val nm = name.value val v = version.value - val namespace = "reactivelibtest1" + val namespace = sys.env.get("OC_PROJECT").getOrElse("reactivelibtest1") val rpPath = file(sys.props("reactiveclipath")) / "reactive-cli-out" val out = Process(s"$rpPath generate-kubernetes-resources --registry-use-local --generate-all $nm:$v --pod-controller-replicas 3 --stacktrace").!! val x = @@ -60,7 +60,7 @@ lazy val root = (project in file(".")) val s = streams.value val nm = name.value val v = version.value - val namespace = "reactivelibtest1" + val namespace = sys.env.get("OC_PROJECT").getOrElse("reactivelibtest1") val kubectl = Deckhand.kubectl(s.log) val docker = Deckhand.docker(s.log)