From 07dbfc8d63c2b83ea07a493224b7e9e59aaa8365 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Tue, 6 Aug 2019 20:57:50 +0100 Subject: [PATCH] feat(yamllint): include for this repo and apply rules throughout * Semi-automated using `ssf-formula` (v0.5.0) * Fix errors shown below: ```bash prometheus-formula$ $(grep "\- yamllint" .travis.yml | sed -e "s:^\s\+-\s\(.*\):\1:") ./prometheus/osfamilymap.yaml 1:89 error line too long (116 > 88 characters) (line-length) 1:24 error trailing spaces (trailing-spaces) 13:2 error syntax error: found character '%' that cannot start any token 24:89 error line too long (90 > 88 characters) (line-length) 25:89 error line too long (167 > 88 characters) (line-length) ./prometheus/defaults.yaml 6:13 error too many spaces inside braces (braces) 6:35 error too many spaces inside braces (braces) 7:11 error too many spaces inside braces (braces) 7:25 error too many spaces inside braces (braces) 8:22 warning truthy value should be one of [false, true] (truthy) 9:25 warning truthy value should be one of [false, true] (truthy) 49:85 error trailing spaces (trailing-spaces) 103:20 warning truthy value should be one of [false, true] (truthy) 104:25 warning truthy value should be one of [false, true] (truthy) 108:16 warning truthy value should be one of [false, true] (truthy) 113:24 warning missing starting space in comment (comments) pillar.example 31:6 warning missing starting space in comment (comments) 32:8 warning missing starting space in comment (comments) 32:7 warning comment not indented like content (comments-indentation) 51:5 warning comment not indented like content (comments-indentation) 65:89 error line too long (110 > 88 characters) (line-length) 68:29 error too many spaces after colon (colons) 68:34 warning too few spaces before comment (comments) 68:89 error line too long (106 > 88 characters) (line-length) 69:34 warning too few spaces before comment (comments) 69:89 error line too long (98 > 88 characters) (line-length) 75:9 error wrong indentation: expected 10 but found 8 (indentation) 76:11 error wrong indentation: expected 12 but found 10 (indentation) 77:13 warning comment not indented like content (comments-indentation) 79:89 error line too long (101 > 88 characters) (line-length) 81:9 warning comment not indented like content (comments-indentation) 86:89 error line too long (103 > 88 characters) (line-length) 91:11 error wrong indentation: expected 12 but found 10 (indentation) 106:15 error wrong indentation: expected 16 but found 14 (indentation) 108:41 warning too few spaces before comment (comments) 118:89 error line too long (96 > 88 characters) (line-length) 139:13 error wrong indentation: expected 14 but found 12 (indentation) 143:7 error wrong indentation: expected 8 but found 6 (indentation) 145:9 error wrong indentation: expected 10 but found 8 (indentation) 157:6 warning missing starting space in comment (comments) 158:20 error too many spaces inside braces (braces) 158:47 error too many spaces inside braces (braces) ``` --- .travis.yml | 13 +++++-- .yamllint | 16 ++++++++ pillar.example | 60 ++++++++++++++++------------- prometheus/defaults.yaml | 16 ++++---- prometheus/map.jinja | 8 ++++ prometheus/osfamilymap.yaml | 11 ++---- test/integration/default/inspec.yml | 3 ++ 7 files changed, 81 insertions(+), 46 deletions(-) create mode 100644 .yamllint diff --git a/.travis.yml b/.travis.yml index bbdf096..f2f1e52 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ --- stages: - test - - commitlint + - lint - name: release if: branch = master AND type != pull_request @@ -45,16 +45,21 @@ script: jobs: include: - # Define the commitlint stage - - stage: commitlint + # Define the `lint` stage (runs `yamllint` and `commitlint`) + - stage: lint language: node_js node_js: lts/* before_install: skip script: + # Install and run `yamllint` + - pip install --user yamllint + # yamllint disable-line rule:line-length + - yamllint -s . .yamllint pillar.example + # Install and run `commitlint` - npm install @commitlint/config-conventional -D - npm install @commitlint/travis-cli -D - commitlint-travis - # Define the release stage that runs semantic-release + # Define the release stage that runs `semantic-release` - stage: release language: node_js node_js: lts/* diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..3a90f57 --- /dev/null +++ b/.yamllint @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +# Extend the `default` configuration provided by `yamllint` +extends: default + +# Files to ignore completely +# 1. All YAML files under directory `node_modules/`, introduced during the Travis run +ignore: | + node_modules/ + +rules: + line-length: + # Increase from default of `80` + # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) + max: 88 diff --git a/pillar.example b/pillar.example index 83ba0a6..15f6a19 100644 --- a/pillar.example +++ b/pillar.example @@ -28,10 +28,10 @@ prometheus: prometheus: args: web.listen-address: 0.0.0.0:9090 - #pushgateway: - #args: - # web.listen-address: ":9091" - # web.telemetry-path: "/metrics" + # pushgateway: + # args: + # web.listen-address: ":9091" + # web.telemetry-path: "/metrics" node_exporter: args: web.listen-address: ":9110" @@ -54,41 +54,45 @@ prometheus: # dirs: # files: files_alt # default: default_alt - # source_files: - # prometheus-config-file-file-managed: - # - 'example_alt.tmpl' - # - 'example_alt.tmpl.jinja' + source_files: + prometheus-config-file-file-managed: + - 'alt_config.yml.jinja' # Pillar-based config config: prometheus: + # yamllint disable-line rule:line-length # ref https://raw.githubusercontent.com/prometheus/prometheus/release-2.10/config/testdata/conf.good.yml # my global config global: - scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. - evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # Set the scrape interval to every 15 seconds. Default is every 1 minute. + scrape_interval: 15s + # Evaluate rules every 15 seconds. The default is every 1 minute. + evaluation_interval: 15s # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - - static_configs: - - targets: - # - alertmanager:9093 + - static_configs: + - targets: + # - alertmanager:9093 - # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. + # Load rules once and periodically evaluate them according to the global + # 'evaluation_interval'. rule_files: - # - "first_rules.yml" + - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: scrape_configs: - # The job name is added as a label `job=` to any timeseries scraped from this config. + # The job name is added as a label `job=` to any timeseries + # scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - - targets: ['localhost:9090'] + - targets: ['localhost:9090'] - job_name: pushgateway scrape_interval: 5s @@ -103,9 +107,9 @@ prometheus: module: [http_2xx] # Look for a HTTP 200 response. static_configs: - targets: - - http://prometheus.io # Target to probe with http. - - https://prometheus.io # Target to probe with https. - - http://example.com:8080 # Target to probe with http on port 8080. + - http://prometheus.io # Target to probe with http. + - https://prometheus.io # Target to probe with https. + - http://example.com:8080 # Target to probe with http on port 8080. relabel_configs: - source_labels: [__address__] target_label: __param_target @@ -115,6 +119,7 @@ prometheus: replacement: 127.0.0.1:9115 # The blackbox exporter's real hostname:port. alertmanager: + # yamllint disable-line rule:line-length # ref https://github.com/prometheus/alertmanager/blob/master/config/testdata/conf.good.yml global: smtp_smarthost: 'localhost:25' @@ -136,13 +141,13 @@ prometheus: service: ^(foo1|foo2|baz)$ receiver: team-X-mails routes: - - match: - severity: critical - receiver: team-X-mails + - match: + severity: critical + receiver: team-X-mails receivers: - - name: 'team-X-mails' - email_configs: - - to: 'team-X+alerts@example.org' + - name: 'team-X-mails' + email_configs: + - to: 'team-X+alerts@example.org' inhibit_rules: - name: opsGenie-receiver @@ -154,5 +159,6 @@ prometheus: image_url: 'http://some.img.com/img.png' linux: - #'Alternatives system' priority: zero disables (default) + # 'Alternatives system' priority: zero disables (default) + # yamllint disable-line rule:braces altpriority: {{ range(1, 9100000) | random }} diff --git a/prometheus/defaults.yaml b/prometheus/defaults.yaml index 65ee034..dff19c5 100644 --- a/prometheus/defaults.yaml +++ b/prometheus/defaults.yaml @@ -3,10 +3,12 @@ --- prometheus: rootgroup: root + # yamllint disable rule:braces kernel: {{ grains.kernel | lower }} arch: {{ grains.osarch }} - use_upstream_repo: False - use_upstream_archive: False + # yamllint enable rule:braces + use_upstream_repo: false + use_upstream_archive: false wanted: - prometheus @@ -46,7 +48,7 @@ prometheus: gpgcheck: 1 alertmanager: archive_version: '0.17.0' - archive_hash: 7c8d2cfeb021c80881ae9904d959131091b8785b6fda9800f84ddef148fe0a4f + archive_hash: 7c8d2cfeb021c80881ae9904d959131091b8785b6fda9800f84ddef148fe0a4f binaries: - amtool - alertmanager @@ -100,14 +102,14 @@ prometheus: uri: https://github.com/prometheus suffix: tar.gz kwargs: - trim_output: True - enforce_toplevel: True + trim_output: true + enforce_toplevel: true archive_format: tar retry: attempts: 3 - until: True + until: true interval: 60 splay: 10 linux: - altpriority: 0 ##'Alternatives system' priority: zero disables (default) + altpriority: 0 ## 'Alternatives system' priority: zero disables (default) diff --git a/prometheus/map.jinja b/prometheus/map.jinja index ac49be0..419a833 100644 --- a/prometheus/map.jinja +++ b/prometheus/map.jinja @@ -21,6 +21,14 @@ {#- Merge the prometheus pillar #} {%- set prometheus = salt['pillar.get']('prometheus', default=defaults, merge=True) %} +{#- Post-processing for specific non-YAML customisations #} +{%- if grains.os == 'MacOS' %} +{%- set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %} +{%- set macos_group = salt['cmd.run']("stat -f '%Sg' /dev/console") %} +{%- do prometheus.update({'rootuser': macos_user}) %} +{%- do prometheus.update({'rootgroup': macos_group}) %} +{%- endif %} + {#- Contactenate arguments #} {%- macro concat_args(args) %} {%- set args = args|dictsort %} diff --git a/prometheus/osfamilymap.yaml b/prometheus/osfamilymap.yaml index 09c7867..f28397a 100644 --- a/prometheus/osfamilymap.yaml +++ b/prometheus/osfamilymap.yaml @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # vim: ft=yaml # # Setup variables using grains['os_family'] based logic. @@ -10,19 +10,16 @@ # you will need to provide at least an empty dict in this file, e.g. # osfamilymap: {} --- -{%- if grains.os == 'MacOS' %} - {% set macos_user = salt['cmd.run']("stat -f '%Su' /dev/console") %} - {% set macos_group = salt['cmd.run']("stat -f '%Sg' /dev/console") %} -{%- endif %} - Debian: {} RedHat: pkg: prometheus: repo: + # yamllint disable rule:line-length baseurl: 'https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch' gpgkey: 'https://packagecloud.io/prometheus-rpm/release/gpgkey gpgkey2=https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm' + # yamllint enable rule:line-length metadata_expire: 300 Suse: {} @@ -114,8 +111,6 @@ Windows: archive_hash: 9362b7482e74792f111c4bb1a372b18a88f6354c78f24713bacfbcb050883556 MacOS: - rootuser: {{ macos_user | d('') }} - rootgroup: {{ macos_group | d('') }} kernel: darwin pkg: prometheus: diff --git a/test/integration/default/inspec.yml b/test/integration/default/inspec.yml index fbe59ca..d739b63 100644 --- a/test/integration/default/inspec.yml +++ b/test/integration/default/inspec.yml @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- name: default title: prometheus formula maintainer: SaltStack Formulas