├── jobs ├── .gitkeep ├── service-fabrik-apiserver │ ├── templates │ │ ├── config │ │ │ ├── etcd.crt.erb │ │ │ ├── etcd.key.erb │ │ │ ├── etcd-ca.crt.erb │ │ │ ├── apiserver-key.pem.erb │ │ │ ├── apiserver.pem.erb │ │ │ ├── tokens.csv.erb │ │ │ ├── kubeconfig.erb │ │ │ └── bpm.yml.erb │ │ └── bin │ │ │ ├── post-start.erb │ │ │ └── ensure_apiserver_healthy.erb │ ├── monit │ └── spec ├── webhooks │ ├── templates │ │ └── config │ │ │ ├── client-cert.pem.erb │ │ │ ├── client-key.pem.erb │ │ │ ├── bpm.yml.erb │ │ │ ├── kubeconfig.yaml.erb │ │ │ ├── metering_webhooks.json.erb │ │ │ └── webhooks.json.erb │ ├── monit │ └── spec ├── iptables-manager │ ├── monit │ ├── spec │ └── templates │ │ └── bin │ │ └── iptables-manager_ctl.erb ├── service-fabrik-interoperator │ ├── monit │ ├── spec │ └── templates │ │ ├── config │ │ ├── bpm.yml.erb │ │ ├── kubeconfig.yaml.erb │ │ └── cluster.yaml.erb │ │ └── bin │ │ └── pre_start.erb ├── service-fabrik-serviceflow-manager │ ├── monit │ ├── spec │ └── templates │ │ └── config │ │ ├── bpm.yml.erb │ │ ├── kubeconfig.yaml.erb │ │ └── settings.yml.erb ├── service-fabrik-postgresqlmt-operator │ ├── monit │ ├── spec │ └── templates │ │ └── config │ │ ├── bpm.yml.erb │ │ └── kubeconfig.yaml.erb ├── service-fabrik-backup-manager │ ├── templates │ │ └── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-backup-manager_ctl.erb │ ├── monit │ └── spec ├── service-fabrik-bosh-manager │ ├── templates │ │ └── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-bosh-manager_ctl.erb │ ├── monit │ └── spec ├── service-fabrik-report │ ├── templates │ │ ├── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-report_ctl.erb │ │ └── config │ │ │ ├── eventlog-config-report.yml.erb │ │ │ └── circuit-breaker-config.yml.erb │ ├── monit │ └── spec ├── service-fabrik-scheduler │ ├── templates │ │ ├── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-scheduler_ctl.erb │ │ └── config │ │ │ └── circuit-breaker-config.yml.erb │ └── monit ├── service-fabrik-deployment-hooks │ ├── templates │ │ ├── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-deployment-hooks_ctl.erb │ │ └── config │ │ │ └── settings.yml.erb │ ├── monit │ └── spec ├── service-fabrik-virtualhost-manager │ ├── templates │ │ └── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-virtualhost-manager_ctl.erb │ ├── spec │ └── monit ├── service-fabrik-quota-app │ ├── monit │ ├── templates │ │ ├── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-quota-app_ctl.erb │ │ └── config │ │ │ └── circuit-breaker-config.yml.erb │ └── spec ├── service-fabrik-broker │ ├── monit │ └── templates │ │ ├── bin │ │ ├── health_check.erb │ │ ├── job_properties.sh.erb │ │ ├── service-fabrik-broker_ctl.erb │ │ └── drain.erb │ │ └── config │ │ └── circuit-breaker-config.yml.erb ├── service-fabrik-admin-app │ ├── monit │ ├── templates │ │ ├── bin │ │ │ ├── job_properties.sh.erb │ │ │ └── service-fabrik-admin-app_ctl.erb │ │ └── config │ │ │ └── circuit-breaker-config.yml.erb │ └── spec └── service-fabrik-broker-ext │ ├── monit │ ├── templates │ ├── bin │ │ ├── job_properties.sh.erb │ │ └── service-fabrik-broker-ext_ctl.erb │ └── config │ │ └── circuit-breaker-config.yml.erb │ └── spec ├── src ├── .gitkeep └── bosh-helpers │ ├── monit_debugger │ └── ctl_setup.sh ├── packages ├── .gitkeep ├── jq │ ├── spec │ └── packaging ├── kubectl │ ├── spec │ └── packaging ├── node │ ├── spec │ └── packaging ├── apiserver │ ├── spec │ └── packaging ├── bosh-helpers │ ├── spec │ └── packaging ├── yaml2json │ ├── spec │ └── packaging ├── golang │ ├── spec │ └── packaging ├── libseccomp │ ├── spec │ └── packaging ├── service-fabrik-broker │ ├── spec │ ├── packaging │ └── pre_packaging ├── webhooks │ ├── spec │ ├── packaging │ └── pre_packaging ├── interoperator │ ├── spec │ ├── packaging │ └── pre_packaging └── service-fabrik-deployment-hooks │ ├── spec │ ├── packaging │ └── pre_packaging ├── .gitattributes ├── services ├── actions │ ├── Blueprint_PreCreate │ └── ReserveIps.js ├── blueprint-dashboard.yml.ejs ├── redis.yml.erb └── blueprint-manifest.yml.ejs ├── scripts ├── update ├── set-kubeconfig └── download_k8s_blobs ├── .gitmodules ├── config ├── final.yml └── blobs.yml ├── .gitignore ├── .travis.yml ├── templates ├── cloud-config-aws-vars.yml ├── cloud-config-boshlite.yml ├── render ├── ops-file-aws.yml ├── ops-file-boshlite.yml └── ops-file.yml ├── .final_builds ├── packages │ ├── jq │ │ └── index.yml │ ├── yaml2json │ │ └── index.yml │ ├── service-fabrik-apiserver │ │ └── index.yml │ ├── keepalived │ │ └── index.yml │ ├── python │ │ └── index.yml │ ├── bosh-helpers │ │ └── index.yml │ ├── libseccomp │ │ └── index.yml │ ├── aws-cli │ │ └── index.yml │ ├── ha-utils │ │ └── index.yml │ ├── kubectl │ │ └── index.yml │ ├── lvm2 │ │ └── index.yml │ ├── apiserver │ │ └── index.yml │ ├── docker │ │ └── index.yml │ ├── swarm │ │ └── index.yml │ └── lvmvd │ │ └── index.yml ├── license │ └── index.yml └── jobs │ ├── service-fabrik-quota-app │ └── index.yml │ ├── service-fabrik-admin-app │ └── index.yml │ ├── iptables-manager │ └── index.yml │ ├── service-fabrik-broker-ext │ └── index.yml │ ├── service-fabrik-deployment-hooks │ └── index.yml │ ├── service-fabrik-interoperator │ └── index.yml │ ├── webhooks │ └── index.yml │ ├── service-fabrik-apiserver │ └── index.yml │ ├── swarm_manager │ └── index.yml │ └── keepalived │ └── index.yml ├── NOTICE ├── certs ├── sf.crt ├── sf.key └── sf-ca.crt ├── crds ├── lock.servicefabrik.io_v1alpha1_deploymentlocks.yaml ├── instance.servicefabrik.io_v1alpha1_sfevents.yaml ├── bind.servicefabrik.io_v1alpha1_directorbinds.yaml ├── bind.servicefabrik.io_v1alpha1_virtualhostbinds.yaml ├── backup.servicefabrik.io_v1alpha1_defaultbackups.yaml ├── bind.servicefabrik.io_v1alpha1_postgresqlmtbinds.yaml ├── backup.servicefabrik.io_v1alpha1_defaultrestores.yaml ├── deployment.servicefabrik.io_v1alpha1_directors.yaml ├── deployment.servicefabrik.io_v1alpha1_virtualhosts.yaml └── deployment.servicefabrik.io_v1alpha1_postgresqlmts.yaml └── releases └── service-fabrik ├── service-fabrik-3.8.0.yml ├── service-fabrik-3.9.0.yml ├── service-fabrik-3.10.0.yml ├── service-fabrik-3.11.0.yml ├── service-fabrik-3.12.0.yml ├── service-fabrik-3.13.0.yml ├── service-fabrik-3.14.0.yml ├── service-fabrik-3.15.0.yml ├── service-fabrik-3.16.0.yml └── service-fabrik-3.17.0.yml /jobs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | config/*.yml -whitespace 2 | releases/*.yml -whitespace -------------------------------------------------------------------------------- /services/actions/Blueprint_PreCreate: -------------------------------------------------------------------------------- 1 | echo "{\"precreate_input\":" "$@" "}" -------------------------------------------------------------------------------- /packages/jq/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: jq 3 | dependencies: [] 4 | files: 5 | - jq/jq 6 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/etcd.crt.erb: -------------------------------------------------------------------------------- 1 | <%= p('etcd.ssl.crt') %> 2 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/etcd.key.erb: -------------------------------------------------------------------------------- 1 | <%= p('etcd.ssl.key') %> 2 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/etcd-ca.crt.erb: -------------------------------------------------------------------------------- 1 | <%= p('etcd.ssl.ca') %> 2 | -------------------------------------------------------------------------------- /packages/kubectl/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: kubectl 3 | 4 | files: 5 | - kubernetes-1.18.2/kubectl 6 | -------------------------------------------------------------------------------- /packages/node/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: node 3 | files: 4 | - node/node-v18.19.1-linux-x64.tar.xz 5 | -------------------------------------------------------------------------------- /packages/apiserver/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: apiserver 3 | 4 | files: 5 | - kubernetes-1.18.2/kube-apiserver 6 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/apiserver-key.pem.erb: -------------------------------------------------------------------------------- 1 | <%= p("tls.apiserver.private_key") %> 2 | -------------------------------------------------------------------------------- /packages/bosh-helpers/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: bosh-helpers 3 | dependencies: [] 4 | files: 5 | - bosh-helpers/* 6 | -------------------------------------------------------------------------------- /packages/yaml2json/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: yaml2json 3 | 4 | dependencies: 5 | 6 | files: 7 | - yaml2json/yaml2json -------------------------------------------------------------------------------- /jobs/webhooks/templates/config/client-cert.pem.erb: -------------------------------------------------------------------------------- 1 | <%= link('service-fabrik-apiserver').p('tls.apiserver.certificate') %> -------------------------------------------------------------------------------- /packages/golang/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: golang 3 | dependencies: [] 4 | files: 5 | - golang/go1.21.7.linux-amd64.tar.gz 6 | -------------------------------------------------------------------------------- /jobs/webhooks/templates/config/client-key.pem.erb: -------------------------------------------------------------------------------- 1 | <%= link('service-fabrik-apiserver').p('tls.apiserver.private_key') %> 2 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/apiserver.pem.erb: -------------------------------------------------------------------------------- 1 | <%= p("tls.apiserver.certificate") %> 2 | <%= p("tls.apiserver.ca") %> -------------------------------------------------------------------------------- /packages/libseccomp/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: libseccomp 3 | files: 4 | - libseccomp/libseccomp-2.5.4.tar.gz 5 | - gperf/gperf-3.1.tar.gz 6 | -------------------------------------------------------------------------------- /scripts/update: -------------------------------------------------------------------------------- 1 | #!/bin/bash -x 2 | 3 | git pull && git submodule foreach --recursive git submodule sync && git submodule update --init --recursive -------------------------------------------------------------------------------- /services/blueprint-dashboard.yml.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | const plan_manager = plan.manager.name; 3 | %> 4 | 5 | plan: 6 | Manager: <%= plan_manager %> 7 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/config/tokens.csv.erb: -------------------------------------------------------------------------------- 1 | "<%= p("admin-password") %>","<%= p("admin-username") %>","<%= p("admin-username") %>","system:masters" 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/service-fabrik-broker"] 2 | path = src/github.com/cloudfoundry-incubator/service-fabrik-broker 3 | url = https://github.com/sap/service-fabrik-broker.git 4 | -------------------------------------------------------------------------------- /config/final.yml: -------------------------------------------------------------------------------- 1 | --- 2 | blobstore: 3 | provider: s3 4 | options: 5 | bucket_name: service-fabrik-os-boshrelease/service-fabrik-release-blobs 6 | signature_version: "2" 7 | final_name: service-fabrik 8 | -------------------------------------------------------------------------------- /packages/service-fabrik-broker/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: service-fabrik-broker 3 | dependencies: 4 | - node 5 | files: 6 | - github.com/cloudfoundry-incubator/service-fabrik-broker/**/* 7 | - node/node-v18.19.1-linux-x64.tar.xz 8 | -------------------------------------------------------------------------------- /packages/webhooks/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: webhooks 3 | 4 | dependencies: 5 | - golang 6 | 7 | files: 8 | - github.com/cloudfoundry-incubator/service-fabrik-broker/webhooks/**/* 9 | - golang/go1.21.7.linux-amd64.tar.gz 10 | -------------------------------------------------------------------------------- /packages/interoperator/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: interoperator 3 | 4 | dependencies: 5 | - golang 6 | 7 | files: 8 | - github.com/cloudfoundry-incubator/service-fabrik-broker/interoperator/**/* 9 | - golang/go1.21.7.linux-amd64.tar.gz 10 | -------------------------------------------------------------------------------- /packages/apiserver/packaging: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | APISERVER_VERSION="1.18.2" 4 | 5 | mkdir -p "${BOSH_INSTALL_TARGET:?}/bin" 6 | cp -a kubernetes-${APISERVER_VERSION}/kube-apiserver "${BOSH_INSTALL_TARGET:?}/bin" 7 | chmod +x "${BOSH_INSTALL_TARGET:?}/bin/kube-apiserver" 8 | -------------------------------------------------------------------------------- /packages/service-fabrik-deployment-hooks/spec: -------------------------------------------------------------------------------- 1 | --- 2 | name: service-fabrik-deployment-hooks 3 | dependencies: 4 | - node 5 | - libseccomp 6 | files: 7 | - github.com/cloudfoundry-incubator/service-fabrik-broker/**/* 8 | - node/node-v18.19.1-linux-x64.tar.xz 9 | -------------------------------------------------------------------------------- /packages/kubectl/packaging: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | KUBERENETES_RELEASE_VERSION="1.18.2" 4 | 5 | mkdir -p "${BOSH_INSTALL_TARGET:?}/bin" 6 | cp -a kubernetes-${KUBERENETES_RELEASE_VERSION}/kubectl "${BOSH_INSTALL_TARGET:?}/bin" 7 | chmod +x "${BOSH_INSTALL_TARGET:?}/bin/kubectl" 8 | -------------------------------------------------------------------------------- /jobs/webhooks/monit: -------------------------------------------------------------------------------- 1 | check process webhooks 2 | with pidfile /var/vcap/sys/run/bpm/webhooks/webhooks.pid 3 | depends on service-fabrik-apiserver 4 | start program "/var/vcap/jobs/bpm/bin/bpm start webhooks" 5 | stop program "/var/vcap/jobs/bpm/bin/bpm stop webhooks" 6 | group vcap -------------------------------------------------------------------------------- /jobs/iptables-manager/monit: -------------------------------------------------------------------------------- 1 | check process iptables-manager with pidfile /var/vcap/sys/run/iptables-manager/iptables-manager.pid 2 | start program "/var/vcap/jobs/iptables-manager/bin/iptables-manager_ctl start" 3 | stop program "/var/vcap/jobs/iptables-manager/bin/iptables-manager_ctl stop" 4 | group vcap 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | config/dev.yml 2 | config/private.yml 3 | config/settings.yml 4 | releases/**/*.tgz 5 | dev_releases 6 | blobs/* 7 | .blobs 8 | .dev_builds 9 | .vagrant 10 | .idea 11 | .DS_Store 12 | .final_builds/jobs/**/*.tgz 13 | .final_builds/packages/**/*.tgz 14 | *.swp 15 | *~ 16 | *# 17 | #* 18 | tmp 19 | my*.yml 20 | -------------------------------------------------------------------------------- /packages/bosh-helpers/packaging: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e # exit immediately if a simple command exits with a non-zero status 4 | set -u # report the usage of uninitialized variables 5 | 6 | # Copy Bosh Helpers package 7 | echo "Copying Bosh Helpers..." 8 | cp -a ${BOSH_COMPILE_TARGET}/bosh-helpers/* ${BOSH_INSTALL_TARGET}/ 9 | -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/monit: -------------------------------------------------------------------------------- 1 | check process service-fabrik-apiserver 2 | with pidfile /var/vcap/sys/run/bpm/service-fabrik-apiserver/service-fabrik-apiserver.pid 3 | start program "/var/vcap/jobs/bpm/bin/bpm start service-fabrik-apiserver" 4 | stop program "/var/vcap/jobs/bpm/bin/bpm stop service-fabrik-apiserver" 5 | group vcap 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | os: 3 | - linux 4 | before_install: 5 | - ./scripts/update 6 | - wget https://github.com/cloudfoundry/bosh-cli/releases/download/v5.4.0/bosh-cli-5.4.0-linux-amd64 7 | - chmod +x ./bosh-cli-5.4.0-linux-amd64 8 | - sudo mv ./bosh-cli-5.4.0-linux-amd64 /usr/local/bin/bosh 9 | script: 10 | - bosh create-release --force 11 | -------------------------------------------------------------------------------- /services/actions/ReserveIps.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const Promise = require('bluebird'); 4 | const BaseAction = require('./BaseAction'); 5 | 6 | class ReserveIps extends BaseAction { 7 | static executePreCreate(context) { 8 | return Promise.try(() => { 9 | return ['10.244.11.247']; 10 | }); 11 | } 12 | } 13 | 14 | module.exports = ReserveIps; -------------------------------------------------------------------------------- /jobs/service-fabrik-apiserver/templates/bin/post-start.erb: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | [ -z "$DEBUG" ] || set -x 4 | 5 | TIMEOUT=60 6 | 7 | if timeout "$TIMEOUT" /var/vcap/jobs/service-fabrik-apiserver/bin/ensure_apiserver_healthy 8 | then 9 | echo "Apiserver is healthy" 10 | else 11 | echo "Waited for ${TIMEOUT}s, but Apiserver is still not healthy" 12 | exit 1 13 | fi 14 | -------------------------------------------------------------------------------- /jobs/webhooks/templates/config/bpm.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | <% 3 | CONFIG_PATH = "/var/vcap/jobs/webhooks/config" 4 | %> 5 | processes: 6 | - name: webhooks 7 | executable: /var/vcap/packages/webhooks/bin/manager-webhooks 8 | args: 9 | - -stderrthreshold=<%= p('log_level') %> 10 | env: 11 | KUBECONFIG: <%= CONFIG_PATH %>/kubeconfig.yaml 12 | limits: 13 | open_files: 100000 14 | -------------------------------------------------------------------------------- /jobs/service-fabrik-interoperator/monit: -------------------------------------------------------------------------------- 1 | check process service-fabrik-interoperator 2 | with pidfile /var/vcap/sys/run/bpm/service-fabrik-interoperator/service-fabrik-interoperator.pid 3 | depends on service-fabrik-apiserver 4 | start program "/var/vcap/jobs/bpm/bin/bpm start service-fabrik-interoperator" 5 | stop program "/var/vcap/jobs/bpm/bin/bpm stop service-fabrik-interoperator" 6 | group vcap 7 | -------------------------------------------------------------------------------- /packages/yaml2json/packaging: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | set -u 4 | 5 | yaml2jsonbinary=yaml2json/yaml2json 6 | 7 | if [[ -f $yaml2jsonbinary ]] ; then 8 | echo "Binary: $yaml2jsonbinary found" 9 | else 10 | echo "Binary: $yaml2jsonbinary not found" 11 | exit 1 12 | fi 13 | 14 | chmod +x $yaml2jsonbinary 15 | mkdir -p "${BOSH_INSTALL_TARGET}"/bin/ 16 | cp -a "$yaml2jsonbinary" "${BOSH_INSTALL_TARGET}"/bin 17 | -------------------------------------------------------------------------------- /src/bosh-helpers/monit_debugger: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # USAGE monit_debugger