Skip to content

Commit

Permalink
Improved OpenShift integration. #9
Browse files Browse the repository at this point in the history
  • Loading branch information
lreimer committed Oct 17, 2017
1 parent 1d34cfd commit a568ae4
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ deploy:
provider: releases
api_key:
secure: G0YuvgjzluwMAMzG+QbvGlq4GVfauad9CCF/PHQn7R2GD3CpKjxPLSsbGOixyNFu/kGe/tp/Nm87IsPX9NbWZjruCK/90XIWs8z9uMehvNGp9nZs5+cjJAEC9bD3H+sobBGru2EZXUnHwUIqOAJa6rumJfGW9rG3GTyAh70QlJwHDMHQeNPjaO8cV4n5FaOY1OgNgne7xH0teF3Ec3eZbVQ8mB6CRbxyAanCRz2K2oWjEP8h2ITqiXZDqjAqcCCWhELwtkY/2ZBexorFgHhVCdmvyGot/YEY1bbjXQI1Wn6JU6rWCdAcQdrSXES51zBkc+OA5XsVHsivqTOPyJlW6nUQ9H/BlHiS6jJqYmKA8s3gbhHq50JdlP7UvSRqf2xdPjffA0lvlvdpWIysgXY7HgdUpy7WNI4YCA5aAToxftd3OqQgDHeS0HvSj1i1+Qh/EK63DK6zElUQc7bhlCGF/a9STpI87z1HXSEmbc06/IjZ/8ebYNBYWehqcmt4NtTzyXo2YDOUsgnkGq0323rvxn8ooYBA3NutH5ZSr5eKdySJI/jT6zzAou7mKzvuIOPCSCiDrh4hHFWLF/bbD5kU+T8ylA7GWUCGAwktNaAVJbZZrGl/4R3TeKMAS91WcXTwbtKdRh8HH7oEHA8MlSKc9dsUAZvD803Rn7aD4hN/jOs=
file: ./build/distributions/cloudcontrol-1.0.1.zip
file: ./build/distributions/cloudcontrol-1.1.0.zip
skip_cleanup: true
on:
tags: true
20 changes: 20 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,23 @@ distributions {
}
}
}

task createK8sControlStartScripts(type: CreateStartScripts) {
outputDir = file('build/scripts')
mainClassName = 'de.qaware.oss.cloud.control.CloudControlApplication'
applicationName = 'k8s-control'
defaultJvmOpts = ['-Dcluster.orchestrator=kubernetes']
classpath = startScripts.classpath
}

startScripts.dependsOn createK8sControlStartScripts

task createOcControlStartScripts(type: CreateStartScripts) {
outputDir = file('build/scripts')
mainClassName = 'de.qaware.oss.cloud.control.CloudControlApplication'
applicationName = 'oc-control'
defaultJvmOpts = ['-Dcluster.orchestrator=openshift']
classpath = startScripts.classpath
}

