Skip to content

Commit

Permalink
Merge pull request #1 from cshunger/spurcing
Browse files Browse the repository at this point in the history
no more spiffing
  • Loading branch information
cshunger authored Dec 21, 2017
2 parents e3c66d2 + ddf7fd7 commit 31b2c59
Show file tree
Hide file tree
Showing 15 changed files with 1,101 additions and 1,043 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@ src/github.com/codegangsta/cli
/pkg/

bosh-lite/deployments/*
app-autoscaler-extension.zip
bosh
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.PHONY: extension
extension::
./scripts/update
zip -r app-autoscaler-extension.zip config manifests jobs packages scripts src templates extension-manifest.yml LICENSE NOTICE README.md
47 changes: 47 additions & 0 deletions example/example-policy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"instance_min_count": 1,
"instance_max_count": 5,
"scaling_rules": [{
"metric_type": "memoryutil",
"stat_window_secs": 300,
"breach_duration_secs": 600,
"threshold": 30,
"operator": "<",
"cool_down_secs": 300,
"adjustment": "-1"
}, {
"metric_type": "memoryutil",
"stat_window_secs": 300,
"breach_duration_secs": 600,
"threshold": 55,
"operator": ">=",
"cool_down_secs": 300,
"adjustment": "+1"
}],
"schedules": {
"timezone": "America/Los_Angeles",
"recurring_schedule": [{
"start_time": "01:00",
"end_time": "23:00",
"days_of_week": [
1,
2,
3,
4,
5,
6,
7
],
"instance_min_count": 1,
"instance_max_count": 5,
"initial_min_instance_count": 5
}],
"specific_date": [{
"start_date_time": "2016-06-02T10:00",
"end_date_time": "2018-06-15T13:59",
"instance_min_count": 1,
"instance_max_count": 4,
"initial_min_instance_count": 1
}]
}
}
84 changes: 45 additions & 39 deletions example/property-overrides.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
---
deployment_name: app-autoscaler-replease

default_db:
databases:
- {name: autoscaler, tag: default}
Expand All @@ -12,36 +14,38 @@ api_server_properties:
idle_timeout: 1000
max_connections: 10
min_connections: 0
uri: autoscaler.bosh-lite.com
port: 6100
publicPort: 6106
ca_cert: (( app_autoscaler_ca_cert ))
server_cert: (( apiserver_server_cert ))
server_key: (( apiserver_server_key))
public_ca_cert: (( app_autoscaler_public_ca_cert ))
public_server_cert: (( apiserver_public_server_cert ))
public_server_key: (( apiserver_public_server_key))
ca_cert: (( grab app_autoscaler_ca_cert ))
server_cert: (( grab apiserver_server_cert ))
server_key: (( grab apiserver_server_key))
public_ca_cert: (( grab app_autoscaler_public_ca_cert ))
public_server_cert: (( grab apiserver_public_server_cert ))
public_server_key: (( grab apiserver_public_server_key))
scheduler:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( scheduler_client_cert ))
client_key: (( scheduler_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab scheduler_client_cert ))
client_key: (( grab scheduler_client_key ))
scaling_engine:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( scalingengine_client_cert ))
client_key: (( scalingengine_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab scalingengine_client_cert ))
client_key: (( grab scalingengine_client_key ))
metrics_collector:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( metricscollector_client_cert ))
client_key: (( metricscollector_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab metricscollector_client_cert ))
client_key: (( grab metricscollector_client_key ))

service_broker_properties:
db_config:
idle_timeout: 1000
max_connections: 10
min_connections: 0
uri: autoscalerservicebroker.bosh-lite.com
port : 6101
ca_cert: (( app_autoscaler_ca_cert ))
server_cert: (( servicebroker_server_cert ))
server_key: ((servicebroker_server_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
server_cert: (( grab servicebroker_server_cert ))
server_key: (( grab servicebroker_server_key ))
username: username
password: password
http_request_timeout: 5000
Expand All @@ -57,22 +61,22 @@ service_broker_properties:
name: autoscaler-free-plan
description: This is the free service plan for the Auto-Scaling service.
api_server:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( apiserver_client_cert ))
client_key: (( apiserver_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab apiserver_client_cert ))
client_key: (( grab apiserver_client_key ))

scheduler_properties:
port: 6102
job_reschedule_interval_millisecond: 10000
job_reschedule_maxcount: 6
notification_reschedule_maxcount: 3
ca_cert: (( app_autoscaler_ca_cert ))
server_cert: (( scheduler_server_cert ))
server_key: (( scheduler_server_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
server_cert: (( grab scheduler_server_cert ))
server_key: (( grab scheduler_server_key ))
scaling_engine:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( scalingengine_client_cert ))
client_key: (( scalingengine_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab scalingengine_client_cert ))
client_key: (( grab scalingengine_client_key ))

cf_properties:
api: https://api.bosh-lite.com
Expand All @@ -93,19 +97,19 @@ metricscollector_properties:
port: 6103
collector:
refresh_interval: 30s
ca_cert: (( app_autoscaler_ca_cert ))
server_cert: (( metricscollector_server_cert ))
server_key: (( metricscollector_server_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
server_cert: (( grab metricscollector_server_cert ))
server_key: (( grab metricscollector_server_key ))

scalingengine_properties:
logging:
level: debug
defaultCoolDownSecs: 300
server:
port: 6104
ca_cert: (( app_autoscaler_ca_cert ))
server_cert: (( scalingengine_server_cert ))
server_key: (( scalingengine_server_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
server_cert: (( grab scalingengine_server_cert ))
server_key: (( grab scalingengine_server_key ))
consul:
cluster: http://127.0.0.1:8500

Expand All @@ -115,13 +119,15 @@ eventgenerator_properties:
defaultStatWindowSecs: 300
defaultBreachDurationSecs: 300
scaling_engine:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( scalingengine_client_cert ))
client_key: (( scalingengine_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab scalingengine_client_cert ))
client_key: (( grab scalingengine_client_key ))
metricscollector:
ca_cert: (( app_autoscaler_ca_cert ))
client_cert: (( metricscollector_client_cert ))
client_key: (( metricscollector_client_key ))
ca_cert: (( grab app_autoscaler_ca_cert ))
client_cert: (( grab metricscollector_client_cert ))
client_key: (( grab metricscollector_client_key ))

resource_pool: default

app_autoscaler_ca_cert: |
-----BEGIN CERTIFICATE-----
Expand Down
53 changes: 53 additions & 0 deletions extension-manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
extension:
name: app-autoscaler-cm-deploy
version: 1.0
type: bosh-release
uiconfig:
- name: ext_parameters
title: "Properties for external template sample"
properties:
- name: servicebroker_port
label: "Service broker port"
description: "Port to access service broker"
type: text
validation-regex: "^(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$"
mandatory: true
hidden: false
sample-value: "E.g. 35880"
- name: servicebroker_username
label: "Service broker username"
description: "User name for the service broker"
mandatory: true
sample-value: "E.g. admin"
default: "admin"
- name: servicebroker_password
label: "Service broker password"
type: password
mandatory: true
sample-value: "E.g. mypassword"
default: "admin"
- name: api-port
label: "API Port"
description: "Port for api"
type: text
validation-regex: "^(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$"
mandatory: true
hidden: false
sample-value: "E.g. 35880"
states:
- name: Sync Blobs
phase: "Syncing Bosh Blobs"
script: bosh2 sync-blobs
- name: Create Release
phase: "Creating a release for App Autoscaler"
script: bosh2 -e IBMCloudPrivate create-release --force --name app-autoscaler
- name: Upload Release
phase: "Uploading a release for App Autoscaler"
script: bosh2 upload-release -e IBMCloudPrivate -d app-autoscaler
- name: Generate deployment yaml
phase: "Generating the deployment yaml"
script: ./scripts/generate-bosh-lite-manifest -r ./manifests/cf-merge-property-overrides.yaml -p ./manifests/property-overrides.yaml -d ./manifests/db-stub-override.yaml -v v1
- name: Deploy App Autoscaler
phase: "Deploying App Autoscaler"
script: bosh2 deploy -e IBMCloudPrivate -d app-autoscaler ./bosh/deployments/autoscaler.yml -n

6 changes: 6 additions & 0 deletions manifests/cf-merge-property-overrides.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
properties: (( prune ))
jobs: (( prune ))
name: (( prune ))
releases: (( prune ))
update: (( prune ))
5 changes: 5 additions & 0 deletions manifests/config-from-cf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
config_from_cf:
properties:
consul: (( grab properties.consul ))
unbound: (( grab properties.unbound ))
nats: (( grab properties.nats ))
68 changes: 68 additions & 0 deletions manifests/db-stub-override.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
policydb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: policydb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: policydb}

schedulerdb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: schedulerdb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: schedulerdb}

scalingenginedb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: scalingenginedb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: scalingenginedb}

appmetricsdb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: appmetricsdb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: appmetricsdb}

instancemetricsdb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: instancemetricsdb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: instancemetricsdb}

bindingdb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: bindingdb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: bindingdb}

lockdb:
address: 192.168.243.203
databases:
- {name: autoscaler, tag: lockdb}
db_scheme: postgres
port: 5432
roles:
- {name: postgres, password: postgres, tag: lockdb}

instance_count_overrides:
- name: postgres
instances: 1

Loading

0 comments on commit 31b2c59

Please sign in to comment.