simplification

This commit is contained in:
2018-09-30 13:24:55 -04:00
parent d6b2f407b9
commit 68f4ca9ed4
7 changed files with 121 additions and 132 deletions
+12 -25
View File
@@ -40,14 +40,12 @@ class Operator:
self.client = kubernetes.client.CoreV1Api()
self.custom_client = kubernetes.client.CustomObjectsApi(self.client.api_client)
# Ensure resource definitions.
self.ensure_namespace()
self.ensure_resource_definitions()
self.ensure_volumes()
# Ensure Registry.
self.ensure_registry()
# Fetch all the buildpacks.
# self.spawn_fetch_buildpacks()
c = self.spawn_fetch_buildpacks()
c.block()
@property
def installed_buildpacks(self):
@@ -96,7 +94,7 @@ class Operator:
except kubernetes.client.rest.ApiException:
return None
def spawn_self(self, cmd, label, env=None):
def kube_spawn_self(self, cmd, label, env=None):
if env is None:
env = {}
@@ -106,9 +104,12 @@ class Operator:
f"run bruce-operator-{label}-{_hash} --image={OPERATOR_IMAGE} -n {WATCH_NAMESPACE} --restart=Never --quiet=True --record=True --image-pull-policy=Always -- bruce-operator {cmd}"
)
def ensure_namespace(self):
self.logger.info("Ensuring bruce namespace...")
kubectl(f"apply -f ./deploy/_bruce-namespace.yml", raise_on_error=False)
def spawn_self(self, cmd, label, env=None):
if env is None:
env = {}
# TODO: ENV
return delegator.run(f"bruce-operator {cmd}", block=False)
def ensure_kubeconfig(self):
"""Ensures that ~/.kube/config exists, when running in Kubernetes."""
@@ -136,25 +137,11 @@ class Operator:
# Use the context.
kc.use_context("context")
def ensure_resource_definitions(self):
# Create Buildpacks resource.
self.logger.info("Ensuring Buildpack resource definitions...")
kubectl(
f"apply -f ./deploy/buildpack-resource-definition.yml -n {WATCH_NAMESPACE}"
)
# Create Apps resource.
self.logger.info("Ensuring App resource definitions...")
kubectl(f"apply -f ./deploy/app-resource-definition.yml -n {WATCH_NAMESPACE}")
def ensure_volumes(self):
self.logger.info("Ensuring Buildpack volume resource...")
kubectl(f"apply -f ./deploy/buildpacks-volume.yml -n {WATCH_NAMESPACE}")
def spawn_fetch_buildpacks(self):
self.spawn_self(f"fetch-buildpacks", label="fetch")
c = self.spawn_self(f"fetch-buildpacks", label="fetch")
for buildpack in self.installed_buildpacks:
self.logger.info(f"Pretending to fetch {buildpack_name!r} buildpack!")
return c
def ensure_registry(self):
self.logger.info("Ensuring Registry volume...")
-13
View File
@@ -1,13 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: apps.bruce.kennethreitz.org
spec:
group: bruce.kennethreitz.org
names:
kind: App
listKind: appList
plural: apps
singular: app
scope: Namespaced
version: v1alpha1
-14
View File
@@ -1,14 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: buildpacks.bruce.kennethreitz.org
spec:
group: bruce.kennethreitz.org
names:
kind: Buildpack
listKind: buildpackList
plural: buildpacks
singular: buildpack
shortNames: [bp,]
scope: Namespaced
version: v1alpha1
-14
View File
@@ -1,14 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: buildpacks-volume
name: buildpacks-volume
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
status: {}
-66
View File
@@ -1,66 +0,0 @@
apiVersion: v1
items:
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "ruby"
buildkit: "heroku/ruby"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "nodejs"
buildkit: "heroku/nodejs"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "clojure"
buildkit: "heroku/clojure"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "python"
buildkit: "heroku/python"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "java"
buildkit: "heroku/java"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "gradle"
buildkit: "heroku/gradle"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "scala"
buildkit: "heroku/scala"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "php"
buildkit: "heroku/php"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "go"
buildkit: "heroku/go"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "elixir"
buildkit: "hashnuke/elixir"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "static"
repo: "https://github.com/dokku/buildpack-nginx"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "multi"
repo: "https://github.com/heroku/heroku-buildpack-multi"
kind: List
metadata:
resourceVersion: ""
selfLink: ""
+109
View File
@@ -75,3 +75,112 @@ spec:
io.kompose.service: bruce-operator
status:
loadBalancer: {}
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: buildpacks.bruce.kennethreitz.org
spec:
group: bruce.kennethreitz.org
names:
kind: Buildpack
listKind: buildpackList
plural: buildpacks
singular: buildpack
shortNames: [bp,]
scope: Namespaced
version: v1alpha1
---
metadata:
creationTimestamp: null
labels:
io.kompose.service: buildpacks-volume
name: buildpacks-volume
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
status: {}
---
apiVersion: v1
items:
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "ruby"
buildkit: "heroku/ruby"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "nodejs"
buildkit: "heroku/nodejs"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "clojure"
buildkit: "heroku/clojure"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "python"
buildkit: "heroku/python"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "java"
buildkit: "heroku/java"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "gradle"
buildkit: "heroku/gradle"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "scala"
buildkit: "heroku/scala"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "php"
buildkit: "heroku/php"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "go"
buildkit: "heroku/go"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "elixir"
buildkit: "hashnuke/elixir"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "static"
repo: "https://github.com/dokku/buildpack-nginx"
- apiVersion: bruce.kennethreitz.org/v1alpha1
kind: Buildpack
metadata:
name: "multi"
repo: "https://github.com/heroku/heroku-buildpack-multi"
kind: List
metadata:
resourceVersion: ""
selfLink: ""
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: apps.bruce.kennethreitz.org
spec:
group: bruce.kennethreitz.org
names:
kind: App
listKind: appList
plural: apps
singular: app
scope: Namespaced
version: v1alpha1