startScripts.dependsOn createOcControlStartScripts
53 changes: 53 additions & 0 deletions oc-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
apiVersion: v1
kind: Service
metadata:
name: everything-as-code
labels:
app: everything-as-code
tier: backend
spec:
type: NodePort
ports:
- port: 18080
selector:
app: everything-as-code
tier: backend
---
apiVersion: v1
kind: DeploymentConfig
metadata:
name: everything-as-code
labels:
cloudcontrol.enabled: "true"
cloudcontrol.index: "0"
spec:
replicas: 2
template:
metadata:
labels:
app: everything-as-code
tier: backend
spec:
containers:
- name: everything-as-code
image: "qaware-oss-docker-registry.bintray.io/lreimer/everything-as-code:1.2.1"
resources:
requests:
memory: "128Mi"
cpu: "125m"
limits:
memory: "256Mi"
cpu: "250m"
ports:
- containerPort: 18080
livenessProbe:
httpGet:
path: /index.html
port: 18080
initialDelaySeconds: 300
timeoutSeconds: 30
env:
- name: JAVA_OPTS
value: -Xmx128m
- name: PORT
value: "18080"
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import io.fabric8.kubernetes.client.ConfigBuilder
import io.fabric8.kubernetes.client.DefaultKubernetesClient
import io.fabric8.kubernetes.client.KubernetesClient
import org.apache.deltaspike.core.api.config.ConfigProperty
import org.apache.deltaspike.core.api.exclude.Exclude
import javax.enterprise.context.ApplicationScoped
import javax.enterprise.inject.Default
import javax.enterprise.inject.Produces
Expand All @@ -36,6 +37,7 @@ import javax.inject.Inject
/**
* The CDI producer for the Kubernetes Java API.
*/
@Exclude(onExpression = "cluster.orchestrator!=kubernetes")
@ApplicationScoped
open class KubernetesProducer @Inject constructor(@ConfigProperty(name = "kubernetes.master")
private val master: String?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ open class MidiDeviceController @Inject constructor(private val launchControl: L

open fun onKnobTurned(@Observes event: KnobEvent) {
logger.info("Received $event")
if (event.row != 1) {
return
}

if (event.value < factor) {
launchControl.color(event.channel, Button.findByIndex(event.index)!!, Color.AMBER_FULL)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ open class OpenShiftCluster @Inject constructor(private val client: OpenShiftCli
private fun add(deployment: DeploymentConfig) {
val (index, name) = find(deployment, true)

logger.info("Adding K8s deployment {} at index {}.", name, index)
logger.info("Adding OpenShift DeploymentConfig {} at index {}.", name, index)
deployments[index] = deployment
display(index, deployment)
}
Expand All @@ -117,7 +117,7 @@ open class OpenShiftCluster @Inject constructor(private val client: OpenShiftCli
val (index, name) = find(deployment)

if (index > -1) {
logger.info("Modifying K8s deployment {} at index {}.", name, index)
logger.info("Modifying OpenShift DeploymentConfig {} at index {}.", name, index)
deployments[index] = deployment
display(index, deployment)
}
Expand All @@ -127,7 +127,7 @@ open class OpenShiftCluster @Inject constructor(private val client: OpenShiftCli
val (index, name) = find(deployment)

if (index > -1) {
logger.info("Removing K8s deployment {} at index {}.", name, index)
logger.info("Removing OpenShift DeploymentConfig {} at index {}.", name, index)
deployments[index] = null
deviceController.off(index)
}
Expand All @@ -137,7 +137,7 @@ open class OpenShiftCluster @Inject constructor(private val client: OpenShiftCli
val (index, name) = find(deployment)

if (index > -1) {
logger.info("Error K8s deployment {} at index {}.", name, index)
logger.info("Error OpenShift DeploymentConfig {} at index {}.", name, index)
deployments[index] = null
deviceController.failure(index)
}
Expand All @@ -164,6 +164,8 @@ open class OpenShiftCluster @Inject constructor(private val client: OpenShiftCli
// maybe make the factor configurable later
val replicas = (event.value / factor) + 1

logger.info("Scaling DeploymentConfig {} to {} replicas.", name, replicas)

synchronized(client) {
deployments[index] = client.deploymentConfigs()
.inNamespace(namespace)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import io.fabric8.openshift.client.OpenShiftClient
import io.fabric8.openshift.client.OpenShiftConfig
import io.fabric8.openshift.client.OpenShiftConfigBuilder
import org.apache.deltaspike.core.api.config.ConfigProperty
import org.apache.deltaspike.core.api.exclude.Exclude
import javax.enterprise.context.ApplicationScoped
import javax.enterprise.inject.Default
import javax.enterprise.inject.Produces
Expand All @@ -36,6 +37,7 @@ import javax.inject.Inject
/**
* The CDI producer for the OpenShift Java API.
*/
@Exclude(onExpression = "cluster.orchestrator!=openshift")
@ApplicationScoped
open class OpenShiftProducer @Inject constructor(@ConfigProperty(name = "openshift.url")
private val openshiftUrl: String?) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/cloudcontrol.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
kubernetes.namespace=default
openshift.project=default
openshift.project=myproject

cloudcontrol.factor=16

0 comments on commit a568ae4

Please sign in to comment.