70 Commits
Author SHA1 Message Date
Taylor Silva 5127ffca66 Deprecate the stable/concourse chart (#19128)
Future development is now at github.com/concourse/concourse-chart

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
2019-11-26 14:05:20 -08:00
Jamie KlassenandJames Thomson 5a33da9adf [stable/concourse] Concourse v5.6.0 (#17078)
* add lidar-related parameters

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
Co-authored-by: James Thomson <jthomson@pivotal.io>

* add redact-secrets param

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
Co-authored-by: James Thomson <jthomson@pivotal.io>

* bump versions

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
Co-authored-by: James Thomson <jthomson@pivotal.io>

* add secret not found cache duration parameter

Signed-off-by: James Thomson <jthomson@pivotal.io>
Co-authored-by: Jamie Klassen <cklassen@pivotal.io>

* add log-cluster-name parameter

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
Co-authored-by: James Thomson <jthomson@pivotal.io>

* add lidar {scanner,checker} intervals

Signed-off-by: James Thomson <jthomson@pivotal.io>
Co-authored-by: Jamie Klassen <cklassen@pivotal.io>

* bump imageTag

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
Co-authored-by: James Thomson <jthomson@pivotal.io>

* fall through to concourse binary defaults

and mention version in README.md

Signed-off-by: James Thomson <jthomson@pivotal.io>
Co-authored-by: Jamie Klassen <cklassen@pivotal.io>
2019-10-02 08:01:07 -07:00
Zoe TianandZoe Tian 96c33a2365 [stable/concourse] add parameters for 5.5 (#15978)
This commit adds the new parameters that were added to Concourse 5.5.

Here's a breakdown of the new parameters:

- max-active-tasks-per-worker

  > used by the `limit-active-tasks` container placement strategy
  > https://github.com/concourse/concourse/pull/4118

- support for influxdb batching and bigger buffer size for metrics emissions

  > https://github.com/concourse/concourse/pull/3937

- limitting number of max connections in db conn pools

  > https://github.com/concourse/concourse/pull/4232

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
Co-authored-by: Zoe Tian <ztian@pivotal.io>
2019-09-06 07:42:58 -07:00
Ciro S. CostaandBishoy Youssef 9bf87bc95b [stable/concourse] add missing credhub mtls auth (#15541)
Previously (https://github.com/helm/charts/pull/14545), configuration
was added to allow folks to leverage CredHub as a credential management
for Concourse.

While that allowed people to have that functionality, it was only
partially implemented - mutual TLS was still missing.

This commit aims at addressing that by introducing a
`authenticationMode` key that allows one to either specify certificates
for the authentication, or certificates:

```yaml
concourse:
  web:
    credhub:
      enabled: true
      authenticationMode: "secrets"
secrets:
  credhubClientId: $client_id
  credhubClientSecret: $client_secret
```

or

```yaml
concourse:
  web:
    credhub:
      enabled: true
      authenticationMode: "mtls"
secrets:
  credhubClientKey: $key
  credhubClientCert: $cert
```

In case none of them are set, it fails to render.

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
Co-authored-by: Bishoy Youssef <byoussef@pivotal.io>
2019-07-26 08:23:59 -07:00
Taylor SilvaandJamie Klassen 6208360cb1 [stable/concourse] Bump image tag to 5.4.0 (#15718)
* Bump image tag to 5.4.0

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
Co-authored-by: Jamie Klassen <cklassen@pivotal.io>

* [stable/concourse] Update README.md

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
Co-authored-by: Jamie Klassen <cklassen@pivotal.io>
2019-07-19 10:53:12 -07:00
Zabielski, Kamil 4b86045303 [stable/concourse]: Add a default prefix (#15412)
* [concourse]: Add a default prefix

This commit adds a default value for prefix, pre reference:
https://docs.datadoghq.com/integrations/concourse_ci/.
It avoids emitting custom metrics.

Signed-off-by: Zabielski, Kamil <kamil.zabielski@lintops.tech>

* Add agentPort; fix README order

Signed-off-by: Zabielski, Kamil <kamil.zabielski@lintops.tech>

* Make values in README sorted alphabetically

Signed-off-by: Zabielski, Kamil <kamil.zabielski@lintops.tech>

* Cut duplicate in values, in README

Signed-off-by: Zabielski, Kamil <kamil.zabielski@lintops.tech>
2019-07-12 06:25:05 -07:00
Ciro S. Costa d2860446f7 [stable/concourse] updates pg subchart (0.13.1 -> 5.3.8) (#14945)
There's been a long time since the last upgrade that we did to the
subchart that Concourse optionally depends on.

With the upgrade, some values set in the `postgresql` chart changed. As
those are exposed in `concourse`'s `values` too (and we version our
Chart based on its public interface - values.yaml), this made it deserve
a major version bump.

For those users not making use of the subchart (or changing the default
values), no changes ar necessary.

For those who *are* configuring `postgresql.*` values - changes will
almost certainly be necessary.

closes #11610

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-06-21 05:52:36 -07:00
taha-au 7b5e1137e4 [stable/concourse] allow additional concourse worker and web pod labels (#14914)
Signed-off-by: taha-au <taha@autonomic.ai>
2019-06-20 06:04:49 -07:00
Taylor SilvaandTaylor Silva ea5deb49c5 [stable/concourse] Update image tag to 5.3.0 (#14786)
* [stable/concourse] Update image tag to 5.3.0

Signed-off-by: Bin Ju <bju@pivotal.io>
Co-authored-by: Taylor Silva <tsilva@pivotal.io>
Signed-off-by: Bin Ju <bju@pivotal.io>

* [stable/concourse] Update readme with correct imageTag value

Signed-off-by: Bin Ju <bju@pivotal.io>
Co-authored-by: Taylor Silva <tsilva@pivotal.io>
2019-06-13 11:10:20 -07:00
Aaron Gershman 087932063c [stable/concourse] credhub credential manager options (#14545)
* [stable/concourse] credhub credential manager options

Signed-off-by: Aaron Gershman <aegershman@gmail.com>

* [stable/concourse] template for client id and secret

Signed-off-by: Aaron Gershman <aegershman@gmail.com>
2019-06-13 10:26:20 -07:00
Yann David 9022489897 [stable/concourse] Add possibility to set strategy for rollingUpdates (web) (#13616)
* Add possibility to set strategy for rollingUpdates (web)

Signed-off-by: Yann David <davidyann88@gmail.com>

* Bump minor instead of patch

Signed-off-by: Yann David <davidyann88@gmail.com>
2019-05-10 09:47:58 -07:00
Bishoy YoussefandBishoy Youssef 8e93db665c stable/concourse: separate worker, web deployments (#12920)
* stable/concourse: separate worker, web deployments

- Added .Values.Web.enabled and .Values.worker.enabled (with default to
true).
- if only .Values.web.enable is enabled: only web resources are going to
be created, as well as secrets namespace.
- if only .Values.worker.enable is enabled: only worker resources are going to
be created.
- moved the worker specific and web specific secrets each to a seprate
file and secrets object.
- added .Values.concourse.worker.tsa.port and utilised
.Values.concourse.worker.host in order to alow the user to set the
`CONCOURSE_TSA_HOST` easily.
- removed the template `concourse.concourse.fullname` as it is not used
anymore.
- bumped the chart version to 6.0.0, as this adds new ways to use the
chart.
- added the new variables to the README doc.

for the issue: helm/charts#11280

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
Co-authored-by: Bishoy Youssef <byoussef@pivotal.io>
Signed-off-by: Taylor Silva <tsilva@pivotal.io>

* [stable/concourse] bumping chart version and updating the Readme

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
Co-authored-by: Bishoy Youssef <byoussef@pivotal.io>

* Adds a required check yaml for having either the web or worker enabled

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* Adds required for concourse.worker.tsa in case of worker only deployments

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* updates readme

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* adds changelog file

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* Apply suggestions from code review

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>
2019-04-25 13:30:32 -07:00
tareks 0cf752adac Allow AWS role based authentication to Secrets Manager and Systems Manager (#10237)
* Bumped major chart version

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Added documentation to explain how authentication paramters work.

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Added new keyauth variables and conditionals to match them for secrets manager and systems manager. Session token must now be explictly enabled if used.

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Fixed typo with awsSsm paramter name

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Fixed minor version

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Uncommented session token flag and set default to false.

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>

* Added missing backticks that broke formatting

Signed-off-by: Tarek Mokhtar <tareks01@yahoo.co.nz>
2019-04-03 06:19:42 -07:00
Bishoy Youssef 4a5da30350 [stable/concourse] Easier way to add team external workers (#12056)
* [stable/concourse] Easier way to add team workers

- Previously, in order to add an external worker to the web deployment,
worker keys were to be added as a seprate secret or a config map and
then mounted as an addtional volume to the web pod.

- With this feature, only team names and public keys are to be added to
the secrets as an array and the creation of secrets and mounting the
volumes is done automatically.

- Also, removed `.Values.concourse.Web.teamAuthorizedKeys` as it won't
be used anymore.

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* fixing per Ciro's comments

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* concourse/stable bump major version

- also, fixing linting error.

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* adds security caveats and extra reads

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>

* rename teamKeys to teamAuthorizedKeys

Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>
2019-03-15 13:48:57 -07:00
Ciro S. Costa 907b57881b [stable/concourse] Upgrade to 5.0.0 (#11876)
* [stable/concourse] Upgrade to 5.0 (breaking)

This commit provides the necessary updates to fully support the latest
version of Concourse: 5.0.

BREAKING:
- `concourse.web.auth.mainTeam.allowAllUsers`, which was previously used
  to allow any logged user to be part of `main`, has now been removed;

- `concourse.worker.bindDebugPort` is now
  `concourse.worker.debugBindPort`;

- `concourse.worker.baggageclaim.bindDebugPort` is now
  `concourse.worker.baggageclaim.debugBindPort`;

- `concourse.worker.garden.*` variables that would previously turn into
  environment variables that got translated to `gdn`-specfic tunings are
  not values that can be set through `concourse.worker.garden` anymore.
  These can still be provided through environment variables though -
  `CONCOURSE_GARDEN_...` works as before.

DEPRECATIONS:
- `concourse.worker.peerIp` is not used anymore;
- `worker.fatalErrors` are not used anymore in favor of worker
   healthchecks through a specific port (`worker-hc`) in the worker
   container.

ENHANCEMENTS:
- reduced complexity in the liveness probe for the worker, removing the
  need for custom scripts to verify its health;
- bitbucket cloud is now supported through
  `secrets.bitbucket-cloud-client*` and other `concourse.web.*`
  configurations;
- AWS region settings can now be configured at environment-var level
  instead of arguments;
- garden configuration can be specified through `ini` files that can be
  passed through `configmap`s;
- RBAC configuration for local users can be specified through
  `configmap`s
- ability to opt-out of the automatic removal of
  `concourse.worker.workDir` contents
- ability to specify whether `land`ing or `retire`ing should be
  performed when terminating the worker pod (through the configuration
  of `worker.shutdownSignal`);
- ability to specify custom readinessProbe for the worker;
- more consistent `values.yaml` examples and documentation.

Concourse-specific release notes (that are do not affect the Chart
structure itself) can be found in the Concourse website:

- https://concourse-ci.org/download.html#v500

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>

* [stable/concourse] Updates README to match values for 5.0

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-03-09 08:15:28 -08:00
Ciro S. CostaandCiro S. Costa 8a35ac6804 [stable/concourse] allow specifying sidecar containers (#11507)
Signed-off-by: Bishoy Youssef <byoussef@pivotal.io>
Co-authored-by: Ciro S. Costa <cscosta@pivotal.io>
2019-02-25 17:18:03 -08:00
Ciro S. Costa 68d82cb304 [stable/concourse] Adds additional volumes and volumeMounts to web (#10885)
Previously, it was not possible to include neither additional volumes
nor volume mounts to the web instance.

This ends up prohibiting and operator of specifying configuration for
team authorized keys, or any other future configuration that might
depend on files on disk.

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-01-25 10:11:49 -08:00
Ciro S. Costa 292034451b [stable/concourse] add warning about test user; updates README (#10766)
This commit improves:

- notes regarding the use of the default `test:test` default user that
  concourse adds; and
- README instructions
  - so that we don't use the future tense too much; and
  - instructions regarding credential management and postgresql match the
    actual `values.yml` structure.

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-01-24 11:00:39 -08:00
Richard Godden df3d664764 Webservice labels (#10808)
* specify additional labels for web service

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* added web service labels to README

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* bump version

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* bump version

Signed-off-by: David J. M. Karlsen <david@davidkarlsen.com>
2019-01-21 14:13:05 -08:00
Richard Godden b4450a688c [stable/concourse] Specify secrets mount path (#9364)
* control the mount paths of the secret keys and certs

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* added variables to readme

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* secrets mountpath now has defaults

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* using web and worker keys to specify secrets mount path

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* lint

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* changed secrets path keys in README

Signed-off-by: Richard Godden <goddenrich@gmail.com>

* setting secret mount path defaults in the values.yaml instead of the templates

Signed-off-by: rgodden <rgodden@thoughtmachine.net>

* specifying mount path for tls

Signed-off-by: rgodden <rgodden@thoughtmachine.net>

* bump version

Signed-off-by: rgodden <rgodden@thoughtmachine.net>
2019-01-18 14:47:25 -08:00
Ciro S. Costa f67e0722e0 [stable/concourse] Adds imagepullSecrets support (#9614)
`imagePullSecrets` can now be specified in order to
be able to pull the image from a registry that requires
auth.

closes helm/charts#9228.

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-01-14 15:08:34 -08:00
Ciro S. Costa 35c9af9569 [stable/concourse] makes Web probes configurable (#9906)
Following the example set by the grafana chart (see [1]), this commit
turns `web` probes into configurable entities.

It also makes use of `/api/v1/info` as the default endpoint for
performing the requests against so `web` doesn't return the whole
initial page as a return value (instead, just a very small json from
`/api/v1/info`).

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-01-14 14:18:46 -08:00
Ciro S. Costa 7df723f4c4 [stable/concourse] Improves use of TLS certs (#9665)
Previously, configuring ATC as an HTTPS-enabled service wasn't
an easy thing to do.

After this commit, such capability is achieved by configuring
the `tls` object under `concourse.web`:

    concourse:
      web:
        tls: { enabled: true , bindPort: 443 }

With that configured, a cert and a key gets injected into the
containers via secrets:

    secrets:
      webTlsCert: |
        <my_cert_chain>
      webTlsKey: |
        <my_private_key>

Which are then referenced in the right environment variables and
exposed in the service using the proper port.

Signed-off-by: Ciro S. Costa <cscosta@pivotal.io>
2019-01-14 13:55:00 -08:00
Richard Alberto 65f730c1b5 Limit emptyDir size (#9207)
Signed-off-by: Richard Alberto <r@richardalberto.com>
2019-01-14 12:21:26 -08:00
Carlos Tadeu Panato Junior fbbdec5174 bump concourse to 4.2.2 (#9920)
Signed-off-by: cpanato <ctadeu@gmail.com>
2018-12-12 05:30:22 -08:00
Chris Hiestand 5397ec2808 concourse: move vault auth param to secret (#8094)
vault auth params are sensitive credentials and should be treated as
secret

This returns auth params functionality closer to concourse chart v1.16.1,
but it is a breaking change compared to that version

Signed-off-by: Chris Hiestand <chrishiestand@gmail.com>
2018-11-07 22:30:03 -08:00
Rui Yang 263bc80322 [stable/concourse] Upgrade to Concourse 4.2.1 and rekey values to enable automated synchronization between helm values and env vars (#7804)
* [stable/concourse] Refactor values.yml to map concourse binary commands

* support concourse version 4.1

* update auth

* refactor credentialsManager and metrics sections in values.yml

* allow config concourse parameters through env insteand of args for
flexibility

Signed-off-by: Rui Yang <ryang@pivotal.io>

* [stable/concourse] add postgresql secrets for its sslmod

*remove check guard for required secrets

*typo fixes

Signed-off-by: Rui Yang <ryang@pivotal.io>

* [stable/concourse] fix prometheus port reference

Signed-off-by: Rui Yang <ryang@pivotal.io>

* [stable/concourse] quotes env vars that take a list of values

Signed-off-by: Rui Yang <ryang@pivotal.io>

* [stable/concourse] bump concourse version to 4.2.1

Signed-off-by: Rui Yang <ryang@pivotal.io>

* [stable/concourse] quote int variables

Signed-off-by: Rui Yang <ryang@pivotal.io>
2018-09-28 12:40:23 -07:00
Divya Dadlani ea32ae30dc Allow user to specify a static IP for the Concourse loadbalancer (#6503)
* Allow user to specify a static IP for the Concourse loadbalancer

Signed-off-by: Divya Dadlani <ddadlani@pivotal.io>

* update readme with loadBalancerIP entry; bump version to 1.15.0;

* update readme description of looadBalancerIP
2018-07-27 11:18:57 -07:00
Yann David 72dff23c94 [ stable/concourse ] Add optional values for additional volumes and volumeMounts (#6232)
* Add optional values for additional volumes and volumeMounts

* I have an addiction to additions...

* Add value to override working directory

* Bump minor instead of patch

* Add readme update for new attributes.

* Version bump to 1.15.0

* revert bump to 1.14.0
2018-07-17 08:14:39 -07:00
Norbert Buchmüller c636df8f6f [stable/concourse] add support for custom envvars for the web containers (#6441) 2018-07-15 06:43:55 -07:00
Kamil Szczygieł b657379f2e [Concourse] add nodeSelector for web (#6267)
* [concourse] add nodeselector for web

* bump chart version

* typo

* update values.yaml and README

* bump chart version

* Bump minor version for new feature
2018-07-02 13:07:28 -07:00
Kurt McAlpine de0a9b1293 Add support for AWS Secrets Manager (#6245)
* Add support for AWS Secrets Manager

* Rename credentialManager.secretsmanager to credentialManager.awsSecretsManager

* Bump minor version for new feature
2018-06-26 08:48:51 -07:00
AdamDang d399a8c548 [stable/concourse] correct the parameter name (#6283)
* Update Chart.yaml

* [stable/concourse] Fix typo in parameter name

worker.anotation->worker.annotation
2018-06-25 16:09:22 -07:00
Richard Alberto 7616eb1d14 Add influxdb metrics flags (#6004) 2018-06-18 12:12:31 -07:00
Naoki Ainoya 3e56f7f43e [stable/concourse]Fix variable name in README (#6105)
* Fix variable name in README

* [stable/concourse] Bump chart version
2018-06-17 13:11:29 -07:00
Dan Wendorf 7577980954 [stable/concourse] Add optional datadog metrics config (#5650)
Concourse 3.13.0 adds support for exporting metrics to Datadog (see
https://github.com/concourse/atc/pull/269). This adds support for the
new flags, and bumps the Concourse version.
2018-05-30 07:57:54 -07:00
Daniel Whatmuff fde5856486 Adding HTTPS using AWS ACM with whitelisting option to the concourse chart (#5594)
* adding https option to use ACM in AWS and also whitelisting for service type LoadBalancer

* fixing check for range of IPs

* removing extraneous space

* adding description of value

* bumping version

* bumping to 1.6.0
2018-05-24 10:05:32 -07:00
AdamDang c58b3128d4 [stable/concourse] fix failed links in README.md (#5528)
* Bump version

version: 1.5.1

* [stable/concourse] fix failed links in README.md

[stable/concourse] fix failed links in README.md
2018-05-11 11:31:29 -07:00
Brian Martin 1f171942ef concourse: Add annotations for web deployment (#5074)
* concourse: Add annotations for web deployment

* Update Chart.yaml

* Update values.yaml

* Update README.md
2018-05-11 01:07:55 -07:00
josecv 613d3bbdde [stable/concourse] hard antiaffinity for workers (#5324) 2018-05-03 13:45:51 -07:00
Chengfei Shang 9becbd858a [stable/concourse]fix typo in README.md (#4941) 2018-04-26 19:36:17 -07:00
Will Tran 1b8bf760d3 Prevent the secrets namespace from being deleted (#4821) 2018-04-13 08:58:59 -07:00
Chengfei Shang 226a8cce66 fix typo: rbac->RBAC (#4889) 2018-04-11 02:15:55 -07:00
Dylan Arbour 1b2e6ddda2 Update Concourse to 3.10 (#4542) 2018-04-05 12:02:08 -07:00
Ma Huihuang 0498018d97 fix grammar_mistake (#4672)
* fix grammar_mistake

* Update version

Update version
2018-04-05 11:00:10 -07:00
Kai Chen 378d3e3fdd concourse: Small fixes in README and templates (#4484)
* concourse: Small fixes in README and templates

* Update chart version (version got bumped since the earlier PR)
2018-03-29 00:04:05 -07:00
AdamDang bafdaf7fe8 Update stable/concourse/README.md (#4488)
* Add version for concourse

Add version for concourse

* Update README.md

Delete the duplicated word "Volume volume"
2018-03-28 14:02:03 -07:00
Dylan Arbour 7bad0e0087 Fix Vault for cert and token auth (#4425)
* Fix Vault for `cert` and `token` auth

- `caCert` was renamed to `useCaCert` but not in README or values.yaml
- `vault-client-key` and `vault-client-cert` should only need to be set
  when the auth mode has been set to `cert`. Without the check, `approle`
  and `token` auth will fail (due to Go not being able to parse the PEM
  of "")

* Bump minor
2018-03-28 06:43:03 -07:00
AdamDang 2181fef6c9 Typo fix in concourse/README.md (#4303)
* add version for concourse

add version for concourse

* Typo fix in concourse/README.md

Typo fix in concourse/README.md
2018-03-21 04:18:01 -07:00
Dylan Arbour 4027621cdb [stable/concourse] Change Concourse links (#4092)
Concourse.ci was hijacked and the team has made the decision to move to
https://concourse-ci.org:

https://medium.com/concourse-ci/were-switchin-domains-5597dcd0b48b
2018-03-10 18:59:11 -08:00