diff --git a/vitess-mixin/.env b/vitess-mixin/.env deleted file mode 100644 index 2dd23ee5572..00000000000 --- a/vitess-mixin/.env +++ /dev/null @@ -1,15 +0,0 @@ -TOPOLOGY_FLAGS=--topo_implementation consul --topo_global_server_address consul1:8500 --topo_global_root vitess/global -GRPC_PORT=15999 -WEB_PORT=8080 -MYSQL_PORT=15306 - -CELL=local -KEYSPACE=commerce -DB=commerce - -EXTERNAL_DB=0 -DB_HOST=external_db_host -DB_PORT=3306 -DB_USER=external_db_user -DB_PASS=external_db_password -DB_CHARSET=CHARACTER SET utf8 COLLATE utf8_general_ci \ No newline at end of file diff --git a/vitess-mixin/.gitignore b/vitess-mixin/.gitignore deleted file mode 100644 index eb410a1f9e8..00000000000 --- a/vitess-mixin/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -*.yaml -dashboards_out -prometheus_alerts.yaml -prometheus_rules.yaml -jsonnetfile.lock.json -vendor -.vscode/ diff --git a/vitess-mixin/Makefile b/vitess-mixin/Makefile deleted file mode 100644 index 267bc569312..00000000000 --- a/vitess-mixin/Makefile +++ /dev/null @@ -1,91 +0,0 @@ -.PHONY: dashboards_out prometheus_alerts.yaml prometheus_rules.yaml test tools all e2e e2e-dev e2e-compose-up e2e-compose-down lint fmt - -help: #: Show this message. - @echo "\nAvailable Targets:\n" - @sed -ne '/@sed/!s/#: //p' $(MAKEFILE_LIST) - -all: #: format all .jsonnet/.libsonnet files, generate all dashboards json, alerts and rules yaml - @make tools - @make clean > /dev/null - @make fmt > /dev/null - @make test - @make dashboards_out > /dev/null - @make prometheus_rules.yaml > /dev/null - -fmt: #: Usage make fmt - @echo "# Formatting all .libsonnet and .jsonnet files...\n" - @scripts/fmt.sh - @echo "\nDone!\n" - -a.yaml: #: Build prometheus alerts - @echo "# Building 'prometheus_alerts.yaml'...\n" - @jsonnet -S lib/alerts.jsonnet > $@ - @echo "\nDone!\n" - -prometheus_rules.yaml: #: Build prometheus rules - @echo "# Building 'prometheus_rules.yaml'...\n" - @jsonnet -S lib/rules.jsonnet > $@ - @echo "\nDone!\n" - -dashboards_out: #: Generate Grafana Dashboards Usage: `ENV='prod' make dashboards_out` - @echo "# Building Grafana dashboards...\n" - @make clean > /dev/null - @mkdir -p dashboards_out - @[ "${ENV}" = 'dev' ] || [ "${ENV}" = 'prod' ] || ( echo -e "##ERROR\nPlease specify ENV (prod or dev)"; exit 1) - @jsonnet -J vendor --ext-str env="${ENV}" -m dashboards_out lib/dashboards.jsonnet - @echo "\nDone!\n" - -lint: #: Usage: make lint - @echo "# Linting all .libsonnet and .jsonnet files...\n" - @scripts/fmt.sh --check - @echo "\nDone!\n" - @echo "# Linting 'prometheus_rules.yaml'...\n" - @make prometheus_rules.yaml > /dev/null - @promtool check rules prometheus_rules.yaml - @echo "Done!\n" - -clean: #: Delete generated dashboards (/dashboards_out) Usage: make clean - @echo "# Cleaning up all generated files...\n" - @rm -rf dashboards_out prometheus_alerts.yaml prometheus_rules.yaml > /dev/null - @echo "\nDone!\n" - -test: #: Compare your .json generated dashboards local version with the origin/main version. - @make clean > /dev/null - @ENV=${ENV} scripts/vitess-mixin-plan.sh - @make clean > /dev/null - -tools: tools.go - @# -mod='' tells go to ignore the vendor/ directory - @cat $^ | grep _ | awk -F'"' '{print $$2}' | xargs -I% go install -mod='' % - @jb install - @jb update https://github.com/grafana/grafonnet-lib/grafonnet > /dev/null 2>&1 - - -E2E_GRAFANA_VERSION ?= 7.3.6 - -e2e: #: Run all Grafana end-to-end tests. - GRAFANA_VERSION=${E2E_GRAFANA_VERSION} \ - docker-compose -f e2e/docker-compose.yml up \ - --abort-on-container-exit \ - --exit-code-from e2e \ - --remove-orphans - -e2e-dev: #: Run Grafana e2e tests in Cypress test runner. - GRAFANA_VERSION=${E2E_GRAFANA_VERSION} \ - DISPLAY=$$(ipconfig getifaddr en0):0 \ - docker-compose -f e2e/docker-compose.dev.yml up \ - --abort-on-container-exit \ - --exit-code-from e2e \ - --remove-orphans - -e2e-compose-up: #: Run Grafana e2e environment spining Prometheus and Vitess in the backend. - GRAFANA_VERSION=${E2E_GRAFANA_VERSION} \ - COMPOSE_HTTP_TIMEOUT=200 \ - DISPLAY=$$(ipconfig getifaddr en0):0 \ - docker-compose -f e2e/docker-compose.vt.yml up \ - --remove-orphans - -e2e-compose-down: #: Clean docker compose resources - @docker-compose -f e2e/docker-compose.vt.yml down -v --remove-orphans - @rm e2e/grafana/provisioning/dashboards/*.json - @rm e2e/prometheus/prometheus_rules.yaml diff --git a/vitess-mixin/README.md b/vitess-mixin/README.md deleted file mode 100644 index 695a943295c..00000000000 --- a/vitess-mixin/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# (Beta) Monitoring Mixin for Vitess - -A set of Grafana dashboards, Prometheus rules and alerts for Vitess, packaged together in a reusable and extensible bundle. - -## 🔁 Prerequisites - -1. Go (programming language) - - Install binaries using the official [installer](https://golang.org/dl/) - - Ensure `GOPATH` variable is set in your system. See instructions [here](https://golang.org/doc/install#install). Here below there's a sample config: - - ```shell - export GOPATH=$HOME/go - export PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" - ``` - -1. Install the go tools: `make tools`, `jb`, `jsonnet`, `jsonnetfmt`, and `promtool` should now be in `$GOPATH/bin`. - -1. Install the dependencies by running: `jb install` - -## ℹ️ How-to - -Customize `config.libsonnet` based on your setup. Example: specify the `dataSource` name (default to `Prometheus_Vitess`). You can then generate: - -- Prometheus alerts: `$ make prometheus_alerts.yaml` -(Note: This files is empty because the current version of the mixin uses Grafana Alerts) - -- Prometheus rules: `$ make prometheus_rules.yaml` - -- Grafana dashboard: `$ ENV='prod' make dashboards_out` (Supported environments are `dev` and `prod`). - -The `prometheus_alerts.yaml` and `prometheus_rules.yaml` file then need to passed to your Prometheus server, and the files in `dashboards_out` need to be imported into you Grafana server. - -## 👩‍💻 Development - -If you want to contribute please read [Vitess mixin quickstart guide](vitess-mixin-quickstart.md) - -## 📚 Useful links & further learning - -- For more information about monitoring mixins, see this [design doc](https://docs.google.com/document/d/1A9xvzwqnFVSOZ5fD3blKODXfsat5fg6ZhnKu9LK3lB4/edit#). -- For more motivation, see -"[The RED Method: How to instrument your services](https://kccncna17.sched.com/event/CU8K/the-red-method-how-to-instrument-your-services-b-tom-wilkie-kausal?iframe=no&w=100%&sidebar=yes&bg=no)" talk from CloudNativeCon Austin. diff --git a/vitess-mixin/alerts/alerts.libsonnet b/vitess-mixin/alerts/alerts.libsonnet deleted file mode 100644 index 732a682f8b6..00000000000 --- a/vitess-mixin/alerts/alerts.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -{ - prometheusAlerts+:: { - - }, -} diff --git a/vitess-mixin/config.libsonnet b/vitess-mixin/config.libsonnet deleted file mode 100644 index 8c8f69ca0ee..00000000000 --- a/vitess-mixin/config.libsonnet +++ /dev/null @@ -1,74 +0,0 @@ -{ - _config+:: { - - // Selectors are inserted between {} in Prometheus queries. - vtctldSelector: 'job="vitess-vtctld"', - vtgateSelector: 'job="vitess-vtgate"', - vttabletSelector: 'job="vitess-vttablet"', - vtgateNodeSelector: 'job="node-exporter-vitess-vtgate"', - mysqlSelector: 'job="mysql"', - defaultTimeFrom: 'now-30m', - vttabletMountpoint: '/mnt', - - // Datasource to use - dataSource: 'Prometheus', - nodeDataSource: 'Prometheus', - - // Default config for the Grafana dashboards in the Vitess Mixin - grafanaDashboardMetadataDefault: { - dashboardNameSuffix: '(auto-generated)', - dashboardAlertPrefix: 'alerts', - dashboardTags: ['vitess-mixin'], - }, - - dashborardLinks: { - title: 'vitess-mixin', - tags: ['vitess-mixin'], - keepTime: true, - includeVars: false, - }, - - // Grafana dashboard IDs are necessary for stable links for dashboards - grafanaDashboardMetadata: { - - local defaultDashboard = { - environments: ['dev', 'prod'], - time_from: $._config.defaultTimeFrom, - }, - - // Overview - clusterOverview+: defaultDashboard { - uid: 'vitess-cluster-overview', - title: 'cluster - overview %(dashboardNameSuffix)s' % $._config.grafanaDashboardMetadataDefault, - description: 'General cluster overview', - dashboardTags: $._config.grafanaDashboardMetadataDefault.dashboardTags + ['overview', 'cluster'], - }, - vtgateOverview+: defaultDashboard { - uid: 'vitess-vtgate-overview', - title: 'vtgate - overview %(dashboardNameSuffix)s' % $._config.grafanaDashboardMetadataDefault, - description: 'General vtgate overview', - dashboardTags: $._config.grafanaDashboardMetadataDefault.dashboardTags + ['overview', 'vtgate'], - }, - - // Host View - vttabletHostView+: defaultDashboard { - uid: 'vitess-vttablet-host-view', - title: 'vttablet - host view %(dashboardNameSuffix)s' % $._config.grafanaDashboardMetadataDefault, - description: 'Detailed vttablet host view', - dashboardTags: $._config.grafanaDashboardMetadataDefault.dashboardTags + ['vttablet', 'host'], - }, - vtgateHostView+: defaultDashboard { - uid: 'vitess-vtgate-host-view', - title: 'vtgate - host view %(dashboardNameSuffix)s' % $._config.grafanaDashboardMetadataDefault, - description: 'Detailed vtgate view by host', - dashboardTags: $._config.grafanaDashboardMetadataDefault.dashboardTags + ['vtgate', 'host'], - }, - }, - }, - - os: import 'dashboards/resources/config/os_config.libsonnet', - vttablet: import 'dashboards/resources/config/vttablet_config.libsonnet', - vtgate: import 'dashboards/resources/config/vtgate_config.libsonnet', - mysql: import 'dashboards/resources/config/mysql_config.libsonnet', - row: import 'dashboards/resources/config/row_config.libsonnet', -} diff --git a/vitess-mixin/dashboards/dashboards.libsonnet b/vitess-mixin/dashboards/dashboards.libsonnet deleted file mode 100644 index 5840e4b5228..00000000000 --- a/vitess-mixin/dashboards/dashboards.libsonnet +++ /dev/null @@ -1,5 +0,0 @@ -(import 'layouts/cluster_overview.libsonnet') + -(import 'layouts/vtgate_host_view.libsonnet') + -(import 'layouts/vtgate_overview.libsonnet') + -(import 'layouts/vttablet_host_view.libsonnet') + -(import 'defaults.libsonnet') diff --git a/vitess-mixin/dashboards/defaults.libsonnet b/vitess-mixin/dashboards/defaults.libsonnet deleted file mode 100644 index d94de1fab09..00000000000 --- a/vitess-mixin/dashboards/defaults.libsonnet +++ /dev/null @@ -1,24 +0,0 @@ -{ - local grafanaDashboards = super.grafanaDashboards, - - grafanaDashboards:: { - [filename]: grafanaDashboards[filename] { - // Modify tooltip to only show a single value - rows: [ - row { - panels: [ - panel { - tooltip+: { - shared: false, - }, - } - for panel in super.panels - ], - } - for row in super.rows - ], - - } - for filename in std.objectFields(grafanaDashboards) - }, -} diff --git a/vitess-mixin/dashboards/layouts/cluster_overview.libsonnet b/vitess-mixin/dashboards/layouts/cluster_overview.libsonnet deleted file mode 100644 index 6db716c982c..00000000000 --- a/vitess-mixin/dashboards/layouts/cluster_overview.libsonnet +++ /dev/null @@ -1,56 +0,0 @@ -local helpers = import '../resources/grafonnet/helpers/helpers.libsonnet'; -local panels = import '../resources/grafonnet/panels.libsonnet'; -local rows = import '../resources/grafonnet/rows.libsonnet'; -local singlestats = import '../resources/grafonnet/singlestats.libsonnet'; -local templates = import '../resources/grafonnet/templates.libsonnet'; -local texts = import '../resources/grafonnet/texts.libsonnet'; - -local config = import '../../config.libsonnet'; - -{ - grafanaDashboards+:: { - 'cluster_overview.json': - - helpers.dashboard.getDashboard(config._config.grafanaDashboardMetadata.clusterOverview) - .addTemplates([ - templates.interval, - ]) - .addLink(helpers.default.getDashboardLink(config._config.dashborardLinks)) - .addPanels([ - texts.clusterOverview { gridPos: { h: 3, w: 24, x: 0, y: 0 } }, - singlestats.vtgateSuccessRate { gridPos: { h: 4, w: 4, x: 0, y: 3 } }, - singlestats.vttabletQuerySuccess { gridPos: { h: 4, w: 4, x: 4, y: 3 } }, - helpers.vtgate.getSingleStat(config.vtgate.singlestats.vtgateQueryLatencyP99) { gridPos: { h: 4, w: 4, x: 8, y: 3 } }, - helpers.vtgate.getSingleStat(config.vtgate.singlestats.vtgateQPS) { gridPos: { h: 2, w: 4, x: 12, y: 3 } }, - helpers.vttablet.getSingleStat(config.vttablet.singlestats.vttabletQPS) { gridPos: { h: 2, w: 4, x: 12, y: 5 } }, - singlestats.mysqlQPS { gridPos: { h: 2, w: 4, x: 16, y: 3 } }, - singlestats.keyspaceCount { gridPos: { h: 2, w: 2, x: 16, y: 3 } }, - singlestats.shardCount { gridPos: { h: 2, w: 2, x: 18, y: 3 } }, - singlestats.vtgateUp { gridPos: { h: 2, w: 2, x: 20, y: 3 } }, - singlestats.vtctldUp { gridPos: { h: 2, w: 2, x: 20, y: 5 } }, - singlestats.vttabletUp { gridPos: { h: 2, w: 2, x: 22, y: 3 } }, - - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequests) { gridPos: { h: 6, w: 8, x: 0, y: 7 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRate) { gridPos: { h: 6, w: 8, x: 8, y: 7 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99) { gridPos: { h: 6, w: 8, x: 16, y: 7 } }, - - rows.RED { gridPos: { h: 1, w: 24, x: 0, y: 13 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequestsByKeyspace) { gridPos: { h: 8, w: 8, x: 0, y: 14 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRateByKeyspace) { gridPos: { h: 8, w: 8, x: 8, y: 14 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99ByKeyspace) { gridPos: { h: 8, w: 8, x: 16, y: 14 } }, - - rows.tabletsQueries { gridPos: { h: 1, w: 24, x: 0, y: 22 } }, - helpers.vttablet.getPanel(config.vttablet.panels.countServingTablets) { gridPos: { h: 8, w: 8, x: 0, y: 23 } }, - helpers.mysql.getPanel(config.mysql.panels.mysqlSlowQueries) { gridPos: { h: 8, w: 8, x: 8, y: 23 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryTransactionKilled) { gridPos: { h: 8, w: 8, x: 16, y: 23 } }, - - rows.serviceRestart { gridPos: { h: 1, w: 24, x: 0, y: 31 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRestart) { gridPos: { h: 8, w: 8, x: 0, y: 32 } }, - panels.vtctldRestart { gridPos: { h: 8, w: 8, x: 8, y: 32 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRestart) { gridPos: { h: 8, w: 8, x: 16, y: 32 } }, - - helpers.mysql.getPanel(config.mysql.panels.mysqlRestart) { gridPos: { h: 8, w: 8, x: 16, y: 40 } }, - ]), - - }, -} diff --git a/vitess-mixin/dashboards/layouts/vtgate_host_view.libsonnet b/vitess-mixin/dashboards/layouts/vtgate_host_view.libsonnet deleted file mode 100644 index 139999e09fc..00000000000 --- a/vitess-mixin/dashboards/layouts/vtgate_host_view.libsonnet +++ /dev/null @@ -1,49 +0,0 @@ -local heatmaps = import '../resources/grafonnet/heatmaps.libsonnet'; -local helpers = import '../resources/grafonnet/helpers/helpers.libsonnet'; -local rows = import '../resources/grafonnet/rows.libsonnet'; -local singlestats = import '../resources/grafonnet/singlestats.libsonnet'; -local templates = import '../resources/grafonnet/templates.libsonnet'; -local texts = import '../resources/grafonnet/texts.libsonnet'; - -local config = import '../../config.libsonnet'; - -// TODO: add connections info - -{ - grafanaDashboards+:: { - 'vtgate_host_view.json': - - helpers.dashboard.getDashboard(config._config.grafanaDashboardMetadata.vtgateHostView) - .addTemplates([ - templates.hostVtgate, - ]) - .addLink(helpers.default.getDashboardLink(config._config.dashborardLinks)) - .addPanels([ - texts.vtgateHost { gridPos: { h: 3, w: 24, x: 0, y: 0 } }, - rows.RED { gridPos: { h: 1, w: 24, x: 0, y: 4 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequestsByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 5 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRateByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 5 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99ByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 5 } }, - rows.REDByTabletType.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequestsByInstanceDBType) { gridPos: { h: 7, w: 8, x: 0, y: 9 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRateByInstanceDBType) { gridPos: { h: 7, w: 8, x: 8, y: 9 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99ByInstanceDBType) { gridPos: { h: 7, w: 8, x: 16, y: 9 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 8 } }, - rows.errors.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorsByInstanceKeyspace) { gridPos: { h: 7, w: 8, x: 0, y: 17 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorsByInstanceCode) { gridPos: { h: 7, w: 8, x: 8, y: 17 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 16 } }, - rows.duration.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationAVGByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 25 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP50ByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 25 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP95ByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 25 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 24 } }, - rows.OS.addPanels([ - helpers.os.getPanel(config.os.panels.CPUUsageByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 33 } }, - helpers.os.getPanel(config.os.panels.MemoryUsageByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 33 } }, - helpers.os.getPanel(config.os.panels.NetworkUsageByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 33 } }, - helpers.os.getPanel(config.os.panels.TCPRetransmissionsByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 40 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 32 } }, - ]), - }, -} diff --git a/vitess-mixin/dashboards/layouts/vtgate_overview.libsonnet b/vitess-mixin/dashboards/layouts/vtgate_overview.libsonnet deleted file mode 100644 index b2c14eb8563..00000000000 --- a/vitess-mixin/dashboards/layouts/vtgate_overview.libsonnet +++ /dev/null @@ -1,58 +0,0 @@ -local heatmaps = import '../resources/grafonnet/heatmaps.libsonnet'; -local helpers = import '../resources/grafonnet/helpers/helpers.libsonnet'; -local rows = import '../resources/grafonnet/rows.libsonnet'; -local singlestats = import '../resources/grafonnet/singlestats.libsonnet'; -local templates = import '../resources/grafonnet/templates.libsonnet'; -local texts = import '../resources/grafonnet/texts.libsonnet'; - -local config = import '../../config.libsonnet'; - -// TODO: add connections info - -{ - grafanaDashboards+:: { - 'vtgate_overview.json': - - helpers.dashboard.getDashboard(config._config.grafanaDashboardMetadata.vtgateOverview) - .addLink(helpers.default.getDashboardLink(config._config.dashborardLinks)) - .addPanels([ - texts.vtgateOverview { gridPos: { h: 3, w: 24, x: 0, y: 0 } }, - - rows.RED { gridPos: { h: 1, w: 24, x: 0, y: 4 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequests) { gridPos: { h: 7, w: 8, x: 0, y: 5 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRate) { gridPos: { h: 7, w: 8, x: 8, y: 5 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99) { gridPos: { h: 7, w: 8, x: 16, y: 5 } }, - - rows.REDByKeyspace.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequestsByKeyspace) { gridPos: { h: 7, w: 8, x: 0, y: 13 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRateByKeyspace) { gridPos: { h: 7, w: 8, x: 8, y: 13 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99ByKeyspace) { gridPos: { h: 7, w: 8, x: 16, y: 13 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 12 } }, - - rows.REDByTabletType.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateRequestsByDBType) { gridPos: { h: 7, w: 8, x: 0, y: 21 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorRateByDBType) { gridPos: { h: 7, w: 8, x: 8, y: 21 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP99ByDBType) { gridPos: { h: 7, w: 8, x: 16, y: 21 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 20 } }, - - rows.errors.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorsByCode) { gridPos: { h: 7, w: 8, x: 0, y: 29 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorsByOperation) { gridPos: { h: 7, w: 8, x: 8, y: 29 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateErrorsByDbtype) { gridPos: { h: 7, w: 8, x: 16, y: 29 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 28 } }, - - rows.duration.addPanels([ - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationAVG) { gridPos: { h: 7, w: 8, x: 0, y: 37 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP50) { gridPos: { h: 7, w: 8, x: 8, y: 37 } }, - helpers.vtgate.getPanel(config.vtgate.panels.vtgateDurationP95) { gridPos: { h: 7, w: 8, x: 16, y: 37 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 36 } }, - - rows.OS.addPanels([ - helpers.os.getPanel(config.os.panels.CPUUsage) { gridPos: { h: 7, w: 8, x: 0, y: 45 } }, - helpers.os.getPanel(config.os.panels.MemoryUsage) { gridPos: { h: 7, w: 8, x: 8, y: 45 } }, - helpers.os.getPanel(config.os.panels.NetworkUsage) { gridPos: { h: 7, w: 8, x: 16, y: 45 } }, - helpers.os.getPanel(config.os.panels.TCPRetransmissions) { gridPos: { h: 7, w: 8, x: 16, y: 52 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 44 } }, - ]), - }, -} diff --git a/vitess-mixin/dashboards/layouts/vttablet_host_view.libsonnet b/vitess-mixin/dashboards/layouts/vttablet_host_view.libsonnet deleted file mode 100644 index 7148deb44ee..00000000000 --- a/vitess-mixin/dashboards/layouts/vttablet_host_view.libsonnet +++ /dev/null @@ -1,103 +0,0 @@ -local heatmaps = import '../resources/grafonnet/heatmaps.libsonnet'; -local helpers = import '../resources/grafonnet/helpers/helpers.libsonnet'; -local rows = import '../resources/grafonnet/rows.libsonnet'; -local templates = import '../resources/grafonnet/templates.libsonnet'; -local texts = import '../resources/grafonnet/texts.libsonnet'; - -local config = import '../../config.libsonnet'; -local rows_helper = helpers.default; - -{ - grafanaDashboards+:: { - 'vttablet_host_view.json': - - helpers.dashboard.getDashboard(config._config.grafanaDashboardMetadata.vttabletHostView) - .addTemplates( - [ - templates.hostVttablet, - ] - ).addLink(helpers.default.getDashboardLink(config._config.dashborardLinks)) - .addPanels( - [ - texts.vttabletHost { gridPos: { h: 3, w: 24, x: 0, y: 0 } }, - - rows.RED { gridPos: { h: 1, w: 24, x: 0, y: 4 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRequestsByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 5 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletErrorRateByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 5 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryDurationP99ByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 5 } }, - - rows.REDByPlanType.addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRequestsByPlanType) { gridPos: { h: 7, w: 8, x: 0, y: 13 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletErrorRateByPlanFilteredByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 13 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryDurationP99ByPlan) { gridPos: { h: 7, w: 8, x: 16, y: 13 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 12 } }, - - rows.REDByTable.addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRequestsByTableFilteredByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 29 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletErrorRateByTableFilteredByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 29 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 28 } }, - - rows.rowsReturned.addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRowsReturnedByTableFilteredByInstance) { gridPos: { h: 7, w: 12, x: 0, y: 37 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletRowsReturnedByPlansFilterByInstance) { gridPos: { h: 7, w: 12, x: 12, y: 37 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 36 } }, - - rows_helper.getRow(config.row.queryErrors).addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueriesKilled) { gridPos: { h: 7, w: 8, x: 0, y: 45 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryErrorsByType) { gridPos: { h: 7, w: 8, x: 8, y: 45 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 44 } }, - - rows.vitessQueryPool.addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryPoolAvailableConnections) { gridPos: { h: 7, w: 8, x: 0, y: 52 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryPoolActiveConnections) { gridPos: { h: 7, w: 8, x: 8, y: 52 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryPoolIddleClosedRate) { gridPos: { h: 7, w: 8, x: 16, y: 52 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryPoolWaitCount) { gridPos: { h: 7, w: 8, x: 0, y: 59 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryPoolAvgWaitTime) { gridPos: { h: 7, w: 8, x: 8, y: 59 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 51 } }, - - rows.vitessTransactionPool.addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionPoolAvailableConnections) { gridPos: { h: 7, w: 8, x: 0, y: 67 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionPoolActiveConnections) { gridPos: { h: 7, w: 8, x: 8, y: 67 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionPoolIddleClosedRate) { gridPos: { h: 7, w: 8, x: 16, y: 67 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionPoolWaitCount) { gridPos: { h: 7, w: 8, x: 0, y: 74 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionPoolAvgWaitTime) { gridPos: { h: 7, w: 8, x: 8, y: 74 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 66 } }, - - rows_helper.getRow(config.row.vitessTimings).addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryDurationAvgByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 82 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryDurationP50ByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 82 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletQueryDurationP95ByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 82 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionDurationAvgByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 89 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionDurationP50ByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 89 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletTransactionDurationP95ByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 89 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vtgateToVtTabletCallTimeAvgFilteredByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 86 } }, - heatmaps.vttabletQueryTimeDistribution { gridPos: { h: 7, w: 16, x: 8, y: 86 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 81 } }, - - rows.mysql.addPanels([ - helpers.mysql.getPanel(config.mysql.panels.mysqlSlowQueriesByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 94 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 93 } }, - - rows_helper.getRow(config.row.mysqlTimings).addPanels([ - helpers.vttablet.getPanel(config.vttablet.panels.vttabletMysqlTimeAvgFilteredByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 102 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletMysqlExecTimeP50FilterebyInstance) { gridPos: { h: 7, w: 8, x: 8, y: 102 } }, - helpers.vttablet.getPanel(config.vttablet.panels.vttabletMysqlExecTimeP95FilterebyInstance) { gridPos: { h: 7, w: 8, x: 16, y: 102 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 101 } }, - - rows.OS.addPanels([ - helpers.os.getPanel(config.os.panels.CPUUsageByInstance) { gridPos: { h: 7, w: 8, x: 0, y: 110 } }, - helpers.os.getPanel(config.os.panels.MemoryUsageByInstance) { gridPos: { h: 7, w: 8, x: 8, y: 110 } }, - helpers.os.getPanel(config.os.panels.DiskUsageByInstance) { gridPos: { h: 7, w: 8, x: 16, y: 110 } }, - helpers.os.getPanel(config.os.panels.NetworkTxByInstance) { gridPos: { h: 7, w: 12, x: 0, y: 117 } }, - helpers.os.getPanel(config.os.panels.NetworkRxByInstance) { gridPos: { h: 7, w: 12, x: 12, y: 117 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 109 } }, - - rows_helper.getRow(config.row.misc).addPanels([ - helpers.os.getPanel(config.vttablet.panels.vttabletGarbageCollectionCount) { gridPos: { h: 7, w: 8, x: 0, y: 125 } }, - helpers.os.getPanel(config.vttablet.panels.vttabletGarbageCollectionDuration) { gridPos: { h: 7, w: 8, x: 8, y: 125 } }, - helpers.os.getPanel(config.vttablet.panels.vttabletGarbageCollectionDurationQuantiles) { gridPos: { h: 7, w: 8, x: 16, y: 125 } }, - ]) { gridPos: { h: 1, w: 24, x: 0, y: 124 } }, - ], - ), - }, -} diff --git a/vitess-mixin/dashboards/resources/config/configuration_templates.libsonnet b/vitess-mixin/dashboards/resources/config/configuration_templates.libsonnet deleted file mode 100644 index 6f1f85da0a3..00000000000 --- a/vitess-mixin/dashboards/resources/config/configuration_templates.libsonnet +++ /dev/null @@ -1,125 +0,0 @@ -local config = import '../../../config.libsonnet'; - -{ - //Override default_panel values with custom configuration - prometheus_vitess: { - panel: { - - datasource: { - datasource: '%(dataSource)s' % config._config, - }, - - default+: self.datasource { - fill: 0, - legend_alignAsTable: true, - legend_values: true, - min: 0, - shared_tooltip: false, - }, - - legend_max+: self.default { - legend_max: true, - }, - - legend_min_max_avg+: self.default { - legend_max: true, - legend_min: true, - legend_avg: true, - }, - - legend_min_max_current+: self.default { - legend_max: true, - legend_min: true, - legend_current: true, - }, - - null_as_zeros+: self.default { - nullPointMode: 'null as zero', - }, - - mysql_default+: self.default { - legend_max: true, - legend_sort: 'max', - }, - - orc_default+: self.default { - legend_current: true, - legend_rightSide: true, - legend_sort: 'current', - legend_sortDesc: false, - pointradius: 5, - sort: 'none', - }, - - vitess_vttablet_host_view+: self.mysql_default { - legend_current: true, - legend_min: true, - legend_sort: 'current', - legend_sortDesc: true, - }, - - go_gc_seconds+: self.legend_max { - format: 's', - }, - - go_gc_ops+: self.legend_max { - format: 'ops', - }, - - mysql_timings+: self.legend_min_max_avg { - legend_sort: 'max', - legend_sortDesc: true, - format: 's', - }, - - vtgate_to_vttablet_calls: self.legend_min_max_avg + self.null_as_zeros { - format: 's', - legend_sortDesc: true, - legend_sort: 'max', - }, - - }, - }, - - prometheus_node: { - panel: { - default: { - datasource: '%(nodeDataSource)s' % config._config, - fill: 0, - legend_alignAsTable: true, - legend_current: true, - legend_sort: 'current', - legend_sortDesc: true, - legend_values: true, - min: 0, - sort: 'decreasing', - }, - - percent_panel: self.default { - format: 'percentunit', - legend_min: true, - legend_max: true, - }, - - null_as_zeros+: self.default { - nullPointMode: 'null as zero', - }, - - vttablet_host_view: self.percent_panel { - legend_avg: true, - legend_current: false, - legend_sort: 'max', - }, - - performance_analysis_short: self.percent_panel { - format: 'short', - legend_min: false, - legend_max: false, - }, - - performance_analysis_seconds+: self.performance_analysis_short { - format: 's', - }, - }, - }, -} diff --git a/vitess-mixin/dashboards/resources/config/mysql_config.libsonnet b/vitess-mixin/dashboards/resources/config/mysql_config.libsonnet deleted file mode 100644 index 543e3565902..00000000000 --- a/vitess-mixin/dashboards/resources/config/mysql_config.libsonnet +++ /dev/null @@ -1,87 +0,0 @@ -local config = import '../../../config.libsonnet'; -local configuration_templates = import './configuration_templates.libsonnet'; -local vitess_ct = configuration_templates.prometheus_vitess; - -// TODO: move local template variables and fields to ./configuration_templates.libsonnet. -{ - // TODO: add description for each panel. - panels: { - - local panel_template = vitess_ct.panel.mysql_default, - local vttablet_host_view_panel_template = vitess_ct.panel.vitess_vttablet_host_view, - - // TODO Create a recording rule for the prometheus target. - mysqlRestart: panel_template { - title: 'MySQL (by keyspace/shard)', - bars: true, - format: 'short', - legend_sort: 'max', - legend_sortDesc: false, - lines: false, - sort: 'increasing', - targets: [ - { - expr: ||| - count by (keyspace, shard) ( - idelta ( - mysql_global_status_uptime{ - %(mysqlSelector)s - }[5m] - ) < 0 - ) - ||| % config._config, - legendFormat: '{{keyspace}}/{{shard}}', - }, - ], - }, - - // TODO Create a recording rule for the prometheus target. - mysqlSlowQueries: panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Slow queries', - format: 'cps', - legend_min: true, - legend_current: true, - legend_sort: 'current', - legend_sortDesc: true, - sort: 'decreasing', - nullPointMode: 'null as zero', - targets: [ - { - expr: ||| - sum ( - rate( - mysql_global_status_slow_queries{ - %(mysqlSelector)s - }[$interval] - ) - ) - ||| % config._config, - legendFormat: 'Slow Queries', - }, - ], - }, - - // TODO Create a recording rule for the prometheus target. - mysqlSlowQueriesByInstance: vttablet_host_view_panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Slow Queries', - format: 'ops', - targets: [ - { - expr: ||| - sum by(instance)( - rate( - mysql_global_status_slow_queries{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - }, -} diff --git a/vitess-mixin/dashboards/resources/config/os_config.libsonnet b/vitess-mixin/dashboards/resources/config/os_config.libsonnet deleted file mode 100644 index 8451311cb1b..00000000000 --- a/vitess-mixin/dashboards/resources/config/os_config.libsonnet +++ /dev/null @@ -1,384 +0,0 @@ -/** This is a configuration file containing metadata for OS (Prometheus Node) grafana resources. */ - -local config = import '../../../config.libsonnet'; -local configuration_templates = import './configuration_templates.libsonnet'; -local node_ct = configuration_templates.prometheus_node; - -// TODO: move local template variables and fields to ./configuration_templates.libsonnet. -{ - // TODO: add description for each panel. - panels: { - - local vtgate_panel_template = node_ct.panel.percent_panel, - local vttablet_host_view_panel_template = node_ct.panel.vttablet_host_view, - - CPUUsage: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'CPU Usage', - targets: [ - { - expr: - ||| - 1 - - avg ( - rate( - node_cpu_seconds_total{ - %(vtgateNodeSelector)s, - mode="idle" - }[1m] - ) - ) - ||| % config._config, - legendFormat: 'cpu usage', - }, - ], - }, - - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - CPUUsageByInstance: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'CPU Usage', - targets: [ - { - expr: - ||| - 1 - - avg by (instance)( - rate( - node_cpu_seconds_total{ - instance=~"$host", - mode="idle" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - MemoryUsage: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'Memory Usage', - targets: [ - { - expr: - ||| - 1 - - sum ( - node_memory_MemAvailable_bytes{ - %(vtgateNodeSelector)s - } - ) - / - sum ( - node_memory_MemTotal_bytes{ - %(vtgateNodeSelector)s - } - ) - ||| % config._config, - legendFormat: 'Memory Usage', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - MemoryUsageByInstance: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'Memory Usage', - targets: [ - { - expr: - ||| - 1 - - sum by (instance)( - node_memory_MemAvailable_bytes{ - instance=~"$host" - } - ) - / - sum by (instance)( - node_memory_MemTotal_bytes{ - instance=~"$host" - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - TCPRetransmissions: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'TCP Retransmissions', - targets: [ - { - expr: - ||| - sum ( - rate( - node_netstat_Tcp_RetransSegs{ - %(vtgateNodeSelector)s - }[1m] - ) - ) - / - sum ( - rate( - node_netstat_Tcp_OutSegs{ - %(vtgateNodeSelector)s - }[1m] - ) - ) - ||| % config._config, - legendFormat: 'TCP retransmissions', - }, - ], - }, - - TCPRetransmissionsByInstance: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'TCP Retransmissions', - targets: [ - { - expr: - ||| - sum by (instance) ( - rate( - node_netstat_Tcp_RetransSegs{ - instance=~"$host" - }[1m] - ) - ) - / - sum by (instance) ( - rate( - node_netstat_Tcp_OutSegs{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - NetworkUsage: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'Network Usage', - format: 'bps', - min: null, - seriesOverrides: [ - { - alias: '/egress .*/', - transform: 'negative-Y', - }, - ], - targets: [ - { - expr: - ||| - sum ( - rate( - node_network_receive_bytes_total{ - %(vtgateNodeSelector)s - }[5m] - ) - ) - * 8 - ||| % config._config, - legendFormat: 'ingress', - }, - { - expr: - ||| - sum ( - rate( - node_network_transmit_bytes_total{ - %(vtgateNodeSelector)s - }[5m] - ) - ) - * 8 - ||| % config._config, - legendFormat: 'egress', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - NetworkUsageByInstance: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: 'Network Usage', - format: 'Bps', - min: null, - seriesOverrides: [ - { - alias: '/egress .*/', - transform: 'negative-Y', - }, - ], - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - node_network_receive_bytes_total{ - instance=~"$host" - }[5m] - ) - ) - ||| % config._config, - legendFormat: 'ingress - {{instance}}', - }, - { - expr: - ||| - sum by (instance)( - rate( - node_network_transmit_bytes_total{ - instance=~"$host" - }[5m] - ) - ) - ||| % config._config, - legendFormat: 'egress - {{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - NetworkUsageByInstanceFilteredByShardKeyspace: - vttablet_host_view_panel_template - + node_ct.panel.null_as_zeros { - title: 'Network Usage', - format: 'bps', - min: null, - seriesOverrides: [ - { - alias: '/egress .*/', - transform: 'negative-Y', - }, - ], - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - node_network_receive_bytes_total{ - keyspace="$keyspace", - shard=~"$shard", - instance=~"$host" - }[5m] - ) - ) - * 8 - |||, - legendFormat: 'ingress - {{instance}}', - }, - { - expr: - ||| - sum by (instance)( - rate( - node_network_transmit_bytes_total{ - keyspace="$keyspace", - shard=~"$shard", - instance=~"$host" - }[5m] - ) - ) - * 8 - |||, - legendFormat: 'egress - {{instance}}', - }, - ], - }, - - NetworkRxByInstance: - vttablet_host_view_panel_template - + node_ct.panel.null_as_zeros { - title: 'Network Rx Bytes', - format: 'bps', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - node_network_receive_bytes_total{ - instance=~"$host" - }[1m] - ) - ) - * 8 - |||, - legendFormat: 'ingress - {{instance}}', - }, - ], - }, - - NetworkTxByInstance: - vttablet_host_view_panel_template - + node_ct.panel.null_as_zeros { - title: 'Network Tx Bytes', - format: 'bps', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - node_network_transmit_bytes_total{ - instance=~"$host" - }[1m] - ) - ) - * 8 - |||, - legendFormat: 'egress - {{instance}}', - }, - ], - }, - - DiskUsageByInstance: - vtgate_panel_template - + node_ct.panel.null_as_zeros { - title: '/mnt disk free', - min: null, - targets: [ - { - expr: - ||| - avg by(instance)( - node_filesystem_avail_bytes{ - instance=~"$host", - mountpoint="%(vttabletMountpoint)s" - } - / - node_filesystem_size_bytes{ - instance=~"$host", - mountpoint="%(vttabletMountpoint)s" - } - ) - ||| % config._config, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - }, -} diff --git a/vitess-mixin/dashboards/resources/config/row_config.libsonnet b/vitess-mixin/dashboards/resources/config/row_config.libsonnet deleted file mode 100644 index 2fb6d6cb355..00000000000 --- a/vitess-mixin/dashboards/resources/config/row_config.libsonnet +++ /dev/null @@ -1,18 +0,0 @@ -{ - misc:: { - title: 'Misc', - collapse: true, - }, - mysqlTimings: { - title: 'MySQL Timings', - collapse: true, - }, - queryErrors:: { - title: 'Queries/Errors', - collapse: true, - }, - vitessTimings:: { - title: 'Vitess Timings', - collapse: true, - }, -} diff --git a/vitess-mixin/dashboards/resources/config/vtgate_config.libsonnet b/vitess-mixin/dashboards/resources/config/vtgate_config.libsonnet deleted file mode 100644 index acbc7e19efb..00000000000 --- a/vitess-mixin/dashboards/resources/config/vtgate_config.libsonnet +++ /dev/null @@ -1,765 +0,0 @@ -/** This is a configuration file containing metadata for vtgate grafana resources. */ - -local config = import '../../../config.libsonnet'; -local configuration_templates = import './configuration_templates.libsonnet'; -local vitess_ct = configuration_templates.prometheus_vitess; - -// TODO: move local template variables and fields to ./configuration_templates.libsonnet. -{ - // ____ _ - // | _ \ __ _ _ __ ___| |___ - // | |_) / _` | '_ \ / _ \ / __| - // | __/ (_| | | | | __/ \__ \ - // |_| \__,_|_| |_|\___|_|___/ - - // TODO: add description for each panel. - panels: { - - //Override default_panel values with custom configuration - local panel_template = { - datasource: '%(dataSource)s' % config._config, - format: 'rps', - fill: 0, - legend_values: true, - legend_alignAsTable: true, - legend_min: true, - legend_max: true, - legend_current: true, - legend_sort: 'current', - legend_sortDesc: true, - min: 0, - sort: 'decreasing', - }, - - local garbage_collector_panel_template = panel_template { - format: 's', - legend_sort: 'max', - }, - - vtgateRequests: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests', - fill: 1, - targets: [ - { - expr: ||| - sum ( - vitess_mixin:vtgate_api_count:rate1m - ) - |||, - legendFormat: 'Requests', - }, - ], - }, - - vtgateRequestsByKeyspace: - panel_template + - vitess_ct.panel.null_as_zeros { - title: 'Requests (by keyspace)', - targets: [ - { - expr: ||| - sum by(keyspace)( - vitess_mixin:vtgate_api_count_by_keyspace:rate1m - ) - ||| % config._config, - legendFormat: '{{keyspace}}', - }, - ], - }, - - - vtgateRequestsByDBType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests (by db_type)', - targets: [ - { - expr: ||| - sum by (db_type)( - vitess_mixin:vtgate_api_count_by_db_type:rate1m - ) - |||, - legendFormat: '{{db_type}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vtgateRequestsByInstanceDBType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests (by db_type)', - fill: 0, - targets: [ - { - expr: ||| - sum by (instance, db_type)( - rate( - vtgate_api_count{ - instance=~"$host", - }[1m] - ) - ) - |||, - legendFormat: '{{instance}} - {{db_type}}', - intervalFactor: 1, - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS TARGET - vtgateRequestsByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests', - fill: 0, - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vtgate_api_count{ - instance=~'$host' - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - - vtgateErrorRate: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate', - format: 'percentunit', - fill: 1, - aliasColors: { - 'Error rate': '#F2495C', - }, - targets: [ - { - expr: ||| - sum ( - vitess_mixin:vtgate_api_error_counts:rate1m) - / - sum ( - vitess_mixin:vtgate_api_count:rate1m) - |||, - legendFormat: 'Error rate', - }, - ], - }, - - vtgateErrorRateByKeyspace: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate (by keyspace)', - format: 'percentunit', - targets: [ - { - expr: ||| - sum by(keyspace)( - vitess_mixin:vtgate_api_error_counts_by_keyspace:rate1m) - / - sum by(keyspace)( - vitess_mixin:vtgate_api_count_by_keyspace:rate1m) - |||, - legendFormat: '{{keyspace}}', - }, - ], - }, - - vtgateErrorRateByDBType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate (by db_type)', - format: 'percentunit', - targets: [ - { - expr: ||| - sum by (db_type)( - vitess_mixin:vtgate_api_error_counts_by_db_type:rate1m - ) - / - sum by (db_type)( - vitess_mixin:vtgate_api_count_by_db_type:rate1m - ) - ||| % config._config, - legendFormat: '{{db_type}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS TARGET - vtgateErrorRateByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate', - fill: 0, - format: 'percentunit', - nullPointMode: 'null as zero', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - vtgate_api_error_counts[1m] - ) > 0 - ) - / - sum by(instance)( - rate( - vtgate_api_count[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - - //TODO Create RECORDING RULES FOR THESE PROM TARGETS - vtgateErrorRateByInstanceDBType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate (by db_type)', - fill: 0, - format: 'percentunit', - targets: [ - { - expr: - ||| - sum by(instance, db_type)( - rate(vtgate_api_error_counts{ - instance=~"$host" - }[1m] - ) > 0 - ) - / - sum by(instance, db_type)( - rate( - vtgate_api_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}} - {{db_type}}', - intervalFactor: 1, - }, - ], - }, - - vtgateDurationP99: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Duration 99th quantile', - fill: 1, - format: 's', - aliasColors: { - Duration: '#5794F2', - }, - targets: [ - { - expr: ||| - histogram_quantile( - 0.99, - sum by(le)( - vitess_mixin:vtgate_api_bucket:rate1m - ) - ) - |||, - legendFormat: 'Duration', - }, - ], - }, - - vtgateDurationP99ByKeyspace: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Duration 99th quantile (by keyspace)', - format: 's', - targets: [ - { - expr: ||| - histogram_quantile( - 0.99, - sum by(keyspace,le)( - vitess_mixin:vtgate_api_bucket_by_keyspace:rate1m - ) - ) - ||| % config._config, - legendFormat: '{{keyspace}}', - }, - ], - }, - - local vtgateDurationTemplate = - panel_template - + vitess_ct.panel.null_as_zeros { - fill: 1, - format: 's', - aliasColors: { - Duration: '#5794F2', - }, - }, - - //TODO crete a recording rule for this prometheus vitess target - vtgateDurationP99ByInstance: vtgateDurationTemplate { - title: 'Duration 99th quantile', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.99, - sum by(instance,le)( - rate( - vtgate_api_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - - //TODO crete a recording rule for this prometheus vitess target - vtgateDurationP99ByInstanceDBType: vtgateDurationTemplate { - title: 'Duration 99th quantile (by db_type)', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.99, - sum by(instance,db_type,le)( - rate( - vtgate_api_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}} - {{db_type}}', - intervalFactor: 1, - }, - ], - }, - - vtgateDurationP50: vtgateDurationTemplate { - title: 'Duration 50th quantile', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.50, - sum by(le)( - vitess_mixin:vtgate_api_bucket:rate1m - ) - ) - |||, - legendFormat: 'Duration p50', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vtgateDurationP50ByInstance: vtgateDurationTemplate { - title: 'Duration 50th quantile', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.50, - sum by(instance, le)( - rate( - vtgate_api_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vtgateDurationP95: vtgateDurationTemplate { - title: 'Duration 95th quantile', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.95, - sum by(le)( - vitess_mixin:vtgate_api_bucket:rate1m - ) - ) - |||, - legendFormat: 'Duration p95', - }, - ], - }, - - vtgateDurationP95ByInstance: vtgateDurationTemplate { - title: 'Duration 95th quantile', - fill: 0, - targets: [ - { - expr: ||| - histogram_quantile( - 0.95, - sum by(instance, le)( - rate( - vtgate_api_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO write a recording rule for this prometheus_vitess target - // only vtgate_api_sum requires a rule. Use 1m interval instead of 5m. - vtgateDurationAVG: vtgateDurationTemplate { - title: 'Duration (Avg)', - fill: 0, - targets: [ - { - expr: ||| - sum ( - rate( - vtgate_api_sum[5m] - ) - ) - / - sum ( - rate( - vtgate_api_count[5m] - ) - ) - |||, - legendFormat: 'Avg Latency', - }, - ], - }, - - //TODO write a recording rule for this prometheus_vitess target - vtgateDurationAVGByInstance: vtgateDurationTemplate { - title: 'Duration (Avg)', - fill: 0, - targets: [ - { - expr: ||| - sum by (instance)( - rate( - vtgate_api_sum{ - instance=~"$host" - }[5m] - ) - ) - / - sum by (instance)( - rate( - vtgate_api_count{ - instance=~"$host" - }[5m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vtgateDurationP99ByDBType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Duration 99th quantile (by db_type)', - format: 's', - targets: [ - { - expr: ||| - histogram_quantile( - 0.99, - sum by (db_type, le)( - vitess_mixin:vtgate_api_bucket_by_db_type:rate1m - ) - ) - |||, - legendFormat: '{{db_type}}', - }, - ], - }, - - vtgateErrorsByCode: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Errors (by code)', - format: 'cps', - targets: [ - { - expr: ||| - sum by (code)( - vitess_mixin:vtgate_api_error_counts_by_code:rate1m - ) - |||, - legendFormat: '{{code}}', - }, - ], - - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vtgateErrorsByInstanceCode: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Errors (by code)', - format: 'cps', - targets: [ - { - expr: ||| - sum by (instance,code)( - rate( - vtgate_api_error_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}} - {{code}}', - }, - ], - - }, - - vtgateErrorsByOperation: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Errors (by operation)', - format: 'cps', - targets: [ - { - expr: ||| - sum by (operation)( - vitess_mixin:vtgate_api_error_counts_by_operation:rate1m - ) - |||, - legendFormat: '{{operation}}', - }, - ], - - }, - - vtgateErrorsByDbtype: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Errors (by db_type)', - format: 'cps', - targets: [ - { - expr: ||| - sum by (db_type)( - vitess_mixin:vtgate_api_error_counts_by_db_type:rate1m - ) - |||, - legendFormat: '{{db_type}}', - }, - ], - - }, - - //TODO CREATE RECORDING RULE FOR THIS PROM TARGET - vtgateErrorsByInstanceKeyspace: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Errors (by keyspace)', - format: 'cps', - targets: [ - { - expr: ||| - sum by (instance,keyspace)( - rate( - vtgate_api_error_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{keyspace}}', - intervalFactor: 1, - }, - ], - }, - - vtgateRestart: { - title: 'vtgate', - bars: true, - datasource: '%(dataSource)s' % config._config, - fill: 0, - format: 'short', - legend_alignAsTable: true, - legend_current: false, - legend_max: true, - legend_min: false, - legend_sort: 'max', - legend_sortDesc: false, - legend_values: true, - lines: false, - min: 0, - shared_tooltip: false, - sort: 'increasing', - targets: [ - { - expr: ||| - sum by (instance)( - vitess_mixin:process_start_time_seconds_by_instance_job:sum5m{ - %(vtgateSelector)s - } - ) - ||| % config._config, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO crete a recording rule for this prometheus vitess target - vtgateGarbageCollectionCount: garbage_collector_panel_template { - title: 'GC Count', - format: 'ops', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - go_gc_duration_seconds_count{ - %(vtgateSelector)s - }[1m] - ) - ) - ||| % config._config, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - //TODO crete a recording rule for this prometheus vitess target - vtgateGarbageCollectionDuration: garbage_collector_panel_template { - title: 'GC Duration total per second', - description: 'A summary of the pause duration of garbage collection cycles', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - go_gc_duration_seconds_count{ - %(vtgateSelector)s - }[1m] - ) - ) - ||| % config._config, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - //TODO crete a recording rule for this prometheus vitess target - vtgateGarbageCollectionDurationQuantiles: garbage_collector_panel_template { - title: 'GC Duration quantiles', - targets: [ - { - expr: - ||| - sum by(quantile)( - rate( - go_gc_duration_seconds{ - %(vtgateSelector)s - }[1m] - ) - ) - ||| % config._config, - legendFormat: 'p{{quantile}}', - intervalFactor: 1, - }, - ], - }, - }, - - // _ _ _ _ - // ___(_)_ __ __ _| | ___ ___| |_ __ _| |_ ___ - // / __| | '_ \ / _` | |/ _ \/ __| __/ _` | __/ __| - // \__ \ | | | | (_| | | __/\__ \ || (_| | |_\__ \ - // |___/_|_| |_|\__, |_|\___||___/\__\__,_|\__|___/ - // |___/ - - //TODO move default configurations to helper code (vttablet_helper) - singlestats: { - - vtgateQPS: { - title: 'QPS - vtgate', - datasource: '%(dataSource)s' % config._config, - format: 'short', - valueFontSize: '70%', - valueName: 'current', - sparklineFull: true, - sparklineShow: true, - target: - { - expr: ||| - sum ( - vitess_mixin:vtgate_api_count:rate1m - ) - |||, - intervalFactor: 1, - }, - }, - - vtgateQueryLatencyP99: { - title: 'Query latency p99', - datasource: '%(dataSource)s' % config._config, - colorBackground: true, - decimals: 2, - format: 'ms', - valueFontSize: '70%', - valueName: 'current', - thresholds: '30,50', - target: - { - expr: ||| - 1000 * histogram_quantile( - 0.99, - sum by(le)( - vitess_mixin:vtgate_api_bucket:rate1m - ) - ) - |||, - instant: true, - intervalFactor: 1, - }, - }, - }, -} diff --git a/vitess-mixin/dashboards/resources/config/vttablet_config.libsonnet b/vitess-mixin/dashboards/resources/config/vttablet_config.libsonnet deleted file mode 100644 index 4dbd8a989de..00000000000 --- a/vitess-mixin/dashboards/resources/config/vttablet_config.libsonnet +++ /dev/null @@ -1,1073 +0,0 @@ -/** This is a configuration file containing metadata for vttablet grafana resources. */ - -local config = import '../../../config.libsonnet'; -local configuration_templates = import './configuration_templates.libsonnet'; -local vitess_ct = configuration_templates.prometheus_vitess; - -// TODO: move local template variables to ./configurations_templates.libsonnet. -{ - panels: { - // ____ _ - // | _ \ __ _ _ __ ___| |___ - // | |_) / _` | '_ \ / _ \ / __| - // | __/ (_| | | | | __/ \__ \ - // |_| \__,_|_| |_|\___|_|___/ - - // TODO: add description for each panel. - - //Override default_panel values with custom configuration - local vttablet_queries_killed = vitess_ct.panel.legend_min_max_avg + vitess_ct.panel.null_as_zeros, - local vttablet_query_errors_by_type = vitess_ct.panel.legend_min_max_avg + vitess_ct.panel.null_as_zeros, - - local panel_template = vitess_ct.panel.legend_min_max_current { - legend_sort: 'current', - legend_sortDesc: true, - shared_tooltip: true, - sort: 'decreasing', - }, - - local vttablet_host_view_panel_template = panel_template { - legend_sort: 'avg', - legend_avg: true, - legend_current: false, - }, - - //TODO Create a recording rule. - countServingTablets: - panel_template { - title: '# of serving tablets', - legend_sortDesc: false, - shared_tooltip: false, - sort: 'increasing', - targets: [ - { - expr: - ||| - count( - vttablet_tablet_server_state{ - %(vttabletSelector)s, - name="SERVING" - } - ) - ||| - % config._config, - legendFormat: 'SERVING', - }, - ], - }, - - vttabletRequestsByTable: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests (by table)', - format: 'rps', - targets: [ - { - expr: - ||| - sum by (table)( - vitess_mixin:vttablet_query_counts_by_keyspace_table:rate1m{ - table=~"$table" - } - ) - or - vector(0) - |||, - legendFormat: '{{table}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMEHTEUS TARGET - vttabletRequestsByPlanType: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests (by plan type)', - format: 'ops', - nullPointMode: 'null as zero', - targets: [ - { - expr: - ||| - sum by (plan_type)( - rate( - vttablet_queries_count{ - instance=~"$host" - } [1m] - ) - ) - |||, - legendFormat: '{{plan_type}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vttabletRequestsByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests', - format: 'ops', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - nullPointMode: 'null as zero', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_query_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vttabletRequestsByTableFilteredByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Requests (by table)', - format: 'ops', - nullPointMode: 'null as zero', - targets: [ - { - expr: - ||| - sum by (table)( - rate( - vttablet_query_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{table}}', - intervalFactor: 1, - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vttabletErrorRateByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate', - format: 'percentunit', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - / - ( - sum by (instance)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - + - sum by (instance)( - rate( - vttablet_query_counts{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vttabletErrorRateByPlanFilteredByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate (by plan type)', - format: 'percentunit', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - targets: [ - { - expr: - ||| - sum by (plan)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - / - ( - sum by (plan)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - + - sum by (plan)( - rate( - vttablet_query_counts{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{plan}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROM TARGET - vttabletErrorRateByTableFilteredByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Error rate (by table)', - format: 'percentunit', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - targets: [ - { - expr: - ||| - sum by (table)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - / - ( - sum by (table)( - rate( - vttablet_query_error_counts{ - instance=~"$host" - }[1m] - ) - ) - + - sum by (table)( - rate( - vttablet_query_counts{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{table}}', - }, - ], - }, - - vttabletRowsReturnedByTableFilteredByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Rows Returned (by table)', - targets: [ - { - expr: - ||| - sum by (table) ( - rate( - vttablet_query_row_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{table}}', - }, - ], - }, - - vttabletRowsReturnedByPlansFilterByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Rows Returned (by plan)', - targets: [ - { - expr: - ||| - sum by (plan) ( - rate( - vttablet_query_row_counts{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{plan}}', - }, - ], - }, - - //TODO DEDUPLICATE LEGEND CONFIGURATION FOR QUERY DURATION PANELS - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryDurationAvgByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Query Duration (avg)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - vttablet_queries_sum{ - instance=~"$host" - }[1m] - ) - ) - / - sum by(instance)( - rate( - vttablet_queries_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryDurationP50ByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Query Duration (p50)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.50,sum by(instance,le)( - rate( - vttablet_queries_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryDurationP95ByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Query Duration (p95)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.95,sum by(instance,le)( - rate( - vttablet_queries_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryDurationP99ByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Duration (p99)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.99,sum by(instance,le)( - rate( - vttablet_queries_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryDurationP99ByPlan: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Duration p99 (by plan type)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'avg', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.99,sum by(plan_type,le)( - rate( - vttablet_queries_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{plan_type}}', - }, - ], - }, - - //TODO DEDUPLICATE LEGEND CONFIGURATION FOR TRANSACTION DURATION PANELS - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionDurationAvgByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Transaction Duration (avg)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - vttablet_transactions_sum{ - instance=~"$host" - }[1m] - ) - ) - / - sum by(instance)( - rate( - vttablet_transactions_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionDurationP50ByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Transaction Duration (p50)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.50,sum by(instance,le)( - rate( - vttablet_transactions_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionDurationP95ByInstance: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Transaction Duration (p95)', - format: 's', - legend_current: false, - legend_avg: true, - legend_sort: 'max', - targets: [ - { - expr: - ||| - histogram_quantile( - 0.95,sum by(instance,le)( - rate( - vttablet_transactions_bucket{ - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vttabletQueryTransactionKilled: - panel_template - + vitess_ct.panel.null_as_zeros { - title: 'Query/Transaction killed', - format: 'cps', - legend_alignAsTable: true, - shared_tooltip: false, - targets: [ - { - expr: - ||| - sum ( - vitess_mixin:vttablet_kills:rate1m - ) - |||, - legendFormat: 'Killed', - }, - ], - }, - - vttabletRestart: { - title: 'vttablet', - bars: true, - datasource: '%(dataSource)s' % config._config, - fill: 0, - format: 'short', - legend_values: true, - legend_alignAsTable: true, - legend_max: true, - legend_sort: 'max', - legend_sortDesc: false, - lines: false, - min: 0, - shared_tooltip: false, - sort: 'increasing', - targets: [ - { - expr: - ||| - sum by (instance) ( - vitess_mixin:process_start_time_seconds_by_instance_job:sum5m{ - %(vttabletSelector)s - } - ) - ||| % config._config, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryPoolAvailableConnections: vttablet_host_view_panel_template { - title: 'Available Connections', - description: 'number of available connections in the pool in real-time', - format: 'short', - targets: [ - { - expr: - ||| - sum by (instance)( - vttablet_conn_pool_available{ - instance=~'$host' - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryPoolActiveConnections: vttablet_host_view_panel_template { - title: 'Active Connections', - description: 'count of in use connections to mysql', - format: 'short', - targets: [ - { - expr: - ||| - sum by(instance) ( - vttablet_conn_pool_active{ - instance=~'$host' - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryPoolIddleClosedRate: vttablet_host_view_panel_template { - title: 'Idle Closed Rate', - description: 'rate of closing connections due to the idle timeout', - format: 'ops', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_conn_pool_idle_closed{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryPoolWaitCount: vttablet_host_view_panel_template { - title: 'Wait count', - description: 'WaitCount will give you how often the transaction pool gets full that causes new transactions to wait.', - format: 'short', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_conn_pool_wait_count{ - instance=~'$host' - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryPoolAvgWaitTime: vttablet_host_view_panel_template { - title: 'Avg wait time', - format: 's', - description: 'WaitTime/WaitCount will tell you the average wait time.', - targets: [ - { - expr: - ||| - sum by (instance) ( - rate( - vttablet_conn_pool_wait_time{ - instance=~"$host" - }[1m] - ) - ) - / - sum by (instance) ( - rate( - vttablet_conn_pool_wait_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vttabletQueriesKilled: vttablet_queries_killed { - title: 'Queries Killed', - description: ||| - Kills reports the queries and transactions killed by VTTablet due to timeout. - It’s a very important variable to look at during outages. - |||, - targets: [ - { - expr: ||| - sum by (instance)( - vitess_mixin:vttablet_kills_by_instance:rate1m{ - instance=~"$host" - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - vttabletQueryErrorsByType: vttablet_query_errors_by_type { - title: 'Query errors (by error code)', - description: '', - targets: [ - { - expr: ||| - sum by (error_code)( - vitess_mixin:vttablet_errors:rate1m{ - instance=~"$host" - } - ) - |||, - legendFormat: 'ErrorCode: {{error_code}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionPoolAvailableConnections: vttablet_host_view_panel_template { - title: 'Available Connections', - description: 'number of available connections in the pool', - format: 'short', - targets: [ - { - expr: - ||| - sum by (instance)( - vttablet_transaction_pool_available{ - instance=~'$host' - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionPoolActiveConnections: vttablet_host_view_panel_template { - title: 'Active Connections', - description: 'Number of connections actually open to mysql', - format: 'short', - targets: [ - { - expr: - ||| - sum by(instance) ( - vttablet_transaction_pool_active{ - instance=~'$host' - } - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionPoolIddleClosedRate: vttablet_host_view_panel_template { - title: 'Idle Closed Rate', - description: 'Rate of closing connections due to the idle timeout', - format: 'ops', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_transaction_pool_idle_closed{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionPoolWaitCount: vttablet_host_view_panel_template { - title: 'Wait count', - description: 'WaitCount will give you how often the transaction pool gets full that causes new transactions to wait.', - format: 'short', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vttablet_transaction_pool_wait_count{ - instance=~'$host' - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletTransactionPoolAvgWaitTime: vttablet_host_view_panel_template { - title: 'Avg wait time', - format: 's', - description: 'WaitTime/WaitCount will tell you the average wait time.', - targets: [ - { - expr: - ||| - sum by (instance) ( - rate( - vttablet_transaction_pool_wait_time{ - instance=~"$host" - }[1m] - ) - ) - / - sum by (instance) ( - rate( - vttablet_transaction_pool_wait_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletGarbageCollectionCount: vitess_ct.panel.go_gc_ops { - title: 'GC Count', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - go_gc_duration_seconds_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletGarbageCollectionDuration: vitess_ct.panel.go_gc_seconds { - title: 'GC Duration total per second', - description: 'A summary of the pause duration of garbage collection cycles', - targets: [ - { - expr: - ||| - sum by(instance)( - rate( - go_gc_duration_seconds_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - intervalFactor: 1, - }, - ], - }, - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletGarbageCollectionDurationQuantiles: vitess_ct.panel.go_gc_seconds { - title: 'GC Duration quantiles (all hosts)', - targets: [ - { - expr: - ||| - sum by(quantile)( - rate( - go_gc_duration_seconds{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: 'p{{quantile}}', - intervalFactor: 1, - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletMysqlTimeAvgFilteredByInstance: vitess_ct.panel.mysql_timings { - title: 'MySQL time (avg)', - targets: [ - { - expr: - ||| - sum by (instance) ( - rate( - vttablet_mysql_sum{ - instance=~"$host" - }[1m] - ) - ) - / - sum by (instance) ( - rate( - vttablet_mysql_count{ - instance=~"$host" - }[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletMysqlExecTimeP50FilterebyInstance: vitess_ct.panel.mysql_timings { - title: 'MySQL Exec Time P50', - targets: [ - { - expr: ||| - histogram_quantile( - 0.50, - sum by (le, instance) ( - rate( - vttablet_mysql_bucket{ - operation="Exec", - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletMysqlExecTimeP95FilterebyInstance: vitess_ct.panel.mysql_timings { - title: 'MySQL Exec Time P95', - targets: [ - { - expr: ||| - histogram_quantile( - 0.95, - sum by (le, instance) ( - rate( - vttablet_mysql_bucket{ - operation="Exec", - instance=~"$host" - }[1m] - ) - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vtgateToVtTabletCallTimeAvgFilteredByInstance: vitess_ct.panel.vtgate_to_vttablet_calls { - title: 'VtGate -> VtTablet Call Time (avg)', - targets: [ - { - expr: - ||| - sum by (instance)( - rate( - vtgate_vttablet_call_sum[1m] - ) - ) - / - sum by (instance)( - rate( - vtgate_vttablet_call_count[1m] - ) - ) - |||, - legendFormat: '{{instance}}', - }, - ], - }, - - }, - - singlestats: { - // _ _ _ _ - // ___(_)_ __ __ _| | ___ ___| |_ __ _| |_ ___ - // / __| | '_ \ / _` | |/ _ \/ __| __/ _` | __/ __| - // \__ \ | | | | (_| | | __/\__ \ || (_| | |_\__ \ - // |___/_|_| |_|\__, |_|\___||___/\__\__,_|\__|___/ - // |___/ - - vttabletQPS: { - title: 'QPS - vttablet', - datasource: '%(dataSource)s' % config._config, - format: 'short', - valueFontSize: '70%', - valueName: 'current', - sparklineFull: true, - sparklineShow: true, - target: - { - expr: ||| - sum ( - vitess_mixin:vttablet_query_counts:rate1m - ) - |||, - intervalFactor: 1, - }, - }, - }, -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/heatmaps.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/heatmaps.libsonnet deleted file mode 100644 index 9a6e5f41527..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/heatmaps.libsonnet +++ /dev/null @@ -1,36 +0,0 @@ -// Re-cyclable components for heatmap resources -local config = import '../../../config.libsonnet'; -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; - -local heatmap = grafana.heatmapPanel; -local prometheus = grafana.prometheus; -{ - //TODO move to resources/vttablet - //TODO CREATE A RECORDING RULE FOR THIS PROMETHEUS TARGET - vttabletQueryTimeDistribution:: - heatmap.new( - title='Query Time Distribution (Heatmap)', - description='Shows a heatmap of the histogram bucketing of the time per read query.', - datasource='%(dataSource)s' % config._config, - dataFormat='tsbuckets', - yAxis_format='s', - color_cardColor='#FF9830', - color_exponent=0.3, - color_mode='opacity', - yAxis_decimals=0, - ).addTarget( - prometheus.target( - ||| - sum by (le) ( - rate( - vttablet_queries_bucket{ - instance=~"$host" - }[1m] - ) - ) - |||, - format='heatmap', - legendFormat='{{le}}' - ) - ), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/dashboard_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/dashboard_helper.libsonnet deleted file mode 100644 index d998cc65540..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/dashboard_helper.libsonnet +++ /dev/null @@ -1,16 +0,0 @@ -/** This is a helper library to load grafonnet dashboards using the mixin metadata stored in `config.libshonnet` */ - -local grafonnet_helper = import 'grafonnet_helper.libsonnet'; - -{ - /** - * Builds a dashboard using grafonnet and the configuration from `config.libsonnet` - * - * @name dashboard_helper.getDashboard - * - * @param config The dashboard configuration from mixin config file. - * @return A new graphPanel with the configuration specified in `config.libsonnet` - * - */ - getDashboard(config):: grafonnet_helper.getDashboard(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/grafonnet_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/grafonnet_helper.libsonnet deleted file mode 100644 index 2ff41c6a06f..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/grafonnet_helper.libsonnet +++ /dev/null @@ -1,376 +0,0 @@ -/** - * This is a helper library to generate grafana resources reading the configuration from a config file. - */ - -local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; -local prometheus = grafana.prometheus; -local alert_condition = grafana.alertCondition; - -// _ _ _ -// __ _ _ __ _ __ ___ | |_ __ _| |_(_) ___ _ __ -// / _` | '_ \| '_ \ / _ \| __/ _` | __| |/ _ \| '_ \ -// | (_| | | | | | | | (_) | || (_| | |_| | (_) | | | | -// \__,_|_| |_|_| |_|\___/ \__\__,_|\__|_|\___/|_| |_| - -local getAnnotation(config) = if (config.name == 'default') then - grafana.annotation.default -else - // TODO when the properties are supported by grafonnet use the lib constructor - // instead of using composition - grafana.annotation.datasource( - config.name, - config.datasource - ) + - config.properties; - -// _ _ _ _ -// __| | __ _ ___| |__ | |__ ___ __ _ _ __ __| | -// / _` |/ _` / __| '_ \| '_ \ / _ \ / _` | '__/ _` | -// | (_| | (_| \__ \ | | | |_) | (_) | (_| | | | (_| | -// \__,_|\__,_|___/_| |_|_.__/ \___/ \__,_|_| \__,_| - -local getDashboard(config) = grafana.dashboard.new( - title=config.title, - description=config.description, - uid=config.uid, - time_from=config.time_from, - tags=(config.dashboardTags), - editable=true, - graphTooltip='shared_crosshair', -) + { - environments:: config.environments, -}; - -// _ -// _ __ __ _ _ __ ___| | -// | '_ \ / _` | '_ \ / _ \ | -// | |_) | (_| | | | | __/ | -// | .__/ \__,_|_| |_|\___|_| -// |_| -// The default panel contains all the parameters that we want to override. -// https://github.com/grafana/grafonnet-lib/blob/master/grafonnet/graph_panel.libsonnet - -local default_panel = { - title: '', - aliasColors: {}, - bars: false, - decimals: null, - description: null, - format: 'short', - fill: 1, - legend_alignAsTable: false, - legend_avg: false, - legend_current: false, - legend_hideZero: null, - legend_max: false, - legend_min: false, - legend_rightSide: false, - legend_sort: null, - legend_sortDesc: null, - legend_values: false, - lines: true, - linewidth: 1, - max: null, - min: null, - points: false, - pointradius: 5, - nullPointMode: 'null', - shared_tooltip: true, - sort: 0, - thresholds: [], -}; - -local default_prometheus_target = { - format: 'time_series', - instant: null, - intervalFactor: 2, - legendFormat: '', -}; - -local default_alert_condition = { - evaluatorParams: [], - evaluatorType: 'gt', - operatorType: 'and', - queryRefId: 'A', - queryTimeEnd: 'now', - queryTimeStart: '5m', - reducerParams: [], - reducerType: 'avg', -}; - -local getConditions(config) = - if std.objectHas(config.alert[std.extVar('env')], 'conditions') then - //reducerType is a grafonnet field value. This asserts the config is not legacy - if std.objectHas(config.alert[std.extVar('env')].conditions[0], 'reducerType') - then - local x = std.map( - function(c) default_alert_condition + c - , config.alert[std.extVar('env')].conditions - ); - std.map( - function(c) - alert_condition.new( - evaluatorParams=c.evaluatorParams, - evaluatorType=c.evaluatorType, - operatorType=c.operatorType, - queryRefId=c.queryRefId, - queryTimeEnd=c.queryTimeEnd, - queryTimeStart=c.queryTimeStart, - reducerParams=c.reducerParams, - reducerType=c.reducerType, - ) - , x - ) - else - //Legacy config files include calls to grafonnet.alert_condition.new() - //TODO update legacy config files to use alert conditions in json format, - config.alert[std.extVar('env')].conditions - else []; - -local getTargets(config) = - if std.objectHas(config, 'targets') then - if config.datasource != null && - std.startsWith(config.datasource, 'Prometheus') && - std.objectHas(config.targets[0], 'expr') - then - local x = std.map( - function(t) default_prometheus_target + t - , config.targets - ); - std.map( - function(t) - prometheus.target( - t.expr, - legendFormat=t.legendFormat, - instant=t.instant, - intervalFactor=t.intervalFactor, - format=t.format - ) - , x - ) - else - //When the datasource is not prometheus(elastic, graphite) config file - //include calls to graphite.target() and elasticsearch.target(). - //see webapp_config.lisonnet - //TODO Update this method to decouple grafonnet code from the configuration files. - //Legacy configuration files include prometheus.target() calls. - //TODO update legacy config files to use {'expr':'Prom query' ...} format, - config.targets - else []; - -// This method overriddes grafonnet graphPanel defaults with the values in the config file . -// https://github.com/grafana/grafonnet-lib/blob/master/grafonnet/graph_panel.libsonnet -// TODO: When grapPanel supports either addLinks (https://github.com/grafana/grafonnet-lib/pull/278) -// we should add the links there instead of composing the `options` field. -local initPanel(config) = - grafana.graphPanel.new( - title=config.title, - aliasColors=config.aliasColors, - bars=config.bars, - datasource=config.datasource, - decimals=config.decimals, - description=config.description, - fill=config.fill, - format=config.format, - legend_alignAsTable=config.legend_alignAsTable, - legend_avg=config.legend_avg, - legend_rightSide=config.legend_rightSide, - legend_hideZero=config.legend_hideZero, - legend_min=config.legend_min, - legend_max=config.legend_max, - legend_current=config.legend_current, - legend_sort=config.legend_sort, - legend_sortDesc=config.legend_sortDesc, - legend_values=config.legend_values, - lines=config.lines, - linewidth=config.linewidth, - max=config.max, - min=config.min, - points=config.points, - pointradius=config.pointradius, - nullPointMode=config.nullPointMode, - shared_tooltip=config.shared_tooltip, - sort=config.sort, - thresholds=config.thresholds, - ).addTargets( - getTargets(config) - ) + - { - [if std.objectHas(config, 'options') - then 'options']: - config.options, - }; - -local getPanel(c) = - if std.objectHas(c, 'alert') then - local config = default_panel + c; - local panel = initPanel(config).addAlert( - config.alert.name, - executionErrorState=config.alert.executionErrorState, - forDuration=config.alert.forDuration, - frequency=config.alert.frequency, - message=config.alert.message, - noDataState=config.alert.noDataState, - notifications=config.alert[std.extVar('env')].notifications, - ).addConditions( - getConditions(config) - ); - if std.objectHas(config, 'seriesOverrides') then - local it = panel; - std.foldl(function(p, o) p.addSeriesOverride(o), config.seriesOverrides, it) - else - panel - else - (local config = default_panel + c; - local panel = initPanel(config); - if std.objectHas(config, 'seriesOverrides') then - local it = panel; - std.foldl(function(p, o) p.addSeriesOverride(o), config.seriesOverrides, it) - else - panel); - -// _ __ _____ __ -// | '__/ _ \ \ /\ / / -// | | | (_) \ V V / -// |_| \___/ \_/\_/ - -local row_default = { - title: '', - height: null, - collapse: false, - repeat: null, - showTitle: null, - titleSize: 'h6', -}; - -local getRow(c) = - local config = row_default + c; - grafana.row.new( - title=config.title, - height=config.height, - collapse=config.collapse, - repeat=config.repeat, - showTitle=config.showTitle, - titleSize=config.titleSize - ); - -// _ _ _ _ -// ___(_)_ __ __ _| | ___ ___| |_ __ _| |_ -// / __| | '_ \ / _` | |/ _ \/ __| __/ _` | __| -// \__ \ | | | | (_| | | __/\__ \ || (_| | |_ -// |___/_|_| |_|\__, |_|\___||___/\__\__,_|\__| -// |___/ -//The default value should include all the parameters that are overridden by the objects that extend the default. -//Default values match grafonnet defaults > https://github.com/grafana/grafonnet-lib/blob/master/grafonnet/singlestat.libsonnet - -local default_singlestat = { - colors: [ - '#299c46', - 'rgba(237, 129, 40, 0.89)', - '#d44a3a', - ], - colorBackground: false, - decimals: null, - format: 'none', - valueFontSize: '80%', - valueName: 'avg', - sparklineFull: false, - sparklineShow: false, - thresholds: '', -}; - -local initSingleStat(config) = grafana.singlestat.new( - title=config.title, - datasource=config.datasource, - colors=config.colors, - colorBackground=config.colorBackground, - decimals=config.decimals, - format=config.format, - valueFontSize=config.valueFontSize, - valueName=config.valueName, - sparklineFull=config.sparklineFull, - sparklineShow=config.sparklineShow, - thresholds=config.thresholds, -); - -local getSingleStat(c) = if std.objectHas(c, 'target') -then - local config = default_singlestat + c; - local tc = default_prometheus_target + config.target; - local t = prometheus.target( - tc.expr, - legendFormat=tc.legendFormat, - instant=tc.instant, - intervalFactor=tc.intervalFactor, - format=tc.format - ); - initSingleStat(config).addTarget(t) -else - local config = default_singlestat + c; - initSingleStat(config); - -// _ _ _ -// | |_ ___ _ __ ___ _ __ | | __ _| |_ ___ -// | __/ _ \ '_ ` _ \| '_ \| |/ _` | __/ _ \ -// | || __/ | | | | | |_) | | (_| | || __/ -// \__\___|_| |_| |_| .__/|_|\__,_|\__\___| -// |_| -// default values from https://github.com/grafana/grafonnet-lib/blob/master/grafonnet/template.libsonnet -local template_default = { - label: null, - allValues: null, - tagValuesQuery: '', - current: null, - hide: '', - regex: '', - refresh: 'never', - includeAll: false, - multi: false, - sort: 0, -}; -local getTemplate(c) = - local config = template_default + c; - grafana.template.new( - name=config.name, - datasource=config.datasource, - query=config.query, - label=config.label, - current=config.current, - regex=config.regex, - refresh=config.refresh, - sort=config.sort, - ); - -// _ _ _ _ _ _ _ -// __| | __ _ ___| |__ | |__ ___ __ _ _ __ __| | | (_)_ __ | | __ -// / _` |/ _` / __| '_ \| '_ \ / _ \ / _` | '__/ _` | | | | '_ \| |/ / -// | (_| | (_| \__ \ | | | |_) | (_) | (_| | | | (_| | | | | | | | < -// \__,_|\__,_|___/_| |_|_.__/ \___/ \__,_|_| \__,_| |_|_|_| |_|_|\_\ -local link_default = { - asDropdown: true, - includeVars: false, - keepTime: false, - icon: 'external link', - url: '', - targetBlank: false, - type: 'dashboards', -}; - -local getDashboardLink(c) = - local config = link_default + c; - grafana.link.dashboards( - title=config.title, - tags=config.tags, - keepTime=config.keepTime, - includeVars=config.includeVars, - ); - -{ - getAnnotation(config):: getAnnotation(config), - getDashboard(config):: getDashboard(config), - getPanel(config):: getPanel(config), - getRow(config):: getRow(config), - getSingleStat(config):: getSingleStat(config), - getTemplate(config):: getTemplate(config), - getDashboardLink(config):: getDashboardLink(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/helpers.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/helpers.libsonnet deleted file mode 100644 index a6d74985dd3..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/helpers.libsonnet +++ /dev/null @@ -1,9 +0,0 @@ -// TODO deduplicate helper code. Same/similar functions are used by vtgate, vttablet and orchestrator helpers -{ - dashboard:: import 'dashboard_helper.libsonnet', - default:: import 'grafonnet_helper.libsonnet', - mysql:: import 'mysql_helper.libsonnet', - os:: import 'os_helper.libsonnet', - vtgate:: import 'vtgate_helper.libsonnet', - vttablet:: import 'vttablet_helper.libsonnet', -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/mysql_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/mysql_helper.libsonnet deleted file mode 100644 index 3d0b1ff6a44..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/mysql_helper.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -/** - * This is a helper library to generate os resources reading the configuration from mysql_config.libsonnet - */ - -local grafonnet_helper = import './grafonnet_helper.libsonnet'; - -/** - * Builds grapPanel using grafonnet and the configuration from `mysql_config.libsonnet` - * - * @name mysql_helper.getPanel - * - * @param `config`: The panel configuration from mysql_config file. - * - * @return A new graphPanel with the configuration specified in `mysql_config.libsonnet` - * - */ -{ - getPanel(config):: grafonnet_helper.getPanel(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/os_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/os_helper.libsonnet deleted file mode 100644 index 2580d54e43a..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/os_helper.libsonnet +++ /dev/null @@ -1,19 +0,0 @@ -/** - * This is a helper library to generate os resources reading the configuration from os_config.libsonnet - */ - -local grafonnet_helper = import './grafonnet_helper.libsonnet'; - -{ - /** - * Builds grapPanel using grafonnet and the configuration from `os_config.libsonnet` - * - * @name os_helper.getPanel - * - * @param `config`: The panel configuration from os_config file. - * - * @return A new graphPanel with the configuration specified in `os_config.libsonnet` - * - */ - getPanel(config):: grafonnet_helper.getPanel(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/vtgate_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/vtgate_helper.libsonnet deleted file mode 100644 index 2997979edf4..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/vtgate_helper.libsonnet +++ /dev/null @@ -1,31 +0,0 @@ -/** - * This is a helper library to generate vtgate resources reading the configuration from vtgate_config.libsonnet - */ - -local grafonnet_helper = import './grafonnet_helper.libsonnet'; - -{ - /** - * Builds grapPanel using grafonnet and the configuration from `vtgate_config.libsonnet` - * - * @name vtgate_helper.getPanel - * - * @param `config`: The panel configuration from vtgate_config file. - * - * @return A new graphPanel with the configuration specified in `vtgate_config.libsonnet` - * - */ - getPanel(config):: grafonnet_helper.getPanel(config), - - /** - * Builds a singlestat using grafonnet and the configuration from `vtgate_config.libsonnet` - * - * @name vtgate_helper.getSingleStat - * - * @param `config`: The singlestat configuration from vtgate_config file. - * - * @return A new singlestat with the configuration specified in `vtgate_config.libsonnet` - * - */ - getSingleStat(config):: grafonnet_helper.getSingleStat(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/helpers/vttablet_helper.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/helpers/vttablet_helper.libsonnet deleted file mode 100644 index 2613de0f094..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/helpers/vttablet_helper.libsonnet +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This is a helper library to generate vttablet resources reading the configuration from `vttablet_config.libsonnet` - */ -local grafonnet_helper = import './grafonnet_helper.libsonnet'; - -{ - /** - * Builds grapPanel using grafonnet and the configuration from `vttablet_config.libsonnet` - * - * @name vttablet_helper.getPanel - * - * @param `config`: The panel configuration from vttablet_config file. - * - * @return A new graphPanel with the configuration specified in `vttablet_config.libsonnet` - * - */ - getPanel(config):: grafonnet_helper.getPanel(config), - /** - * Builds singlestat using grafonnet and the configuration from `vttablet_config.libsonnet` - * - * @name vttablet_helper.getPanel - * - * @param `config`: The singlestat configuration from vttablet_config file. - * - * @return A new singlestat with the configuration specified in `vttablet_config.libsonnet` - * - */ - getSingleStat(config):: grafonnet_helper.getSingleStat(config), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/panels.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/panels.libsonnet deleted file mode 100644 index 40c20a2cb10..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/panels.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -// Re-cyclable components for panel resources -local config = import '../../../config.libsonnet'; -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; - -local graphPanel = grafana.graphPanel; -local prometheus = grafana.prometheus; - -// TODO: add description for each panel. -// TODO: create a _helper _config file for each group [vtctld], -{ - // _ _ _ _ - // __ _| |_ ___| |_| | __| | - // \ \ / / __/ __| __| |/ _` | - // \ V /| || (__| |_| | (_| | - // \_/ \__\___|\__|_|\__,_| - // - - // _ - // _ __ ___ (_)___ ___ - // | '_ ` _ \| / __|/ __| - // | | | | | | \__ \ (__ - // |_| |_| |_|_|___/\___| - // - local default_notification_config = { - prod+: { - notifications: [ - { uid: 'alerts-vitess' }, - { uid: 'pagerduty-vitess' }, - ], - }, - dev+: { - notifications: [ - { uid: 'alerts-vitess-dev' }, - ], - }, - }, - - vtctldRestart:: - graphPanel.new( - 'vtctld', - bars=true, - datasource='%(dataSource)s' % config._config, - fill=0, - format='short', - legend_values=true, - legend_alignAsTable=true, - legend_max=true, - legend_sort='max', - legend_sortDesc=false, - lines=false, - min=0, - shared_tooltip=false, - sort='increasing', - ) - .addTarget(prometheus.target( - ||| - sum by (instance) ( - vitess_mixin:process_start_time_seconds_by_instance_job:sum5m{ - %(vtctldSelector)s - } - ) > 0 - ||| % config._config, - legendFormat='{{instance}}' - )), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/rows.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/rows.libsonnet deleted file mode 100644 index 54173c2a3f1..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/rows.libsonnet +++ /dev/null @@ -1,182 +0,0 @@ -// Re-cyclable components for row resources -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; -local row = grafana.row; - -//TODO move all rows to config/row_config.libsonnet and update the layouts to use grafonnet_helper.getRow() -{ - connection:: - row.new( - title='Connection', - ), - - cpu:: - row.new( - title='CPU', - collapse=true, - ), - - duration:: - row.new( - title='Duration', - collapse=true, - ), - - errorsRowsReturned:: - row.new( - title='Errors / Rows returned', - ), - - errors:: - row.new( - title='Errors', - collapse=true, - ), - - healthcheck:: - row.new( - title='Healthcheck', - collapse=true, - ), - - tabletsQueries:: - row.new( - title='Tablets/Queries', - ), - - mysql:: - row.new( - title='MySQL', - collapse=true, - ), - - misc:: - row.new( - title='Misc', - collapse=true, - ), - - networkingTCP:: - row.new( - title='Networking TCP', - collapse=true, - ), - - networkNIC:: - row.new( - title='Network NIC', - collapse=true, - ), - - OS:: - row.new( - title='OS', - collapse=true, - ), - - processes:: - row.new( - title='Processes', - collapse=true, - ), - - queryTimings:: - row.new( - // as we don't have timings by table (yet!) - title="Query/Transaction timings (table filter doesn't apply)", - collapse=true, - ), - - query:: - row.new( - title='Query', - ), - - RED:: - row.new( - title='RED - Requests / Error rate / Duration', - ), - - REDByKeyspace:: - row.new( - title='RED (by keyspace)', - collapse=true - ), - - REDByTabletType:: - row.new( - title='RED (by tablet type)', - collapse=true - ), - - REDByPlanType:: - row.new( - title='RED (by plan type)', - collapse=true - ), - - REDByShard:: - row.new( - title='RED (by shard)', - collapse=true - ), - - REDByTable:: - row.new( - title='RED (by table)', - collapse=true - ), - - - rowsReturned:: - row.new( - title='Rows returned', - collapse=true, - ), - - serviceRestart:: - row.new( - title='Service restart', - ), - - storage:: - row.new( - title='Storage', - collapse=true, - ), - - topLevel:: - row.new( - title='Top level', - ), - - topologyWatcher:: - row.new( - title='Topology watcher', - collapse=true, - ), - - vitessQueryPool:: - row.new( - title='Vitess - Query pool', - collapse=true, - ), - - vitessTransactionPool:: - row.new( - title='Vitess - Transaction pool', - collapse=true, - ), - - vtgate:: - row.new( - title='vtgate - Requests (by table / by plan / by keyspace )', - collapse=true, - ), - - vttablet:: - row.new( - title='vttablet - Requests (by table / by plan / by keyspace )', - collapse=true, - ), - -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/singlestats.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/singlestats.libsonnet deleted file mode 100644 index e3930e382d8..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/singlestats.libsonnet +++ /dev/null @@ -1,221 +0,0 @@ -// Re-cyclable components for singlestat resources -local config = import '../../../config.libsonnet'; -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; - -local singlestat = grafana.singlestat; -local prometheus = grafana.prometheus; - -{ - //TODO move to resource to use vtgate_config/vtgate_helper - vtgateSuccessRate:: - singlestat.new( - 'Query success - vtgate', - datasource='%(dataSource)s' % config._config, - colorBackground=true, - decimals=4, - format='percent', - colors=[ - '#d44a3a', - 'rgba(237, 129, 40, 0.89)', - '#299c46', - ], - valueFontSize='70%', - valueName='current', - thresholds='0.99,0.999', - ) - .addTarget( - prometheus.target( - ||| - 100 - - - sum( - rate( - vtgate_api_error_counts{ - %(vtgateSelector)s - }[$interval] - ) OR vector(0) - ) - / - sum( - rate( - vtgate_api_count{ - %(vtgateSelector)s - }[$interval] - ) - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - //TODO move to resource to use vtgate_config/vtgate_helper - vtgateUp:: - singlestat.new( - 'vtgate', - datasource='%(dataSource)s' % config._config, - valueFontSize='50%', - valueName='current', - ) - .addTarget( - prometheus.target( - ||| - sum( - up{ - %(vtgateSelector)s - } - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - //TODO move to resource to use vttablet_config/vttablet_helper - vttabletQuerySuccess:: - singlestat.new( - 'Query success - vttablet', - datasource='%(dataSource)s' % config._config, - colorBackground=true, - decimals=4, - format='percent', - colors=[ - '#d44a3a', - 'rgba(237, 129, 40, 0.89)', - '#299c46', - ], - valueFontSize='70%', - valueName='current', - thresholds='0.99,0.999', - ) - .addTarget( - prometheus.target( - ||| - 100 - - - ( - sum ( - vitess_mixin:vttablet_errors:rate1m - ) - / - sum ( - vitess_mixin:vttablet_query_counts:rate1m - ) - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - //TODO move to resource to use vttablet_config/vttablet_helper - vttabletUp:: - singlestat.new( - 'vttablet', - datasource='%(dataSource)s' % config._config, - valueFontSize='50%', - valueName='current', - ) - .addTarget( - prometheus.target( - ||| - sum( - up{ - %(vttabletSelector)s - } - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - - //TODO move to resource to use vttablet_config/vttablet_helper - keyspaceCount:: - singlestat.new( - 'keyspace', - description='count of keyspaces with active queries', - datasource='%(dataSource)s' % config._config, - valueFontSize='50%', - valueName='current', - ) - .addTarget( - prometheus.target( - ||| - count( - count by (keyspace)( - vtgate_vttablet_call_count{ - } - ) - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - //TODO move to resource to use vttablet_config/vttablet_helper - shardCount:: - singlestat.new( - 'shard', - datasource='%(dataSource)s' % config._config, - valueFontSize='50%', - valueName='current', - ) - .addTarget( - prometheus.target( - ||| - count( - count by(shard)( - vttablet_tablet_state{ - %(vttabletSelector)s - } - ) - ) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), - - mysqlQPS:: - singlestat.new( - 'QPS - MySQL', - datasource='%(dataSource)s' % config._config, - format='short', - valueFontSize='70%', - valueName='current', - sparklineFull=true, - sparklineShow=true, - ) - .addTarget( - prometheus.target( - ||| - sum ( - vitess_mixin:mysql_global_status_queries:rate1m - ) - |||, - intervalFactor=1 - ) - ), - - vtctldUp:: - singlestat.new( - 'vtctld', - datasource='%(dataSource)s' % config._config, - valueFontSize='50%', - valueName='current', - ) - .addTarget( - prometheus.target( - ||| - sum( - up{ - %(vtctldSelector)s}) - ||| % config._config, - instant=true, - intervalFactor=1 - ) - ), -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/templates.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/templates.libsonnet deleted file mode 100644 index a32b71283c4..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/templates.libsonnet +++ /dev/null @@ -1,51 +0,0 @@ -// Re-cyclable components for template resources -local config = import '../../../config.libsonnet'; -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; - -local template = grafana.template; -{ - interval:: template.interval( - name='interval', - label='Interval', - query='auto,1m,5m,10m,30m,1h,6h,12h', - current='auto', - auto_min='1m' - ), - - table:: - template.new( - 'table', - '%(dataSource)s' % config._config, - 'query_result(sum by(table)(vitess_mixin:vtgate_queries_processed_by_table:rate1m{keyspace="$keyspace"}))', - regex='.*table="(.*)".*', - label='Table', - refresh='time', - includeAll=true, - sort=1, - allValues='.*', - ), - - hostVtgate:: - template.new( - 'host', - '%(dataSource)s' % config._config, - 'label_values(vtgate_build_number, instance)', - label='Host(s)', - refresh='time', - multi=true, - allValues='.*', - ), - - hostVttablet:: - template.new( - 'host', - '%(dataSource)s' % config._config, - 'label_values(vttablet_build_number{}, instance)', - label='Host(s)', - refresh='time', - multi=true, - allValues='.*', - sort=1 - ), - -} diff --git a/vitess-mixin/dashboards/resources/grafonnet/texts.libsonnet b/vitess-mixin/dashboards/resources/grafonnet/texts.libsonnet deleted file mode 100644 index 44478b7a13f..00000000000 --- a/vitess-mixin/dashboards/resources/grafonnet/texts.libsonnet +++ /dev/null @@ -1,65 +0,0 @@ -// Re-cyclable components for text resources -local config = import '../../../config.libsonnet'; -local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; - -local text = grafana.text; - -// TODO: figure out how to make emoji work in jsonnet. They are not correctly handled -{ - - local footnote = - ||| - This Dasboard has been automatically generated using vitess-mixin. - If you want to contribute please visit [https://github.com/vitess/vitess-mixin](https://github.com/vitessio/vitess/tree/main/vitess-mixin)! - |||, - - local notes = { - footnote: footnote, - }, - - clusterOverview:: - text.new( - '', - mode='markdown', - content=||| - #### Cluster overview - - This is a general overview of the Vitess clusters. - - %(footnote)s - ||| % notes - ), - - vtgateOverview:: - text.new( - '', - mode='markdown', - content=||| - #### vtgate overview - - This is a general overview of the vtgate tier. - - %(footnote)s - ||| % notes - ), - - vtgateHost:: - text.new( - '', - mode='markdown', - content=||| - #### vtgate host - %s - ||| % footnote, - ), - - vttabletHost:: - text.new( - '', - mode='markdown', - content=||| - #### vttablet host - %s - ||| % footnote, - ), -} diff --git a/vitess-mixin/e2e/.env b/vitess-mixin/e2e/.env deleted file mode 100644 index 00e3ed4bf0a..00000000000 --- a/vitess-mixin/e2e/.env +++ /dev/null @@ -1,18 +0,0 @@ -TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 -topo_global_root vitess/global -GRPC_PORT=15999 -WEB_PORT=8080 -MYSQL_PORT=15306 - -CELL=local -KEYSPACE=commerce -DB=commerce - -EXTERNAL_DB=0 -DB_HOST=external_db_host -DB_PORT=3306 -DB_USER=external_db_user -DB_PASS=external_db_password -DB_CHARSET=CHARACTER SET utf8 COLLATE utf8_general_ci - -GRAFANA_VERSION=7.3.6 -DISPLAY= \ No newline at end of file diff --git a/vitess-mixin/e2e/Dockerfile b/vitess-mixin/e2e/Dockerfile deleted file mode 100644 index cf4a4a9f85e..00000000000 --- a/vitess-mixin/e2e/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -ARG CYPRESS_IMAGE - -FROM $CYPRESS_IMAGE -WORKDIR /e2e - -# dependencies will be installed only if the package files change -COPY package.json . -COPY package-lock.json . - -# by setting CI environment variable we switch the Cypress install messages -# to small "started / finished" and avoid 1000s of lines of progress messages -# https://github.com/cypress-io/cypress/issues/1243 -ENV CI=1 -RUN npm ci -# verify that Cypress has been installed correctly. -# running this command separately from "cypress run" will also cache its result -# to avoid verifying again when running the tests -RUN npx cypress verify diff --git a/vitess-mixin/e2e/backups/.gitignore b/vitess-mixin/e2e/backups/.gitignore deleted file mode 100644 index 35bc8010eb9..00000000000 --- a/vitess-mixin/e2e/backups/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# ignore all files in this dir... -* -# ... except for this one. -!.gitignore diff --git a/vitess-mixin/e2e/config/init_db.sql b/vitess-mixin/e2e/config/init_db.sql deleted file mode 100644 index 6059bbf7ca6..00000000000 --- a/vitess-mixin/e2e/config/init_db.sql +++ /dev/null @@ -1,79 +0,0 @@ -# This file is executed immediately after mysql_install_db, -# to initialize a fresh data directory. -############################################################################### -# Equivalent of mysql_secure_installation -############################################################################### -# We need to ensure that super_read_only is disabled so that we can execute -# these commands. Note that disabling it does NOT disable read_only. -# We save the current value so that we only re-enable it at the end if it was -# enabled before. -SET @original_super_read_only=IF(@@global.super_read_only=1, 'ON', 'OFF'); -SET GLOBAL super_read_only='OFF'; -# Changes during the init db should not make it to the binlog. -# They could potentially create errant transactions on replicas. -SET sql_log_bin = 0; -# Remove anonymous users & disable remote root access (only allow UNIX socket). -DROP USER IF EXISTS ''@'%', ''@'localhost', 'root'@'%'; -# Remove test database. -DROP DATABASE IF EXISTS test; -############################################################################### -# Vitess defaults -############################################################################### -# Vitess-internal database. -CREATE DATABASE IF NOT EXISTS _vt; -# Note that definitions of local_metadata and shard_metadata should be the same -# as in production which is defined in go/vt/mysqlctl/metadata_tables.go. -CREATE TABLE IF NOT EXISTS _vt.local_metadata ( - name VARCHAR(255) NOT NULL, - value VARCHAR(255) NOT NULL, - db_name VARBINARY(255) NOT NULL, - PRIMARY KEY (db_name, name) - ) ENGINE=InnoDB; -CREATE TABLE IF NOT EXISTS _vt.shard_metadata ( - name VARCHAR(255) NOT NULL, - value MEDIUMBLOB NOT NULL, - db_name VARBINARY(255) NOT NULL, - PRIMARY KEY (db_name, name) - ) ENGINE=InnoDB; -# Admin user with all privileges. -CREATE USER 'vt_dba'@'localhost'; -GRANT ALL ON *.* TO 'vt_dba'@'localhost'; -GRANT GRANT OPTION ON *.* TO 'vt_dba'@'localhost'; -# User for app traffic, with global read-write access. -CREATE USER 'vt_app'@'localhost'; -GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, - REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, - LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, - SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER - ON *.* TO 'vt_app'@'localhost'; -# User for app debug traffic, with global read access. -CREATE USER 'vt_appdebug'@'localhost'; -GRANT SELECT, SHOW DATABASES, PROCESS ON *.* TO 'vt_appdebug'@'localhost'; -# User for administrative operations that need to be executed as non-SUPER. -# Same permissions as vt_app here. -CREATE USER 'vt_allprivs'@'localhost'; -GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, - REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, - LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, - SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER - ON *.* TO 'vt_allprivs'@'localhost'; -# User for slave replication connections. -# TODO: Should we set a password on this since it allows remote connections? -CREATE USER 'vt_repl'@'%'; -GRANT REPLICATION SLAVE ON *.* TO 'vt_repl'@'%'; -# User for Vitess filtered replication (binlog player). -# Same permissions as vt_app. -CREATE USER 'vt_filtered'@'localhost'; -GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, - REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, - LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, - SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER - ON *.* TO 'vt_filtered'@'localhost'; - -RESET SLAVE ALL; -RESET MASTER; -# custom sql is used to add custom scripts like creating users/passwords. We use it in our tests -# {{custom_sql}} - -# We need to set super_read_only back to what it was before -SET GLOBAL super_read_only=IFNULL(@original_super_read_only, 'ON'); diff --git a/vitess-mixin/e2e/cypress.json b/vitess-mixin/e2e/cypress.json deleted file mode 100644 index c1ffae0a972..00000000000 --- a/vitess-mixin/e2e/cypress.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "viewportWidth": 1200, - "viewportHeight": 900 -} diff --git a/vitess-mixin/e2e/cypress/fixtures/.keep b/vitess-mixin/e2e/cypress/fixtures/.keep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/vitess-mixin/e2e/cypress/integration/cluster_overview_spec.js b/vitess-mixin/e2e/cypress/integration/cluster_overview_spec.js deleted file mode 100644 index 5bb40a68c3b..00000000000 --- a/vitess-mixin/e2e/cypress/integration/cluster_overview_spec.js +++ /dev/null @@ -1,56 +0,0 @@ -const fs = require('fs') - -describe('vitess-mixin: Cluster Overview Dashboard Test', function () { - - let panelTitles = [] - - before(function () { - cy.readFile('./test/cluster_overview.json').then((data) => { - cy.createDashboard(data) - }) - }) - it('renders cluster overview dashboard', function () { - cy.visit('/d/vitess-cluster-overview/cluster-overview-auto-generated') - }) - //TEMPLATES - it('contains the Interval Template', function () { - cy.get('.submenu-controls').contains('Interval'); - }) - //LINKS - it('contains vitess-mixin Dashboard links dropdown', function () { - cy.get('.submenu-controls').get('.gf-form').contains('vitess-mixin') - }) - // INIT PANELS - it('checks all panels in the cluster overview dashboard exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(22) - expect(titles).to.deep.eq([ - '', - 'Query success - vtgate', - 'Query success - vttablet', - 'Query latency p99', - 'QPS - vtgate', - 'QPS - MySQL', - 'vtgate', - 'vttablet', - 'QPS - vttablet', - 'keyspace', - 'shard', - 'vtctld', - 'Requests', - 'Error rate', - 'Duration 99th quantile', - 'Requests (by keyspace)', - 'Error rate (by keyspace)', - 'Duration 99th quantile (by keyspace)', - '# of serving tablets', - 'Slow queries', - 'Query/Transaction killed' - ]) - }) - }) -}) diff --git a/vitess-mixin/e2e/cypress/integration/vtgate_host_view.js b/vitess-mixin/e2e/cypress/integration/vtgate_host_view.js deleted file mode 100644 index 7cbbcdb0e9a..00000000000 --- a/vitess-mixin/e2e/cypress/integration/vtgate_host_view.js +++ /dev/null @@ -1,174 +0,0 @@ -const fs = require('fs') - -describe('vitess-mixin: Vtgate Host View Dashboard Test', function() { - - let panelTitles = [] - - before(function() { - cy.readFile('./test/vtgate_host_view.json').then((data) => { - cy.createDashboard(data) - }) - }) - it('renders vtgate hostview dashboard', function() { - cy.visit('/d/vitess-vtgate-host-view/vtgate - host view (auto-generated)') - }) - //SUB-MENU CONTROLS - it('contains the Host(s) Template', function() { - cy.get('.submenu-controls').contains('Host(s)'); - }) - it('contains vitess-mixin Dashboard links dropdown', function() { - cy.get('.submenu-controls').get('.gf-form').contains('vitess-mixin') - }) - //Rows are loaded at start time - it('contains 5 rows', function() { - cy.get('.dashboard-row').should('have.length',5) - }) - // RED ROW - it('contains the RED row', function() { - cy.get('.dashboard-row').contains('RED - Requests / Error rate / Duration') - }) - - it('checks all panels in the RED row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests', - 'Error rate', - 'Duration 99th quantile' - ]) - }) - }) - - it('collapses the RED row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED - Requests / Error rate / Duration').click(); - }) - - // ROW (BY TABLET TYPE) - it('contains the RED (by tablet type) row', function() { - cy.get('.dashboard-row').contains('RED (by tablet type)'); - }) - it('RED (by tablet type) row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('RED (by tablet type)'); - }) - it('expands the RED (by tablet type) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by tablet type)').click(); - }) - - it('checks all panels in the RED (by tablet type) row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests (by db_type)', - 'Error rate (by db_type)', - 'Duration 99th quantile (by db_type)' - ]) - }) - }) - - it('collapses the RED (by tablet type) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by tablet type)').click(); - cy.get('.dashboard-row--collapsed').contains('RED (by tablet type)'); - }) - - //ERRORS ROW - it('contains the Errors row', function() { - cy.get('.dashboard-row').contains('Errors'); - }) - it('Errors row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('Errors'); - }) - it('expands the Errors row', function(){ - cy.get('.dashboard-row__title.pointer').contains('Errors').scrollIntoView().click(); - }) - it('checks all panels in the Errors Row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(3) - expect(titles).to.deep.eq([ - '', - 'Errors (by keyspace)', - 'Errors (by code)' - ]) - }) - }) - it('collapses the Errors row', function(){ - cy.get('.dashboard-row__title.pointer').contains('Errors').click(); - cy.get('.dashboard-row--collapsed').contains('Errors'); - }) - //DURATION ROW - it('contains the Duration row', function() { - cy.get('.dashboard-row').contains(/^Duration/) - }) - it('Duration row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains(/^Duration/) - }) - it('expands the Duration row', function(){ - cy.get('.dashboard-row__title.pointer').contains(/^Duration/).click(); - }) - - it('checks all panels in the Duration row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Duration (Avg)', - 'Duration 50th quantile', - 'Duration 95th quantile' - ]) - }) - }) - - it('collapses the Duration row', function(){ - cy.get('.dashboard-row__title.pointer').contains(/^Duration/).click(); - cy.get('.dashboard-row--collapsed').contains(/^Duration/); - }) - //OS ROW - it('contains the OS row', function() { - cy.get('.dashboard-row').contains('OS') - }) - it('OS row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('OS') - }) - it('expands the OS row', function(){ - cy.get('.dashboard-row__title.pointer').contains('OS').click(); - }) - - it('checks all panels in the OS row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(5) - expect(titles).to.deep.eq([ - '', - 'CPU Usage', - 'Memory Usage', - 'Network Usage', - 'TCP Retransmissions' - ]) - }) - }) - - it('collapses the OS row', function(){ - cy.get('.dashboard-row__title.pointer').contains('OS').click(); - cy.get('.dashboard-row--collapsed').contains('OS'); - }) -}) diff --git a/vitess-mixin/e2e/cypress/integration/vtgate_overview.js b/vitess-mixin/e2e/cypress/integration/vtgate_overview.js deleted file mode 100644 index eb8122ca403..00000000000 --- a/vitess-mixin/e2e/cypress/integration/vtgate_overview.js +++ /dev/null @@ -1,201 +0,0 @@ -const fs = require('fs') - -describe('vitess-mixin: Vtgate Overview Dashboard Test', function() { - - let panelTitles = [] - - before(function() { - cy.readFile('./test/vtgate_overview.json').then((data) => { - cy.createDashboard(data) - }) - }) - it('renders vtgate overview dashboard', function() { - cy.visit('/d/vitess-vtgate-overview/vtgate - overview (auto-generated)') - }) - //SUB-MENU CONTROLS - it('contains vitess-mixin Dashboard links dropdown', function() { - cy.get('.submenu-controls').get('.gf-form').contains('vitess-mixin'); - }) - // RED ROW - it('contains the RED row', function() { - cy.get('.dashboard-row').contains('RED - Requests / Error rate / Duration'); - }) - - it('checks all panels in the RED row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests', - 'Error rate', - 'Duration 99th quantile' - ]) - }) - }) - - it('collapses the RED row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED - Requests / Error rate / Duration').click(); - }) - - // RED (BY KEYSPACE) ROW - it('contains the RED (by keyspace) row', function() { - cy.get('.dashboard-row').contains('RED (by keyspace)'); - }) - it('RED (by keyspace) row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('RED (by keyspace)'); - }) - it('expands the RED (by keyspace) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by keyspace)').click(); - }) - - it('checks all panels in the RED (by keyspace) row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests (by keyspace)', - 'Error rate (by keyspace)', - 'Duration 99th quantile (by keyspace)' - ]) - }) - }) - - it('collapses the RED (by keyspace) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by keyspace)').click(); - }) - - // ROW (BY TABLET TYPE) - it('contains the RED (by tablet type) row', function() { - cy.get('.dashboard-row').contains('RED (by tablet type)'); - }) - it('RED (by tablet type) row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('RED (by tablet type)'); - }) - it('expands the RED (by tablet type) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by tablet type)').click(); - }) - - it('checks all panels in the RED (By tablet type) row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests (by db_type)', - 'Error rate (by db_type)', - 'Duration 99th quantile (by db_type)' - ]) - }) - }) - - it('collapses the RED (by tablet type) row', function(){ - cy.get('.dashboard-row__title.pointer').contains('RED (by tablet type)').click(); - cy.get('.dashboard-row--collapsed').contains('RED (by tablet type)'); - }) - - //ERRORS ROW - it('contains the Errors row', function() { - cy.get('.dashboard-row').contains('Errors'); - }) - it('Errors row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('Errors'); - }) - it('expands the Errors row', function(){ - cy.get('.dashboard-row__title.pointer').contains('Errors').click(); - }) - - it('checks all panels in the Errors row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Errors (by code)', - 'Errors (by operation)', - 'Errors (by db_type)' - ]) - }) - }) - - it('collapses the Errors row', function(){ - cy.get('.dashboard-row__title.pointer').contains('Errors').click(); - }) - - //DURATION ROW - it('contains the Duration row', function() { - cy.get('.dashboard-row').contains(/^Duration/); - }) - it('Duration row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains(/^Duration/); - }) - it('expands the Duration row', function(){ - cy.get('.dashboard-row__title.pointer').contains(/^Duration/).click(); - }) - - it('checks all panels in the Duration row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Duration (Avg)', - 'Duration 50th quantile', - 'Duration 95th quantile' - ]) - }) - }) - - it('collapses the Duration row', function(){ - cy.get('.dashboard-row__title.pointer').contains(/^Duration/).click(); - }) - - //OS ROW - it('contains the OS row', function() { - cy.get('.dashboard-row').contains('OS'); - }) - it('OS row is collapsed', function() { - cy.get('.dashboard-row--collapsed').contains('OS'); - }) - it('expands the OS row', function(){ - cy.get('.dashboard-row__title.pointer').contains('OS').click(); - }) - - it('checks all panels in the row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(5) - expect(titles).to.deep.eq([ - '', - 'CPU Usage', - 'Memory Usage', - 'Network Usage', - 'TCP Retransmissions' - ]) - }) - }) - - it('collapses the OS row', function(){ - cy.get('.dashboard-row__title.pointer').contains('OS').click(); - cy.get('.dashboard-row--collapsed').contains('OS'); - }) -}) diff --git a/vitess-mixin/e2e/cypress/integration/vttablet_host_view.js b/vitess-mixin/e2e/cypress/integration/vttablet_host_view.js deleted file mode 100644 index f98ba803d85..00000000000 --- a/vitess-mixin/e2e/cypress/integration/vttablet_host_view.js +++ /dev/null @@ -1,409 +0,0 @@ -const fs = require('fs') - -describe('vitess-mixin: Vttablet Host View Dashboard Test', function () { - - let panelTitles = [] - - before(function () { - cy.readFile('./test/vttablet_host_view.json').then((data) => { - cy.createDashboard(data) - }) - }) - it('renders vttablet hostview dashboard', function () { - cy.visit('/d/vitess-vttablet-host-view/vttablet - host view (auto-generated)') - }) - //SUB-MENU CONTROLS - it('contains the Host(s) Template', function () { - cy.get('.submenu-controls').contains('Host(s)'); - }) - it('contains vitess-mixin Dashboard links dropdown', function () { - cy.get('.submenu-controls').get('.gf-form').contains('vitess-mixin') - }) - //All Rows are loaded at start time - it('contains 12 rows', function () { - cy.get('.dashboard-row').should('have.length', 12) - }) - - // RED ROW - it('contains the RED row', function () { - cy.get('.dashboard-row').contains('RED - Requests / Error rate / Duration') - }) - - it('checks all panels in the RED row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests', - 'Error rate', - 'Duration (p99)' - ]) - }) - }) - - it('collapses the RED row', function () { - cy.get('.dashboard-row__title.pointer').contains('RED - Requests / Error rate / Duration').click(); - }) - // RED BY PLAN TYPE ROW - - it('contains the RED (by plan type) row', function () { - cy.get('.dashboard-row').contains('RED (by plan type)') - }) - it('RED (by plan type) row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('RED (by plan type)') - }) - it('expands the RED (by plan type) row', function () { - cy.get('.dashboard-row__title.pointer').contains('RED (by plan type)').click(); - }) - - it('checks all panels in the RED (by plan type) row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'Requests (by plan type)', - 'Error rate (by plan type)', - 'Duration p99 (by plan type)' - ]) - }) - }) - - it('collapses the RED (by plan type) row', function () { - cy.get('.dashboard-row__title.pointer').contains('RED (by plan type)').click(); - cy.get('.dashboard-row--collapsed').contains('RED (by plan type)'); - }) - - // RED BY TABLE ROW - - it('contains the RED (by table) row', function () { - cy.get('.dashboard-row').contains('RED (by table)') - }) - it('RED (by table) row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('RED (by table)') - }) - it('expands the RED (by table) row', function () { - cy.get('.dashboard-row__title.pointer').contains('RED (by table)').click(); - }) - - it('checks all panels in the RED (by table) row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(3) - expect(titles).to.deep.eq([ - '', - 'Requests (by table)', - 'Error rate (by table)' - ]) - }) - }) - - it('collapses the RED (by table) row', function () { - cy.get('.dashboard-row__title.pointer').contains('RED (by table)').click(); - cy.get('.dashboard-row--collapsed').contains('RED (by table)'); - }) - - // Rows Returned - it('contains the Rows Returned row', function () { - cy.get('.dashboard-row').contains(/^Rows returned/) - }) - it('Rows returned row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains(/^Rows returned/) - }) - it('expands the Rows returned row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Rows returned/).click(); - }) - - it('checks all panels in the Rows returned row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(3) - expect(titles).to.deep.eq([ - '', - 'Rows Returned (by table)', - 'Rows Returned (by plan)' - ]) - }) - }) - - it('collapses the Rows returned row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Rows returned/).click(); - cy.get('.dashboard-row--collapsed').contains(/^Rows returned/); - }) - - // Queries/Errors - it('contains the Queries/Errors row', function () { - cy.get('.dashboard-row').contains(/^Queries\/Errors/) - }) - it('Queries/Errors row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains(/^Queries\/Errors/) - }) - it('expands the Queries/Errors row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Queries\/Errors/).click(); - }) - - it('checks all panels in the Queries/Errors row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(3) - expect(titles).to.deep.eq([ - '', - 'Queries Killed', - 'Query errors (by error code)' - ]) - }) - }) - - it('collapses the Queries/Errors row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Queries\/Errors/).click(); - cy.get('.dashboard-row--collapsed').contains(/^Queries\/Errors/); - }) - - // Vitess Query pool - it('contains the Vitess - Query pool row', function () { - cy.get('.dashboard-row').contains('Vitess - Query pool') - }) - it('Vitess - Query pool row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('Vitess - Query pool') - }) - it('expands the Vitess - Query pool row', function () { - cy.get('.dashboard-row__title.pointer').contains('Vitess - Query pool').click(); - }) - - it('checks all panels in the Query pool row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(6) - expect(titles).to.deep.eq([ - '', - 'Available Connections', - 'Active Connections', - 'Idle Closed Rate', - 'Wait count', - 'Avg wait time' - ]) - }) - }) - - it('collapses the Vitess - Query pool row', function () { - cy.get('.dashboard-row__title.pointer').contains('Vitess - Query pool').click(); - cy.get('.dashboard-row--collapsed').contains('Vitess - Query pool'); - }) - - // Vitess Transaction pool - it('contains the Vitess - Transaction pool row', function () { - cy.get('.dashboard-row').contains('Vitess - Transaction pool') - }) - it('Vitess - Transaction pool row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('Vitess - Transaction pool') - }) - it('expands the Vitess - Transaction pool row', function () { - cy.get('.dashboard-row__title.pointer').contains('Vitess - Transaction pool').click(); - }) - - it('checks all panels in the Transaction row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(6) - expect(titles).to.deep.eq([ - '', - 'Available Connections', - 'Active Connections', - 'Idle Closed Rate', - 'Wait count', - 'Avg wait time' - ]) - }) - }) - - it('collapses the Vitess - Transaction pool row', function () { - cy.get('.dashboard-row__title.pointer').contains('Vitess - Transaction pool').click(); - cy.get('.dashboard-row--collapsed').contains('Vitess - Transaction pool'); - }) - - //Vitess timings - it('contains the Vitess Timings row', function () { - cy.get('.dashboard-row').contains(/^Vitess Timings/) - }) - it('Vitess Timings row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains(/^Vitess Timings/) - }) - it('Vitess Timings row has 8 panels', function () { - cy.get('.dashboard-row').contains(/^Vitess Timings/).find('.dashboard-row__panel_count').contains('(8 panels)') - }) - it('expands the Vitess Timings row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Vitess Timings/).click(); - }) - - it('checks all panels in the Vitess Timings row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(9) - expect(titles).to.deep.eq([ - '', - 'Query Duration (avg)', - 'Query Duration (p50)', - 'Query Duration (p95)', - 'VtGate -> VtTablet Call Time (avg)', - 'Query Time Distribution (Heatmap)', - 'Transaction Duration (avg)', - 'Transaction Duration (p50)', - 'Transaction Duration (p95)' - ]) - }) - }) - - it('collapses the Vitess Timings row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Vitess Timings/).click(); - cy.get('.dashboard-row--collapsed').contains(/^Vitess Timings/); - }) - - - //MYSQL ROW - it('contains the MySQL row', function () { - cy.get('.dashboard-row').contains('MySQL'); - }) - it('MySQL row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('MySQL'); - }) - it('expands the MySQL row', function () { - cy.get('.dashboard-row__title.pointer').contains('MySQL').click(); - }) - it('checks all panels in the MySQL row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(2) - expect(titles).to.deep.eq([ - '', - 'Slow Queries' - ]) - }) - }) - it('collapses the MySQL row', function () { - cy.get('.dashboard-row__title.pointer').contains('MySQL').click(); - cy.get('.dashboard-row--collapsed').contains('MySQL'); - }) - - //MYSQL Timings ROW - it('contains the MySQL Timings row', function () { - cy.get('.dashboard-row').contains(/MySQL Timings/); - }) - it('MySQL Timings row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains(/MySQL Timings/); - }) - it('expands the MySQL Timings row', function () { - cy.get('.dashboard-row__title.pointer').contains(/MySQL Timings/).click(); - }) - - it('checks all panels in the MySQL row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'MySQL time (avg)', - 'MySQL Exec Time P50', - 'MySQL Exec Time P95' - ]) - }) - }) - - it('collapses the MySQL Timings row', function () { - cy.get('.dashboard-row__title.pointer').contains(/MySQL Timings/).click(); - cy.get('.dashboard-row--collapsed').contains(/MySQL Timings/); - }) - - //OS ROW - it('contains the OS row', function () { - cy.get('.dashboard-row').contains('OS'); - }) - it('OS row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains('OS'); - }) - it('expands the OS row', function () { - cy.get('.dashboard-row__title.pointer').contains('OS').scrollIntoView().click(); - }) - it('checks all panels in the OS row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(6) - expect(titles).to.deep.eq([ - '', - 'CPU Usage', - 'Memory Usage', - '/mnt disk free', - 'Network Tx Bytes', - 'Network Rx Bytes' - ]) - }) - }) - it('collapses the OS row', function () { - cy.get('.dashboard-row__title.pointer').contains('OS').click(); - cy.get('.dashboard-row--collapsed').contains('OS'); - }) - - //Misc ROW - it('contains the Misc row', function () { - cy.get('.dashboard-row').contains(/^Misc/); - }) - it('Misc row is collapsed', function () { - cy.get('.dashboard-row--collapsed').contains(/^Misc/); - }) - it('expands the Misc row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Misc/).click(); - }) - it('checks all panels in the Misc row exist',function() { - cy.get('.panel-title').should(($p) => { - let titles = $p.map((i,el) => { - return Cypress.$(el).text() - }) - titles = titles.get() - expect(titles).to.have.length(4) - expect(titles).to.deep.eq([ - '', - 'GC Count', - 'GC Duration total per second', - 'GC Duration quantiles (all hosts)' - ]) - }) - }) - it('collapses the Misc row', function () { - cy.get('.dashboard-row__title.pointer').contains(/^Misc/).click(); - cy.get('.dashboard-row--collapsed').contains(/^Misc/); - }) - -}) diff --git a/vitess-mixin/e2e/cypress/plugins/index.js b/vitess-mixin/e2e/cypress/plugins/index.js deleted file mode 100644 index aa9918d2153..00000000000 --- a/vitess-mixin/e2e/cypress/plugins/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/// -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -} diff --git a/vitess-mixin/e2e/cypress/support/commands.js b/vitess-mixin/e2e/cypress/support/commands.js deleted file mode 100644 index 88dec8ed7b0..00000000000 --- a/vitess-mixin/e2e/cypress/support/commands.js +++ /dev/null @@ -1,33 +0,0 @@ -const http = require("http") - -Cypress.Commands.overwrite('visit', (orig, url, options) => { - options = options || {} - options.auth = { - username: 'admin', - password: 'admin', - } - return orig(url, options) -}) - -Cypress.Commands.add('createDashboard', function(dashboardJSON) { - - const payload = JSON.stringify({ - dashboard: dashboardJSON, - overwrite: true - }) - - const options = { - auth: 'admin:admin', - hostname: 'grafana', - port: 3000, - path: '/api/dashboards/db', - method: 'POST', - headers: { - 'Content-Type': 'application/json', - } - } - - const req = http.request(options) - req.write(payload) - req.end() -}) diff --git a/vitess-mixin/e2e/cypress/support/index.js b/vitess-mixin/e2e/cypress/support/index.js deleted file mode 100644 index 614041bb83f..00000000000 --- a/vitess-mixin/e2e/cypress/support/index.js +++ /dev/null @@ -1,28 +0,0 @@ -require('./commands') - -const fs = require('fs') - -// This does not use the usual Cypress.Commands.add registration so that it's -// performed synchronously and we're able to return the panelTitles variable. -cy.createDashboardFromUnitTests = function(testDir, uid, excludePanels=[]) { - let panelTitles = [] - cy.readFile(testDir).then(function(str) { - let panels = [] - for (let [i, [name, panel]] of Object.entries(Object.entries(str))) { - if (excludePanels.includes(name)) { - continue - } - panel['id'] = parseInt(i) - panel['gridPos'] = {'w': 6, 'h': 4, 'x': i * 6 % 24 } - panelTitles.push(panel.title) - panels.push(panel) - } - let dashboardJSON = { - 'uid': uid, - 'title': uid, - 'panels': panels - } - cy.createDashboard(dashboardJSON) - }) - return panelTitles -} diff --git a/vitess-mixin/e2e/dbcli.sh b/vitess-mixin/e2e/dbcli.sh deleted file mode 100755 index 6d56f0b2763..00000000000 --- a/vitess-mixin/e2e/dbcli.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -usage () { - echo "Starts a session on a sideloaded vttablet." - echo "Note that this is a direct MySQL connection; if you actually want to work with Vitess, connect via the vtgate with:" - echo " mysql --port=15306 --host=127.0.0.1" - echo - echo "Usage: $0 []" - echo " Don't forget the 'vt_' before the keyspace!" -} - -if [ $# -lt 1 ]; then - usage - exit -1 -fi - -keyspace=${2:-vt_test_keyspace} -long_alias=`printf "%010d" $1` -docker-compose exec vttablet$1 mysql -uvt_dba -S /vt/vtdataroot/vt_${long_alias}/mysql.sock $keyspace diff --git a/vitess-mixin/e2e/default_vschema.json b/vitess-mixin/e2e/default_vschema.json deleted file mode 100644 index e0b50a66037..00000000000 --- a/vitess-mixin/e2e/default_vschema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "sharded": false, - "vindexes": { - "hash": { - "type": "hash" - } - } -} diff --git a/vitess-mixin/e2e/docker-compose.beginners.yml b/vitess-mixin/e2e/docker-compose.beginners.yml deleted file mode 100644 index 46eadd57801..00000000000 --- a/vitess-mixin/e2e/docker-compose.beginners.yml +++ /dev/null @@ -1,312 +0,0 @@ -version: "2.1" -services: - consul1: - image: consul:latest - hostname: "consul1" - ports: - - "8400:8400" - - "8500:8500" - - "8600:8600" - command: "agent -server -bootstrap-expect 3 -ui -disable-host-node-id -client 0.0.0.0" - consul2: - image: consul:latest - hostname: "consul2" - expose: - - "8400" - - "8500" - - "8600" - command: "agent -server -retry-join consul1 -disable-host-node-id" - depends_on: - - consul1 - consul3: - image: consul:latest - hostname: "consul3" - expose: - - "8400" - - "8500" - - "8600" - command: "agent -server -retry-join consul1 -disable-host-node-id" - depends_on: - - consul1 - # This is a convenience container to quickly test vitess against an external database. - # In practice you will point Vitess to your existing database and migrate to a Vitess managed cluster. - external_db_host: - build: - context: ./external_db/mysql - dockerfile: Dockerfile - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-pass} - MYSQL_DATABASE: ${DB:-commerce} - MYSQL_USER: ${DB_USER:-external_db_user} - MYSQL_PASSWORD: ${DB_PASS:-external_db_password} - volumes: - - ./external_db/mysql/:/docker-entrypoint-initdb.d/ - - ./external_db/mysql/log:/var/log/mysql - command: - - --server-id=1 - - --log-bin=mysql-bin - - --gtid_mode=ON - - --enforce_gtid_consistency - - --general_log=1 - - --slow_query_log=1 - healthcheck: - test: "/usr/bin/mysql --user=root --password=$${MYSQL_ROOT_PASSWORD} --execute \"SHOW DATABASES;\"" - timeout: 10s - retries: 10 - ports: - - "3306" - - vtctld: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15000:$WEB_PORT" - - "$GRPC_PORT" - command: ["sh", "-c", " /vt/bin/vtctld \ - $TOPOLOGY_FLAGS \ - -cell $CELL \ - -service_map 'grpc-vtctl' \ - -backup_storage_implementation file \ - -file_backup_storage_root /vt/vtdataroot/backups \ - -logtostderr=true \ - -port $WEB_PORT \ - -grpc_port $GRPC_PORT - "] - depends_on: - - consul1 - - consul2 - - consul3 - depends_on: - external_db_host: - condition: service_healthy - - vtgate: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15099:$WEB_PORT" - - "$GRPC_PORT" - - "15306:$MYSQL_PORT" - command: ["sh", "-c", "/vt/bin/vtgate \ - $TOPOLOGY_FLAGS \ - --logtostderr=true \ - --port $WEB_PORT \ - --grpc_port $GRPC_PORT \ - --mysql_server_port $MYSQL_PORT \ - --mysql_auth_server_impl none \ - --cell $CELL \ - --cells_to_watch $CELL \ - --tablet_types_to_wait PRIMARY,REPLICA \ - --service_map 'grpc-vtgateservice' \ - --enable_system_settings=true \ - "] - volumes: - - ".:/script" - environment: - - KEYSPACE - - DB - depends_on: - - vtctld - depends_on: - vttablet101: - condition: service_healthy - - schemaload: - image: vitess/lite:${VITESS_TAG:-latest} - command: - - sh - - -c - - /script/schemaload.sh - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - TARGETTAB - - SLEEPTIME - - VSCHEMA_FILE - - SCHEMA_FILES - - POST_LOAD_FILE - - EXTERNAL_DB - volumes: - - .:/script - depends_on: - vttablet101: - condition: service_healthy - - vttablet100: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15100:$WEB_PORT" - - "$GRPC_PORT" - - "3306" - volumes: - - ".:/script" - - "./backups:/vt/vtdataroot/backups" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - - ROLE=primary - command: ["sh", "-c", "[ $$EXTERNAL_DB -eq 1 ] && /script/vttablet-up.sh 100 || exit 0"] - depends_on: - - vtctld - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:$$WEB_PORT/debug/health"] - interval: 30s - timeout: 10s - retries: 15 - - vttablet101: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15101:$WEB_PORT" - - "$GRPC_PORT" - - "3306" - volumes: - - ".:/script" - - "./backups:/vt/vtdataroot/backups" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - - ROLE=primary - command: ["sh", "-c", "/script/vttablet-up.sh 101"] - depends_on: - - vtctld - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:$$WEB_PORT/debug/health"] - interval: 30s - timeout: 10s - retries: 15 - - vttablet102: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15102:$WEB_PORT" - - "$GRPC_PORT" - - "3306" - volumes: - - ".:/script" - - "./backups:/vt/vtdataroot/backups" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - command: ["sh", "-c", "/script/vttablet-up.sh 102"] - depends_on: - - vtctld - - vttablet101 - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:$$WEB_PORT/debug/health"] - interval: 30s - timeout: 10s - retries: 15 - - vttablet103: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15103:$WEB_PORT" - - "$GRPC_PORT" - - "3306" - volumes: - - ".:/script" - - "./backups:/vt/vtdataroot/backups" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - command: ["sh", "-c", "/script/vttablet-up.sh 103"] - depends_on: - - vtctld - - vttablet101 - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:$$WEB_PORT/debug/health"] - interval: 30s - timeout: 10s - retries: 15 - - vtorc: - image: vitess/lite:${VITESS_TAG:-latest} - command: ["sh", "-c", "/script/vtorc-up.sh"] - depends_on: - - vtctld - ports: - - "13000:3000" - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:3000/api/status"] - interval: 5s - timeout: 10s - retries: 15 - - vreplication: - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS - - WEB_PORT - - GRPC_PORT - - CELL - - KEYSPACE - - DB - - EXTERNAL_DB - - DB_PORT - - DB_HOST - - DB_USER - - DB_PASS - - DB_CHARSET - command: ["sh", "-c", "[ $$EXTERNAL_DB -eq 1 ] && /script/externaldb_vreplication.sh || exit 0"] - depends_on: - - vtctld diff --git a/vitess-mixin/e2e/docker-compose.dev.yml b/vitess-mixin/e2e/docker-compose.dev.yml deleted file mode 100644 index e5bb4f20ef5..00000000000 --- a/vitess-mixin/e2e/docker-compose.dev.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: '3' -services: - grafana: - image: grafana/grafana:${GRAFANA_VERSION?err} - ports: - - "3030:3000" - e2e: - build: - context: . - args: - CYPRESS_IMAGE: cypress/included:5.3.0 - image: grafonnet-e2e-dev - entrypoint: cypress open --project . - depends_on: - - grafana - environment: - - CYPRESS_baseUrl=http://grafana:3000 - - CYPRESS_video=false - - DISPLAY=${DISPLAY?err} - volumes: - - ./cypress:/e2e/cypress - - ./cypress.json:/e2e/cypress.json - - ../dashboards_out:/e2e/test - - /tmp/.X11-unix:/tmp/.X11-unix - deploy: - resources: - limits: - memory: 2G - reservations: - memory: 1G -volumes: - prometheus-data: {} diff --git a/vitess-mixin/e2e/docker-compose.vt.yml b/vitess-mixin/e2e/docker-compose.vt.yml deleted file mode 100644 index 1132068f252..00000000000 --- a/vitess-mixin/e2e/docker-compose.vt.yml +++ /dev/null @@ -1,447 +0,0 @@ -version: '3' -services: - consul1: - command: agent -server -bootstrap-expect 3 -ui -disable-host-node-id -client 0.0.0.0 - hostname: consul1 - image: consul:latest - ports: - - 8400:8400 - - 8500:8500 - - 8600:8600 - consul2: - command: agent -server -retry-join consul1 -disable-host-node-id - depends_on: - - consul1 - expose: - - "8400" - - "8500" - - "8600" - hostname: consul2 - image: consul:latest - consul3: - command: agent -server -retry-join consul1 -disable-host-node-id - depends_on: - - consul1 - expose: - - "8400" - - "8500" - - "8600" - hostname: consul3 - image: consul:latest - external_db_host: - build: - context: ./external_db/mysql - dockerfile: Dockerfile - command: - - --server-id=1 - - --log-bin=mysql-bin - - --gtid_mode=ON - - --enforce_gtid_consistency - - --general_log=1 - - --slow_query_log=1 - environment: - MYSQL_DATABASE: ${DB:-commerce} - MYSQL_PASSWORD: ${DB_PASS:-external_db_password} - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-pass} - MYSQL_USER: ${DB_USER:-external_db_user} - healthcheck: - retries: 10 - test: /usr/bin/mysql --user=root --password=$${MYSQL_ROOT_PASSWORD} --execute - "SHOW DATABASES;" - timeout: 10s - ports: - - "3306" - restart: always - volumes: - - ./external_db/mysql/:/docker-entrypoint-initdb.d/ - - ./external_db/mysql/log:/var/log/mysql - schemaload_lookup_keyspace: - command: - - sh - - -c - - /script/schemaload.sh - depends_on: - vttablet301: - condition: service_healthy - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=lookup_keyspace - - TARGETTAB=test-0000000301 - - SLEEPTIME=15 - - VSCHEMA_FILE=lookup_keyspace_vschema.json - - SCHEMA_FILES=lookup_keyspace_schema_file.sql - - POST_LOAD_FILE= - - EXTERNAL_DB=0 - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - .:/script - schemaload_test_keyspace: - command: - - sh - - -c - - /script/schemaload.sh - depends_on: - vttablet101: - condition: service_healthy - vttablet201: - condition: service_healthy - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - TARGETTAB=test-0000000101 - - SLEEPTIME=15 - - VSCHEMA_FILE=test_keyspace_vschema.json - - SCHEMA_FILES=test_keyspace_schema_file.sql - - POST_LOAD_FILE= - - EXTERNAL_DB=0 - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - .:/script - vreplication: - command: - - sh - - -c - - '[ $$EXTERNAL_DB -eq 1 ] && /script/externaldb_vreplication.sh || exit 0' - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - EXTERNAL_DB=0 - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - .:/script - vtctld: - command: - - sh - - -c - - ' /vt/bin/vtctld -topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global -cell test - -service_map ''grpc-vtctl'' -backup_storage_implementation file -file_backup_storage_root - /vt/vtdataroot/backups -logtostderr=true -port 8080 -grpc_port 15999 ' - depends_on: - external_db_host: - condition: service_healthy - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15000:8080 - - "15999" - volumes: - - .:/script - vtgate: - command: - - sh - - -c - - '/script/run-forever.sh /vt/bin/vtgate --topo_implementation consul --topo_global_server_address - consul1:8500 --topo_global_root vitess/global --logtostderr=true --port 8080 --grpc_port - 15999 --mysql_server_port 15306 --mysql_auth_server_impl none --cell test --cells_to_watch - test --tablet_types_to_wait PRIMARY,REPLICA,RDONLY --service_map ''grpc-vtgateservice'' - --normalize_queries=true ' - depends_on: - - vtctld - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15099:8080 - - "15999" - - 15306:15306 - volumes: - - .:/script - vtorc: - command: - - sh - - -c - - /script/vtorc-up.sh - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - EXTERNAL_DB=0 - - DB_USER= - - DB_PASS= - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 13000:3000 - volumes: - - .:/script - vttablet101: - command: - - sh - - -c - - /script/vttablet-up.sh 101 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=-80 - - ROLE=primary - - VTHOST=vttablet101 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15101:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet102: - command: - - sh - - -c - - /script/vttablet-up.sh 102 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=-80 - - ROLE=replica - - VTHOST=vttablet102 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15102:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet201: - command: - - sh - - -c - - /script/vttablet-up.sh 201 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=80- - - ROLE=primary - - VTHOST=vttablet201 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15201:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet202: - command: - - sh - - -c - - /script/vttablet-up.sh 202 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=80- - - ROLE=replica - - VTHOST=vttablet202 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15202:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet301: - command: - - sh - - -c - - /script/vttablet-up.sh 301 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=lookup_keyspace - - SHARD=- - - ROLE=primary - - VTHOST=vttablet301 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15301:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet302: - command: - - sh - - -c - - /script/vttablet-up.sh 302 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=lookup_keyspace - - SHARD=- - - ROLE=replica - - VTHOST=vttablet302 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl -s --fail --show-error localhost:8080/debug/health - timeout: 10s - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - 15302:8080 - - "15999" - - "3306" - volumes: - - .:/script - prometheus: - image: prom/prometheus:v2.21.0 - ports: - - 9000:9090 - volumes: - - ./prometheus:/etc/prometheus - - ../prometheus_rules.yaml:/etc/prometheus/prometheus_rules.yaml - - prometheus-data:/prometheus - command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml - depends_on: - - vtctld - grafana: - image: grafana/grafana:${GRAFANA_VERSION?err} - ports: - - "3030:3000" - volumes: - - ./grafana/provisioning:/etc/grafana/provisioning - - ../dashboards_out/cluster_overview.json:/etc/grafana/provisioning/dashboards/cluster_overview.json - - ../dashboards_out/vtgate_overview.json:/etc/grafana/provisioning/dashboards/vtgate_overview.json - - ../dashboards_out/vtgate_host_view.json:/etc/grafana/provisioning/dashboards/vtgate_host_view.json - - ../dashboards_out/vttablet_host_view.json:/etc/grafana/provisioning/dashboards/vttablet_host_view.json - depends_on: - - prometheus - - vtgate - - vttablet101 - node-exporter: - image: prom/node-exporter - volumes: - - /proc:/host/proc:ro - - /sys:/host/sys:ro - - /:/rootfs:ro - command: - - '--path.procfs=/host/proc' - - '--path.sysfs=/host/sys' - - --collector.filesystem.ignored-mount-points - - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)" - ports: - - '9100:9100' - deploy: - mode: global - mysqld_exporter: - image: prom/mysqld-exporter:latest - environment: - - DATA_SOURCE_NAME=root:pass@(external_db_host:3306)/ - ports: - - "9104:9104" - depends_on: - - external_db_host - # TODO: ADD CYPRESS FOR AUTOMATED TESTING -volumes: - prometheus-data: {} diff --git a/vitess-mixin/e2e/docker-compose.yml b/vitess-mixin/e2e/docker-compose.yml deleted file mode 100644 index e46fbcab849..00000000000 --- a/vitess-mixin/e2e/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: '3' -services: - grafana: - image: grafana/grafana:${GRAFANA_VERSION?err} - e2e: - build: - context: . - args: - CYPRESS_IMAGE: cypress/base:12 - image: grafonnet-e2e - command: npx cypress run - depends_on: - - grafana - environment: - - CYPRESS_baseUrl=http://grafana:3000 - - CYPRESS_video=false - volumes: - - ./cypress:/e2e/cypress - - ./cypress.json:/e2e/cypress.json - - ../dashboards_out:/e2e/test diff --git a/vitess-mixin/e2e/external_db/.env b/vitess-mixin/e2e/external_db/.env deleted file mode 100644 index f2745ff08ef..00000000000 --- a/vitess-mixin/e2e/external_db/.env +++ /dev/null @@ -1,4 +0,0 @@ -MYSQL_ROOT_PASSWORD=pass -MYSQL_USER=dbuser -MYSQL_PASSWORD=dbpass -MYSQL_DB=commerce \ No newline at end of file diff --git a/vitess-mixin/e2e/external_db/README.md b/vitess-mixin/e2e/external_db/README.md deleted file mode 100644 index 610a9350111..00000000000 --- a/vitess-mixin/e2e/external_db/README.md +++ /dev/null @@ -1,113 +0,0 @@ -**This README is kept here for reference, however the parent [README](../README) contains all the information necesaary to simulate this in a better way** - -# Simulate external/remote database for Vitess using docker-compose - -This directory has a docker-compose that will bring up a mysql instance. -You can then point your vitess cluster to it to understand how to use Vitess for your existing database -when you cannot install Vitess on the mysql instance. - -First you will need to [install docker-compose](https://docs.docker.com/compose/install/). - - -### Create new docker-machine -Create a new docker-machine that will run your mysql container. -Creating a new machine allows you to more comprehensively test the remote functionality. -``` -vitess/examples/compose/external_db$ docker-machine create remote-db -``` - -Grab the docker-machine ip -``` -vitess/examples/compose/external_db$ docker-machine ip remote-db -192.168.99.101 -``` - -Set the environment variables for the remote-db machine -``` -vitess/examples/compose/external_db$ eval $(docker-machine ip remote-db) -``` - -### Start mysql -Start the mysql instance -``` -vitess/examples/compose/external_db$ docker-compose up -d -``` -This will do the following; -1. Starts mysql service and exposes it at `:3306` -2. Creates a `commerce` database with `users` table -3. Adds sample data to the users table -4. Starts a lightweight adminer container to interact with the database accessible at `:8081` -5. Default credentials - ``` - MYSQL_DB: commerce - MYSQL_USER: dbuser - MYSQL_PASSWORD: dbpass - MYSQL_ROOT_PASSWORD: pass - ``` - -### Confirm containers are up -Run the following -``` -vitess/examples/compose/external_db$ docker-compose ps -``` - -A valid response should look like below -```sh - Name Command State Ports ---------------------------------------------------------------------------------------------------------- -external_db_adminer_1 entrypoint.sh docker-php-e ... Up 0.0.0.0:8081->8080/tcp -external_db_db_1 docker-entrypoint.sh mysqld Up (healthy) 0.0.0.0:3306->3306/tcp, 33060/tcp -``` -You now have a mysql instance ready to be *migrated* to Vitess. - -### Start Vitess pointed to this remote database -Head on to [vitess compose instructions](../README.md ) - -If using docker-compose.beginners.yml, run; -``` -vitess/examples/compose$ cp docker-compose.beginners.yml docker-compose.yml -``` -Update your `.env` file with these; -``` -KEYSPACE=commerce -DB=commerce -EXTERNAL_DB=1 -DB_HOST= -DB_PORT=3306 -DB_USER=dbuser -DB_PASS=dbpass -DB_CHARSET=CHARACTER SET latin1 COLLATE latin1_swedish_ci -``` - - -If using `vtcompose` command, run; -``` -vitess/examples/compose$ go run vtcompose/vtcompose.go -keyspaceData="commerce:0:2::" -externalDbData="commerce::3306:dbuser:dbpass:CHARACTER SET latin1 COLLATE latin1_swedish_ci" -``` - -**Ensure you start Vitess in a different docker-machine!!** -If not, run; -``` -vitess/examples/compose$ docker-machine create vitess -vitess/examples/compose$ $(docker-machine env vitess) -``` - -Start Vitess -``` -vitess/examples/compose$ docker-compose up -d -``` - -You should now have Vitess running against your external database instance. - -* [Follow this guide for advanced usage](../README.md#advanced-usage "Advanced Usage" ) -* [See this for common issues](../README.md#common-errors "Common Issues" ) - -### Migrating to Vitess -Migrating to Vitess entirely can be done from; -a) The Vitess Control Panel at http://:15000 -b) The `lvtctl.sh` Helper Script; - -The steps are same -1. Do an EmergencyReparentShard to make a replica the new primary. -2. Ran InitShardPrimary on the new primary. -3. If Vitess is wrong about who the MySQL primary is, you can update it with TabletExternallyReparented diff --git a/vitess-mixin/e2e/external_db/docker-compose.yml b/vitess-mixin/e2e/external_db/docker-compose.yml deleted file mode 100644 index 4c414324e63..00000000000 --- a/vitess-mixin/e2e/external_db/docker-compose.yml +++ /dev/null @@ -1,41 +0,0 @@ -version: '2.1' - -volumes: - vol-db: - -services: - db: - build: - context: ./mysql - dockerfile: Dockerfile - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-pass} - MYSQL_DATABASE: ${MYSQL_DB:-commerce} - MYSQL_USER: ${MYSQL_USER:-dbuser} - MYSQL_PASSWORD: ${MYSQL_PASSWORD:-dbpass} - volumes: - - vol-db:/var/lib/mysql - - ./mysql/:/docker-entrypoint-initdb.d/ - - ./mysql/mysql57.cnf:/etc/mysql/conf.d/mysql57.cnf:ro - - ./mysql/log:/var/log/mysql - command: - - --server-id=1 - - --log-bin=mysql-bin - - --gtid_mode=ON - - --enforce_gtid_consistency - - --general_log=1 - - --slow_query_log=1 - healthcheck: - test: "/usr/bin/mysql --user=root --password=$${MYSQL_ROOT_PASSWORD} --execute \"SHOW DATABASES;\"" - timeout: 10s - retries: 10 - ports: - - "3306:3306" - - adminer: - image: adminer - environment: - ADMINER_DESIGN: rmsoft - ports: - - "8081:8080" diff --git a/vitess-mixin/e2e/external_db/mysql/Dockerfile b/vitess-mixin/e2e/external_db/mysql/Dockerfile deleted file mode 100644 index f44c63951e3..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM mysql:5.7 -COPY . /docker-entrypoint-initdb.d \ No newline at end of file diff --git a/vitess-mixin/e2e/external_db/mysql/commerce.sql b/vitess-mixin/e2e/external_db/mysql/commerce.sql deleted file mode 100644 index 8154d91e7f5..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/commerce.sql +++ /dev/null @@ -1,20 +0,0 @@ -CREATE DATABASE IF NOT EXISTS commerce; -USE commerce; -DROP TABLE IF EXISTS users; -CREATE TABLE users ( - device_id BIGINT, - first_name VARCHAR(50), - last_name VARCHAR(50), - telephone BIGINT, - gender VARCHAR(16), - reference_id INT, - confidence INT, - coverage INT, - refstart DATETIME, - refstop DATETIME, - qrystart DATETIME, - qrystop DATETIME); - -LOAD DATA LOCAL INFILE '/docker-entrypoint-initdb.d/dataset.csv' INTO TABLE users FIELDS TERMINATED BY ','; - -ALTER TABLE users ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY; \ No newline at end of file diff --git a/vitess-mixin/e2e/external_db/mysql/dataset.csv b/vitess-mixin/e2e/external_db/mysql/dataset.csv deleted file mode 100644 index f2af8d74ce7..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/dataset.csv +++ /dev/null @@ -1,1000 +0,0 @@ -1,Elianore,Dunbleton,867-921-5436,Female,1,4,90,2018-11-20 00:23:59,2018-02-11 11:32:09,2018-06-18 23:40:59,2018-07-14 00:59:56 -2,Isa,Gilfoyle,539-533-8647,Male,7,86,65,2018-03-22 18:52:41,2019-01-16 21:08:18,2019-01-03 10:48:54,2018-08-29 14:52:14 -3,Millicent,Jedrys,184-899-3979,Female,5,30,17,2018-06-29 14:14:44,2018-06-07 05:03:57,2018-04-08 03:56:39,2018-02-12 06:41:48 -4,Davey,Sutch,862-838-8206,Male,1,62,94,2018-11-14 06:47:18,2018-08-08 22:44:26,2018-07-12 21:09:27,2018-03-04 16:23:22 -5,Adiana,Strowger,792-848-5008,Female,6,97,75,2018-08-07 01:32:59,2018-08-06 16:19:48,2019-01-20 13:11:37,2018-09-02 22:39:39 -6,Oby,Winthrop,522-736-9711,Male,7,95,11,2018-09-29 06:49:44,2018-02-02 11:07:25,2018-08-17 12:49:31,2018-06-03 13:27:48 -7,Berte,Beldon,947-708-5622,Female,6,3,26,2018-11-21 14:55:27,2018-11-15 17:16:04,2018-01-23 06:12:07,2018-08-30 14:40:37 -8,Logan,Atack,103-849-8439,Male,1,20,86,2019-01-04 01:18:38,2018-09-20 23:59:42,2018-05-10 13:14:24,2018-09-25 10:05:29 -9,Vania,Rosenblum,302-132-8289,Female,5,85,32,2018-03-31 00:24:32,2018-07-28 14:50:39,2018-04-19 12:32:49,2018-04-03 08:31:11 -10,Giffie,Lindblad,312-429-3236,Male,1,52,65,2018-04-15 15:34:57,2018-09-03 05:54:49,2019-01-05 06:42:27,2018-11-05 21:47:08 -11,Bili,Weigh,442-992-2387,Female,5,88,97,2018-12-01 04:31:51,2018-08-22 15:52:23,2018-12-07 23:25:46,2018-08-08 07:47:35 -12,Marlin,Stair,854-643-9633,Male,1,62,61,2018-05-30 14:08:25,2018-03-02 03:34:27,2018-03-21 22:43:12,2018-06-03 18:02:22 -13,Dacey,Corradino,364-281-2170,Female,3,82,19,2018-04-10 01:42:36,2019-01-08 17:42:03,2018-05-20 04:07:33,2018-10-14 03:57:57 -14,Caresse,Santon,221-929-9690,Female,7,97,50,2018-11-20 23:15:03,2019-01-01 18:46:08,2018-04-08 05:49:39,2018-10-04 04:00:37 -15,Trixi,Westphalen,681-738-3653,Female,7,100,87,2018-07-09 18:04:01,2018-11-21 04:36:24,2018-11-25 09:43:50,2018-09-10 07:40:31 -16,Pauline,Breslauer,821-177-6696,Female,6,63,24,2018-11-02 19:56:35,2018-02-09 07:46:00,2019-01-08 03:21:02,2018-09-18 08:18:06 -17,Meridith,Briddock,716-528-7645,Female,3,72,24,2018-11-30 20:13:26,2018-04-04 00:17:34,2018-07-12 04:42:43,2018-07-13 02:53:00 -18,Cordy,Sothern,733-369-1763,Male,6,72,5,2018-08-19 02:02:51,2018-10-01 16:39:38,2019-01-18 12:58:50,2018-04-26 11:01:54 -19,Thom,Swarbrigg,566-424-7472,Male,3,56,29,2018-01-25 19:13:40,2018-09-06 20:39:48,2018-12-23 14:49:40,2018-09-19 13:03:37 -20,Amelina,Ekell,514-321-8056,Female,5,42,43,2018-12-15 14:21:28,2018-08-07 02:53:55,2018-09-30 04:29:03,2018-08-02 18:29:13 -21,Cesare,Lahy,446-382-1825,Male,2,32,10,2018-07-08 01:24:43,2018-03-24 15:25:21,2018-11-15 18:50:17,2018-03-27 19:18:16 -22,Elnora,Cheale,489-718-9700,Female,6,12,73,2018-10-26 17:34:35,2018-12-22 05:44:59,2018-05-09 01:25:04,2018-09-21 18:40:44 -23,Hadrian,Snarie,859-447-4644,Male,1,18,4,2018-08-31 12:15:30,2018-04-16 11:19:30,2018-02-28 10:55:26,2018-10-31 07:05:29 -24,Ravid,Meriott,518-484-9203,Male,1,83,12,2018-12-01 21:38:00,2018-02-12 17:25:00,2018-09-18 16:34:45,2018-09-08 17:32:17 -25,Elenore,De Gowe,180-237-8349,Female,7,75,3,2018-03-20 20:52:00,2018-12-22 19:52:58,2018-07-06 23:18:01,2018-08-12 22:02:21 -26,Juieta,Pridie,278-696-9233,Female,1,93,57,2018-09-04 18:45:44,2018-06-04 17:38:47,2018-11-16 10:31:12,2018-07-15 10:27:10 -27,Neddie,Mosedall,956-605-6537,Male,3,94,19,2018-04-09 13:54:22,2018-04-12 10:58:25,2018-08-21 10:57:27,2018-08-22 20:29:53 -28,Octavius,Fordham,797-217-3886,Male,3,32,82,2018-11-23 16:25:55,2018-11-15 12:08:34,2018-10-28 03:46:45,2018-06-22 03:16:15 -29,Edwin,Tapson,578-261-4030,Male,7,83,39,2018-12-16 01:07:34,2018-12-27 23:39:47,2018-12-03 00:30:10,2018-03-09 18:09:49 -30,Korry,Dyos,108-910-1353,Female,3,80,93,2018-06-14 09:39:58,2018-08-12 21:17:11,2018-09-14 12:22:43,2018-04-08 23:31:12 -31,Kenn,Leist,300-420-7371,Male,5,100,90,2018-11-24 01:42:36,2018-10-27 21:31:19,2019-01-05 02:32:45,2018-11-24 06:45:27 -32,Eldredge,Kemmis,451-974-5763,Male,2,44,42,2018-11-18 11:28:34,2018-02-17 08:01:53,2018-08-21 19:25:26,2018-12-23 12:29:15 -33,Suzanne,Matthiae,560-959-3441,Female,4,56,7,2018-05-04 04:19:19,2018-04-11 11:59:42,2018-02-01 16:22:38,2018-11-15 19:58:02 -34,Josh,Callendar,719-551-3561,Male,4,61,56,2018-10-12 07:20:47,2018-06-14 12:53:31,2018-07-20 09:35:33,2018-03-26 05:54:27 -35,Ian,Thoresby,392-740-5436,Male,7,77,8,2018-03-04 19:37:23,2018-08-07 02:19:40,2018-09-24 07:54:33,2018-07-09 15:36:52 -36,Cordi,Vanichkin,773-231-4509,Female,1,99,90,2018-07-02 02:43:15,2019-01-20 04:28:54,2018-09-05 05:02:38,2019-01-08 04:08:00 -37,Ariel,Le land,917-249-6942,Male,5,9,45,2018-04-29 18:48:49,2018-06-23 08:15:12,2018-01-22 01:29:55,2019-01-03 21:24:23 -38,Delila,Assard,119-780-7155,Female,3,83,70,2018-12-01 01:09:53,2018-05-22 00:23:40,2018-05-19 13:53:02,2018-02-17 03:43:18 -39,Deny,Cullrford,100-298-0840,Female,5,50,39,2018-05-09 23:21:57,2018-05-31 23:46:32,2018-12-03 09:53:47,2019-01-12 10:16:35 -40,Frannie,Sharer,410-855-0951,Male,6,72,43,2018-05-12 06:05:03,2018-04-21 17:15:14,2018-08-30 07:18:18,2018-06-20 04:51:13 -41,Jonis,Lintin,803-933-8038,Female,4,89,84,2018-09-13 20:13:23,2018-08-28 18:20:52,2018-03-13 03:07:16,2018-03-05 07:10:50 -42,Bessie,Hackett,443-436-4804,Female,4,20,36,2018-06-13 07:34:49,2018-06-01 11:23:42,2018-10-19 12:40:14,2018-02-10 12:37:05 -43,Gayel,Tabard,704-527-0263,Female,6,40,44,2019-01-04 14:41:19,2018-04-15 00:21:22,2018-12-30 07:24:38,2018-05-02 21:10:48 -44,Ardisj,Ridder,899-877-7365,Female,1,21,84,2018-06-13 21:09:11,2018-12-02 20:33:23,2018-03-25 07:43:03,2018-10-12 11:26:41 -45,Hammad,Stroband,874-825-9046,Male,3,30,83,2018-09-14 06:04:39,2018-10-23 13:35:20,2018-03-10 08:19:18,2018-07-18 20:31:55 -46,Darius,Sorel,750-599-8665,Male,7,98,76,2018-09-17 22:09:17,2018-06-02 14:07:06,2018-12-08 15:52:18,2018-05-05 12:38:37 -47,Dido,Stockin,339-433-0084,Female,1,89,59,2018-04-30 07:42:06,2018-10-18 22:27:31,2018-11-11 05:06:09,2019-01-01 14:19:17 -48,Sholom,Cobbing,828-431-0433,Male,4,53,86,2018-11-03 23:21:35,2018-10-23 13:33:47,2018-09-03 06:25:27,2019-01-18 06:26:39 -49,Melinde,Hynd,283-446-7128,Female,5,97,84,2018-07-31 06:28:22,2018-10-24 04:00:28,2018-07-28 03:47:24,2018-02-10 19:44:46 -50,Hedvige,Fontenot,534-558-8139,Female,4,94,62,2018-07-15 15:22:39,2018-03-20 18:21:30,2018-03-04 17:34:45,2018-05-25 22:41:39 -51,Killian,Gilmartin,722-114-3059,Male,1,47,8,2018-08-24 01:48:56,2018-07-21 08:24:06,2018-11-05 06:28:14,2018-05-06 13:37:33 -52,Inness,O'Cullinane,630-746-2431,Male,3,71,93,2018-06-14 22:12:56,2018-04-12 23:09:39,2018-02-02 09:42:12,2018-11-14 01:06:15 -53,Doretta,Galiford,528-456-0043,Female,3,84,95,2018-09-09 15:03:41,2018-03-30 03:54:32,2018-10-03 10:51:33,2018-12-15 22:54:24 -54,Alicia,Kemmons,695-461-8136,Female,7,16,82,2018-03-26 20:29:48,2018-03-25 15:58:54,2018-01-30 03:52:35,2018-02-11 04:14:39 -55,Brandea,Nannizzi,215-545-0363,Female,2,86,20,2018-11-05 15:18:22,2018-02-18 13:05:40,2018-11-27 14:37:52,2018-05-04 23:08:00 -56,Jordan,Parkman,473-392-8118,Male,1,41,46,2018-09-27 14:56:49,2018-04-27 06:35:47,2018-02-04 22:54:44,2018-12-06 04:53:24 -57,Bourke,Whittaker,712-907-5729,Male,2,71,6,2018-10-19 17:00:36,2018-12-02 03:28:48,2018-04-13 01:02:14,2018-04-11 23:42:42 -58,Honey,Adriano,822-890-9194,Female,4,31,95,2018-06-18 04:19:51,2018-03-12 03:05:16,2018-02-02 00:52:15,2019-01-07 13:33:51 -59,Tracie,Warrender,617-331-6980,Male,3,69,37,2018-07-09 15:19:55,2018-07-26 13:00:13,2018-03-06 19:39:06,2018-10-05 14:56:58 -60,Billy,Eadmead,556-100-5109,Female,6,16,63,2018-10-04 07:52:43,2018-07-02 07:34:18,2018-05-03 01:03:27,2018-06-03 11:04:04 -61,Jamesy,Mellenby,554-299-7370,Male,6,53,82,2018-10-25 22:03:32,2018-05-03 02:36:00,2018-01-26 21:04:03,2018-09-15 17:06:05 -62,Goober,Mawby,765-918-7080,Male,1,70,20,2018-08-05 15:03:53,2018-09-15 16:38:46,2018-03-02 01:37:07,2018-12-15 23:40:37 -63,Zach,Tompkins,798-498-7252,Male,6,45,65,2018-06-26 09:42:40,2018-04-20 17:05:50,2018-09-18 16:58:53,2018-06-24 00:57:54 -64,Augustine,Cornbill,600-318-2489,Male,7,30,38,2018-02-08 08:08:53,2018-08-14 07:05:17,2018-10-14 01:12:13,2018-09-20 19:42:49 -65,Cort,Rosingdall,915-533-3544,Male,5,81,82,2019-01-18 02:20:54,2018-03-12 08:02:19,2018-05-13 15:10:29,2018-05-16 21:38:26 -66,Broddie,Dziwisz,404-420-5799,Male,7,3,22,2018-08-30 21:01:34,2018-03-13 06:37:11,2018-04-27 16:13:37,2018-12-09 08:39:26 -67,Clarke,Goodge,499-845-2443,Male,2,14,95,2018-04-02 10:32:42,2018-04-27 00:42:32,2018-05-29 08:36:44,2018-04-01 23:40:09 -68,Madelyn,Knight,724-972-4025,Female,6,12,57,2018-04-25 04:45:31,2018-08-13 14:34:24,2018-05-25 09:58:32,2018-09-02 04:03:25 -69,Bibby,Pace,266-593-6853,Female,2,11,87,2018-04-12 22:35:20,2018-03-10 11:28:13,2018-04-12 15:22:53,2018-04-21 18:57:47 -70,Nedi,Tambling,534-778-4478,Female,5,69,95,2018-04-27 15:43:27,2018-07-27 11:55:14,2018-04-05 07:02:04,2018-08-26 01:25:05 -71,Veronica,Alejandro,208-365-2416,Female,1,22,32,2018-04-09 03:42:21,2018-03-30 02:47:59,2018-02-08 16:43:52,2018-03-10 19:51:53 -72,Cecil,Walewicz,133-144-8036,Male,3,58,23,2018-12-26 06:56:13,2018-06-08 09:09:35,2018-02-16 16:39:15,2018-12-21 00:33:53 -73,Salem,Armell,186-906-5312,Male,7,25,47,2018-10-08 00:28:48,2018-09-03 00:55:23,2018-01-31 20:13:21,2018-04-06 20:30:43 -74,Brook,Buckston,714-565-2523,Female,1,13,92,2018-02-12 13:53:51,2019-01-10 22:17:38,2018-08-03 18:27:58,2018-09-06 10:38:45 -75,Benson,MacParlan,881-685-7375,Male,7,95,39,2018-04-07 06:40:34,2018-05-10 22:04:48,2018-10-06 01:07:35,2018-12-25 18:36:48 -76,Lukas,Kittle,845-541-8229,Male,1,52,85,2018-04-14 08:08:32,2018-08-21 12:21:22,2018-11-17 23:14:34,2018-06-21 02:48:31 -77,Jessa,Claus,611-425-9914,Female,7,99,56,2018-10-22 02:50:57,2018-11-25 03:44:27,2018-06-30 15:33:40,2018-07-02 03:59:50 -78,Hieronymus,Schurig,840-630-9703,Male,6,98,77,2018-01-24 18:01:57,2018-06-05 08:22:05,2018-07-12 07:09:14,2018-07-31 08:09:20 -79,Quintilla,Risborough,367-606-2805,Female,4,15,15,2018-10-24 13:48:18,2018-12-16 11:17:17,2018-05-17 19:15:19,2018-06-22 16:46:31 -80,Arv,Billingsley,438-164-1166,Male,3,54,65,2018-07-21 13:35:44,2018-10-07 14:37:53,2018-11-16 15:38:23,2018-10-19 21:07:38 -81,Happy,Rodrigo,427-752-3843,Female,2,28,25,2018-01-28 21:31:16,2018-07-06 04:48:40,2018-02-19 10:50:55,2018-10-20 15:58:59 -82,Cos,Chalfain,609-228-7131,Male,6,12,80,2018-02-24 18:06:52,2018-07-21 03:12:50,2018-02-22 09:53:50,2018-12-04 18:31:35 -83,Dael,Crother,249-141-1807,Male,3,11,86,2018-09-09 23:04:41,2018-02-24 13:19:31,2018-11-05 15:18:33,2018-12-23 18:55:24 -84,Evin,Tettley,974-233-5051,Male,1,57,61,2018-12-26 14:24:36,2018-05-28 19:09:40,2018-09-18 10:01:10,2018-04-04 21:11:05 -85,Bethanne,Hynson,395-152-0590,Female,5,51,39,2018-11-12 01:12:14,2018-07-21 02:07:45,2019-01-06 17:16:22,2018-11-15 16:58:09 -86,Adrian,Sapson,962-473-8077,Female,4,19,63,2018-02-13 14:27:28,2018-06-26 14:23:38,2018-09-17 04:28:22,2018-07-19 18:25:11 -87,Zaneta,Alforde,961-173-4877,Female,2,70,67,2018-11-04 11:27:20,2018-06-09 18:02:24,2018-08-17 03:13:55,2018-09-02 00:28:34 -88,Grady,Kobiera,687-321-5987,Male,1,62,96,2018-06-23 20:06:04,2018-02-08 04:03:21,2018-12-05 23:36:55,2018-10-26 14:17:35 -89,Dominique,Carslake,230-143-4475,Male,4,38,64,2018-05-19 01:14:57,2018-09-24 20:05:20,2018-06-26 12:15:04,2018-10-30 18:21:59 -90,Julietta,Gude,585-759-9173,Female,7,59,75,2018-11-25 20:42:33,2018-08-31 21:59:40,2018-12-31 21:04:44,2018-11-23 04:31:37 -91,Lothaire,Macrow,510-775-2964,Male,1,91,59,2018-04-22 14:12:47,2018-07-05 11:15:49,2018-06-04 12:44:19,2018-10-12 10:28:46 -92,Agneta,Trematick,391-964-4713,Female,6,6,91,2018-01-31 13:00:06,2018-11-24 20:48:15,2018-07-27 00:12:28,2018-02-17 08:41:55 -93,Pet,Padgett,690-476-6060,Female,2,17,84,2018-03-21 11:54:39,2018-03-08 01:51:40,2018-12-21 16:41:23,2018-02-07 14:47:44 -94,Barclay,Binion,516-626-1251,Male,4,49,46,2018-10-19 13:16:50,2018-06-25 01:26:53,2018-02-23 06:44:17,2018-10-08 11:01:59 -95,Dillie,Quilleash,676-581-4684,Male,3,27,14,2019-01-02 01:50:23,2019-01-02 04:16:15,2018-07-21 11:54:44,2018-03-06 02:17:37 -96,Marissa,Twinterman,855-444-0657,Female,6,52,62,2018-07-27 09:41:53,2018-03-18 21:07:51,2018-09-05 04:45:41,2018-05-01 14:08:21 -97,Perl,Braun,639-977-9224,Female,7,93,88,2018-03-12 07:21:26,2018-11-12 18:45:36,2018-09-10 10:45:15,2018-09-30 10:28:01 -98,Gwenette,Jozef,804-642-8405,Female,1,67,64,2018-05-02 20:04:22,2018-05-25 14:26:42,2018-12-22 04:00:00,2018-04-27 17:36:21 -99,Gabbi,Nassey,998-336-4318,Female,3,35,79,2018-11-13 07:58:46,2018-02-23 01:11:32,2018-11-08 17:30:31,2018-07-24 03:14:25 -100,Susana,Ebben,826-329-4492,Female,5,9,98,2018-07-08 08:40:45,2018-07-12 00:41:34,2018-10-12 15:33:58,2018-06-16 15:33:32 -101,Mallorie,Marsters,637-209-9862,Female,5,18,34,2018-07-30 15:18:09,2018-09-23 17:22:45,2018-12-21 17:11:36,2018-07-06 19:42:09 -102,Marley,Bethell,102-272-8411,Female,6,70,7,2018-10-08 12:25:07,2018-04-13 04:50:24,2018-03-01 09:20:29,2018-04-05 02:02:24 -103,Genvieve,McMeekin,679-490-4369,Female,3,7,25,2018-02-25 15:34:48,2018-06-24 16:32:10,2018-07-03 20:04:57,2018-12-11 02:53:30 -104,Bartram,Leahey,830-491-8399,Male,3,100,57,2018-10-18 18:39:57,2018-04-08 02:16:41,2018-07-20 01:10:35,2018-06-20 09:41:56 -105,Livvyy,Thornewell,872-138-4425,Female,6,58,58,2019-01-17 09:36:59,2018-04-13 07:25:55,2018-11-28 12:44:14,2018-07-14 04:05:13 -106,Gabriella,Cornish,202-570-6308,Female,7,79,67,2018-08-25 01:20:02,2018-11-30 22:05:13,2018-10-21 11:47:58,2018-11-20 04:28:53 -107,Humberto,Lanfranchi,636-653-6377,Male,3,18,85,2018-08-21 03:38:03,2018-09-01 07:20:38,2018-04-27 04:23:16,2018-08-15 14:45:48 -108,Othella,Asaaf,386-100-6369,Female,4,59,93,2018-05-20 17:17:26,2018-10-23 01:32:55,2018-09-20 03:27:06,2018-12-17 21:11:18 -109,Mil,Booij,494-405-6566,Female,5,88,97,2018-07-12 19:07:28,2018-02-14 12:57:18,2018-12-11 19:22:18,2018-11-23 12:41:41 -110,Orel,Blaxland,309-372-2193,Female,7,30,93,2018-11-18 23:18:41,2018-06-21 19:30:46,2018-09-15 13:43:25,2018-02-04 09:51:54 -111,Sibeal,Fennelow,543-514-6831,Female,6,92,56,2018-10-09 14:48:56,2018-12-18 22:29:16,2018-04-09 03:30:48,2018-04-04 18:11:19 -112,Sidnee,Thorby,687-609-9785,Male,2,30,12,2018-03-28 10:27:39,2018-07-01 07:12:38,2018-02-16 12:58:34,2018-11-16 01:37:38 -113,Lora,Ridewood,164-690-9005,Female,1,37,55,2018-11-13 21:13:39,2018-09-06 23:00:39,2019-01-17 10:31:22,2018-12-05 22:14:39 -114,Velma,Brolan,359-817-6834,Female,6,26,38,2019-01-16 21:47:15,2018-11-25 16:54:49,2018-10-07 01:07:24,2018-10-11 01:14:02 -115,Vassili,Kirkbride,287-966-8144,Male,6,52,16,2018-12-20 23:23:45,2018-12-21 08:42:29,2018-02-25 02:07:40,2018-06-28 04:39:19 -116,Nettie,Bulmer,357-176-0651,Female,5,16,44,2018-09-19 15:07:17,2018-03-16 17:55:44,2018-09-06 22:48:36,2018-04-28 23:48:07 -117,Elyn,Matthew,176-489-8486,Female,4,25,95,2018-04-10 12:26:47,2019-01-10 03:12:46,2018-07-28 23:51:46,2018-07-07 16:15:50 -118,Nat,Enderlein,480-924-1165,Male,4,94,42,2018-09-10 06:56:16,2018-04-24 02:55:47,2018-03-17 15:48:28,2018-04-30 06:11:27 -119,Allister,Laundon,267-536-1588,Male,6,86,21,2018-08-21 09:06:13,2018-11-26 09:47:45,2018-04-05 15:01:24,2018-01-21 02:29:49 -120,Suzy,Dubery,631-694-1983,Female,5,54,24,2018-07-12 11:08:05,2018-07-21 06:22:14,2018-09-04 03:44:08,2018-11-14 04:59:58 -121,Reinaldo,Assel,927-809-0971,Male,3,4,44,2018-10-17 17:15:04,2018-12-24 21:34:45,2019-01-15 07:39:25,2018-02-06 19:16:38 -122,Claudell,Reckus,196-391-8789,Male,1,34,75,2018-08-12 02:29:09,2018-11-28 02:43:43,2018-08-21 09:11:37,2018-07-14 12:51:48 -123,Kary,Jee,656-508-4636,Female,2,67,47,2018-12-17 10:42:46,2018-05-16 14:59:10,2018-12-23 02:44:31,2018-12-19 01:28:44 -124,Giustino,Tinan,292-383-3412,Male,7,100,96,2018-02-05 08:16:51,2018-04-10 02:46:18,2018-12-07 23:33:47,2018-03-25 18:50:56 -125,Matthew,Palmer,562-655-9301,Male,5,87,100,2018-07-14 00:43:30,2018-01-22 19:53:17,2018-05-18 08:37:49,2018-04-16 10:03:59 -126,Helge,Paradyce,454-788-5166,Female,4,31,87,2018-12-29 12:15:52,2018-02-08 19:33:17,2018-12-29 06:51:56,2018-11-11 03:52:39 -127,Anthe,Cullinan,517-178-4457,Female,4,61,14,2018-07-10 05:46:54,2018-12-22 09:39:32,2018-12-06 16:59:53,2018-12-30 08:24:22 -128,Cindy,Bellie,284-376-7890,Female,6,26,95,2018-02-04 23:09:03,2018-09-06 16:30:50,2018-05-25 00:39:04,2018-12-20 19:03:33 -129,Deva,Branthwaite,272-973-9361,Female,5,4,74,2018-06-05 05:56:15,2018-06-26 03:23:22,2018-06-06 00:42:51,2018-12-01 12:32:06 -130,Karen,Frank,495-748-4715,Female,6,55,54,2018-10-26 02:19:25,2018-04-11 12:50:31,2019-01-12 15:29:42,2018-12-23 04:07:28 -131,Batsheva,Wressell,364-562-3308,Female,2,93,2,2018-12-08 11:50:47,2018-10-05 08:11:01,2018-12-29 23:04:37,2018-10-13 09:59:34 -132,Damian,Devon,617-622-5769,Male,1,81,84,2018-03-03 22:21:45,2018-02-09 02:46:29,2018-02-04 03:39:23,2018-06-24 17:15:50 -133,Mischa,Feldbrin,941-794-4981,Male,2,17,93,2018-07-05 04:20:06,2018-11-22 10:46:44,2018-10-25 23:05:17,2018-08-04 04:19:58 -134,Remus,Mochar,964-251-2864,Male,2,78,88,2018-05-08 23:51:18,2019-01-19 19:38:55,2018-06-13 09:14:44,2019-01-10 12:37:02 -135,Cleon,Ambroise,790-235-3681,Male,3,38,95,2018-08-11 11:07:40,2018-07-06 04:03:45,2018-12-18 09:47:22,2018-03-31 14:59:58 -136,Sidney,Duthy,739-113-2227,Male,4,95,79,2018-09-25 19:41:46,2018-09-05 07:30:26,2018-03-21 18:52:33,2018-04-25 13:58:28 -137,Xavier,Gon,942-422-7024,Male,5,35,47,2018-09-05 22:08:31,2018-05-10 20:19:08,2018-06-25 18:32:07,2018-04-11 04:44:32 -138,Ara,Gwyllt,450-595-4186,Male,4,4,28,2018-10-28 21:12:39,2018-02-13 08:26:45,2018-06-16 21:44:05,2018-08-01 11:08:43 -139,Libbey,Millwall,764-602-4598,Female,7,89,31,2019-01-14 17:04:08,2018-02-22 03:01:08,2018-02-27 08:56:59,2018-11-09 13:18:23 -140,Rosalynd,Wellard,798-378-3350,Female,4,58,44,2018-07-13 19:23:05,2018-11-20 20:46:20,2018-01-31 02:28:58,2018-10-25 13:31:05 -141,Reinaldo,O'Dea,896-868-5961,Male,2,72,69,2018-08-08 04:21:04,2018-06-23 08:34:34,2018-08-31 08:41:08,2018-11-19 09:43:28 -142,Veradis,Holyard,706-725-9446,Female,3,78,56,2018-09-05 17:38:33,2018-05-04 13:04:38,2018-11-05 12:46:29,2018-09-25 08:56:54 -143,Birdie,Collerd,319-380-7196,Female,2,22,1,2018-10-16 19:45:08,2018-08-05 06:38:47,2018-11-22 11:10:39,2018-10-20 09:48:22 -144,Sada,Schout,825-204-2108,Female,7,88,10,2018-04-13 13:44:13,2018-06-06 14:39:37,2018-11-09 10:29:00,2018-09-15 05:38:03 -145,Ambros,Mayoral,819-227-9360,Male,7,50,91,2018-03-27 15:27:05,2018-08-02 02:18:35,2018-06-27 17:10:44,2018-07-21 14:18:29 -146,Emile,Abraham,622-769-6584,Male,6,10,44,2018-09-15 10:24:46,2018-07-10 07:58:58,2018-06-18 22:49:01,2018-04-20 09:07:25 -147,Lira,Reboulet,983-623-7858,Female,4,54,39,2018-06-27 09:11:33,2018-10-01 07:52:19,2018-10-21 09:48:43,2018-09-09 22:17:51 -148,Bucky,Dubery,127-215-3377,Male,1,13,5,2018-02-15 22:03:55,2018-10-15 16:35:39,2018-02-20 10:22:26,2018-11-05 12:56:42 -149,Ced,Meert,482-685-6526,Male,1,85,40,2018-11-09 04:11:10,2019-01-16 14:34:41,2018-05-22 12:18:01,2018-03-13 13:09:46 -150,Hamlen,Boyson,723-641-9907,Male,7,3,25,2018-07-08 10:27:28,2018-09-06 08:34:00,2018-10-19 17:18:48,2018-02-22 19:31:50 -151,Scotty,Bromell,605-116-4137,Male,4,44,83,2018-02-03 11:10:35,2018-03-05 15:14:24,2018-06-20 01:47:46,2018-04-09 17:34:46 -152,Betti,Cuttelar,947-869-1635,Female,7,31,68,2018-07-14 23:35:44,2018-09-07 08:03:02,2018-05-02 15:32:32,2018-02-26 15:33:55 -153,Lothario,Whellams,959-671-9821,Male,3,91,85,2018-12-17 02:20:59,2018-08-31 16:54:24,2018-09-30 18:16:21,2018-06-06 21:30:55 -154,Maurits,Eisenberg,612-730-0598,Male,5,95,2,2018-07-11 05:38:06,2018-01-26 15:01:11,2018-11-11 22:30:48,2018-04-16 07:20:25 -155,Jeffry,Wilprecht,420-521-7374,Male,2,2,19,2018-07-31 12:28:42,2018-03-19 23:14:58,2018-11-29 11:25:28,2018-02-19 02:42:46 -156,Victor,Grinter,303-176-4062,Male,3,28,82,2018-04-15 17:22:33,2018-04-26 11:56:35,2018-10-06 23:26:58,2018-04-05 07:32:13 -157,Sonnie,Lobe,794-424-7798,Male,1,68,99,2018-12-23 13:36:28,2018-11-24 21:42:21,2018-03-23 12:37:58,2018-06-26 15:29:05 -158,Krishna,Fletcher,520-484-4343,Male,5,77,26,2018-05-15 11:17:35,2018-12-22 22:52:12,2018-05-10 22:50:32,2018-05-05 21:38:09 -159,Kerrie,Bartholomieu,654-465-0213,Female,4,7,56,2018-11-02 19:08:33,2018-01-27 09:11:25,2018-12-13 16:53:49,2018-05-06 13:16:06 -160,Rasla,Dibbs,192-692-8022,Female,5,58,38,2018-05-13 16:41:12,2018-12-17 01:00:54,2018-08-19 15:33:37,2019-01-11 00:33:40 -161,Mellisa,Prinn,884-570-1200,Female,3,2,44,2018-06-17 15:55:01,2018-02-09 22:16:46,2018-01-21 11:35:44,2018-03-22 01:43:34 -162,Shandeigh,Prise,284-912-2475,Female,1,24,63,2018-04-16 10:09:01,2018-09-06 02:59:22,2018-05-21 00:23:45,2018-05-18 15:59:58 -163,Aline,Pockey,145-621-3349,Female,5,46,99,2018-07-08 01:50:19,2018-07-23 03:08:04,2018-07-25 04:19:37,2018-08-02 04:28:24 -164,Quinton,Filon,646-285-5370,Male,7,71,90,2018-09-26 09:06:43,2018-09-15 14:33:28,2018-11-23 04:26:39,2019-01-20 06:07:08 -165,Brena,Bentke,336-549-2800,Female,6,52,73,2018-02-07 03:32:01,2018-09-21 09:41:58,2018-08-01 23:49:56,2018-04-24 04:41:42 -166,Kessia,Bentote,261-293-3478,Female,7,34,27,2019-01-03 17:12:12,2018-01-28 01:36:43,2018-09-06 07:29:49,2018-07-16 11:22:52 -167,Serene,Jellett,617-490-3045,Female,4,8,12,2018-08-01 05:18:42,2018-08-21 11:58:23,2018-02-17 11:36:57,2018-12-29 13:38:10 -168,Drugi,Chainey,642-531-9743,Male,1,27,14,2019-01-06 06:11:34,2018-11-02 16:07:48,2019-01-07 21:38:11,2018-10-26 19:58:30 -169,Benjamen,Angric,161-599-1534,Male,6,80,80,2018-03-25 19:49:25,2018-08-23 06:12:13,2018-05-09 05:22:56,2018-04-03 12:50:17 -170,Augustine,de Werk,986-128-9745,Male,7,40,35,2018-09-07 12:55:20,2018-09-15 16:46:53,2018-02-12 14:00:28,2018-02-20 11:54:00 -171,Rorke,Laidlaw,818-603-8046,Male,1,99,95,2018-12-25 21:27:03,2018-12-15 12:30:46,2018-11-06 04:14:51,2018-11-30 18:51:21 -172,Clywd,Cawdron,118-860-8931,Male,3,12,48,2018-10-28 00:46:43,2018-07-04 11:34:45,2018-01-24 04:40:57,2018-11-08 13:52:59 -173,Maudie,Habbijam,781-157-2628,Female,1,79,35,2018-11-30 12:07:21,2018-03-07 00:30:04,2018-11-14 11:01:28,2018-12-25 08:37:17 -174,Gina,Adamovitz,873-120-9534,Female,1,99,41,2018-10-15 08:16:08,2018-02-02 10:04:20,2018-03-11 05:28:50,2018-08-15 16:28:04 -175,Dorey,Berkeley,856-131-2818,Female,5,8,45,2018-06-14 02:47:10,2018-12-04 16:14:29,2018-02-20 02:19:22,2018-04-14 04:00:28 -176,Ashli,Stanistrete,507-365-9155,Female,3,50,85,2019-01-15 15:53:25,2018-09-08 00:21:37,2018-09-08 14:26:57,2018-08-12 18:04:42 -177,Aleta,Jessard,640-184-4123,Female,1,63,42,2018-12-13 11:45:35,2018-07-13 05:43:20,2018-07-19 01:29:59,2018-08-19 10:17:25 -178,Conney,Tansly,619-324-6788,Male,7,18,68,2018-02-06 08:22:33,2018-02-09 16:00:31,2018-02-17 20:35:12,2018-09-01 00:28:07 -179,Chaddie,Curling,967-821-4721,Male,3,50,28,2018-04-18 18:52:52,2018-10-04 03:42:09,2018-11-06 23:55:33,2018-12-23 04:01:13 -180,Skyler,Shard,173-185-5465,Male,7,48,76,2018-03-21 23:42:54,2018-05-22 07:52:04,2018-02-28 18:02:47,2018-08-20 09:21:32 -181,Alair,Bruggen,225-747-4685,Male,5,45,4,2018-03-13 03:01:40,2018-04-30 23:24:34,2018-04-25 03:14:01,2018-07-26 19:41:29 -182,Forester,Rackstraw,111-188-6870,Male,6,11,43,2018-09-26 04:05:12,2018-08-25 04:59:08,2018-02-09 16:50:13,2018-06-10 06:53:15 -183,Stinky,Klassmann,628-447-6394,Male,5,42,77,2018-12-29 18:37:51,2018-01-31 04:16:33,2018-05-27 09:10:31,2018-02-03 20:09:44 -184,Gabriella,Weeds,978-256-0633,Female,3,17,50,2018-10-10 14:56:11,2019-01-19 07:53:13,2018-08-28 10:02:39,2018-05-03 15:01:38 -185,Ingeborg,Swine,765-792-5768,Female,5,39,37,2018-10-13 03:17:12,2018-11-25 20:17:22,2018-08-25 21:54:45,2018-12-04 07:44:58 -186,Kain,Everingham,945-715-9320,Male,7,52,80,2018-10-22 01:58:35,2018-04-16 11:48:35,2018-02-22 17:07:19,2018-12-15 01:59:16 -187,Noble,Swadlinge,928-764-8545,Male,7,24,75,2018-07-02 20:12:53,2018-07-19 00:23:08,2018-08-06 21:50:01,2018-05-04 08:56:30 -188,Amber,Shropshire,983-928-3309,Female,1,100,37,2018-03-18 04:32:13,2018-08-09 03:16:35,2018-11-21 04:25:29,2018-10-03 06:20:54 -189,Hedy,Sapena,301-104-2652,Female,3,37,35,2018-07-04 12:54:06,2018-10-12 20:33:48,2018-04-10 07:32:31,2018-03-17 10:12:03 -190,Nerissa,Jedras,425-605-9508,Female,1,18,31,2019-01-12 14:05:35,2018-10-19 14:28:35,2018-06-14 21:07:02,2018-03-22 05:53:32 -191,Terrel,Kear,681-621-2157,Male,3,98,45,2018-02-20 10:42:05,2018-11-08 04:29:14,2018-03-09 02:33:02,2018-07-04 18:27:00 -192,Dennison,Theodoris,722-911-1627,Male,6,76,32,2018-11-18 05:15:23,2018-05-13 02:02:05,2019-01-15 21:45:30,2018-04-13 17:24:17 -193,Chrystel,Ferentz,497-580-2963,Female,2,96,6,2018-12-11 03:17:23,2018-05-23 04:35:09,2018-11-01 17:51:50,2018-08-02 02:44:29 -194,Devland,Butchers,313-172-9223,Male,6,42,38,2019-01-16 07:17:37,2018-11-09 17:37:48,2018-04-10 08:57:30,2018-05-02 13:47:28 -195,Simon,Astupenas,981-207-6441,Male,2,57,43,2018-11-07 15:02:00,2018-01-25 17:30:33,2018-07-13 05:08:19,2018-10-29 18:37:22 -196,Jordan,Attride,447-912-6034,Female,7,25,37,2018-06-06 14:29:43,2018-06-30 03:49:38,2018-12-09 18:11:23,2018-01-30 19:12:46 -197,Clerissa,Forsard,485-444-1412,Female,2,88,66,2018-09-19 00:56:28,2018-07-23 15:36:37,2018-11-17 11:43:09,2018-11-17 17:11:53 -198,Alastair,Toth,495-980-1189,Male,1,62,59,2018-03-04 17:35:31,2018-06-18 07:02:22,2018-07-30 02:31:33,2018-07-20 14:21:29 -199,Aldo,Bruton,488-482-2130,Male,2,33,99,2018-06-09 23:01:18,2018-08-22 04:11:53,2018-07-17 05:55:24,2018-04-08 10:13:23 -200,Lorin,Mourant,953-195-5245,Male,1,78,78,2018-02-04 07:07:36,2018-08-05 08:03:40,2018-11-22 13:04:30,2018-03-10 12:32:28 -201,Nonnah,Dreini,137-834-9350,Female,1,20,84,2018-11-23 21:47:29,2018-07-02 22:51:42,2018-05-28 23:33:57,2018-06-11 11:55:17 -202,Winnie,Muris,865-681-2171,Female,2,31,76,2018-10-29 21:53:21,2018-10-12 17:59:08,2018-03-21 12:37:41,2018-06-26 05:24:49 -203,Marybelle,Wedmore.,566-812-6518,Female,6,94,20,2018-04-08 17:51:07,2018-01-25 19:29:58,2018-05-29 08:33:21,2018-12-18 09:29:05 -204,Christophorus,La Batie,776-298-7693,Male,2,100,44,2018-11-26 01:22:44,2018-11-28 19:33:42,2018-01-26 20:34:09,2018-10-15 19:29:24 -205,Erhart,Laydon,425-854-5387,Male,7,15,35,2018-11-09 09:53:34,2018-11-11 01:43:14,2019-01-16 12:20:32,2018-08-01 09:34:47 -206,Myrta,Playfair,512-835-4158,Female,4,8,51,2018-05-04 15:28:01,2018-05-11 22:03:31,2018-05-21 02:28:31,2018-03-17 08:25:48 -207,Tybie,McGhee,155-902-0043,Female,5,25,55,2018-03-19 17:19:34,2018-11-11 01:53:03,2018-06-01 16:21:08,2018-08-21 09:39:26 -208,Augusto,Chelam,595-490-1187,Male,2,20,22,2018-02-26 17:51:20,2018-04-15 11:38:21,2018-11-29 19:44:24,2018-05-17 16:31:14 -209,Louisette,Firbanks,365-745-5229,Female,1,51,35,2018-04-17 19:42:14,2018-03-19 09:56:15,2018-04-22 09:48:27,2018-11-20 05:52:44 -210,Brucie,Speers,688-351-7130,Male,3,65,20,2018-09-22 06:54:04,2018-08-14 23:05:08,2018-03-13 17:38:11,2018-12-29 06:47:13 -211,Nathanial,Ayliff,974-831-8727,Male,1,23,95,2018-09-02 06:27:24,2018-06-18 22:51:54,2018-12-25 13:15:52,2018-03-09 05:29:17 -212,Shawnee,McClenan,177-754-4767,Female,4,54,82,2018-04-17 14:01:32,2018-08-15 14:02:31,2019-01-04 03:04:30,2018-10-20 15:25:45 -213,Giavani,Cay,976-869-6321,Male,1,92,27,2018-07-22 17:43:03,2018-02-20 03:19:34,2018-05-06 13:52:36,2018-12-05 18:14:41 -214,Claudia,Fazackerley,454-663-9623,Female,4,26,25,2019-01-07 16:15:34,2018-03-06 15:31:53,2018-02-06 23:08:37,2018-11-13 17:45:22 -215,Nevil,Phelp,255-488-7211,Male,5,22,40,2018-09-11 19:55:44,2018-05-13 12:07:30,2018-08-27 02:20:49,2019-01-17 21:11:30 -216,Elle,Antal,303-999-5794,Female,4,23,5,2018-02-15 19:05:09,2018-10-15 01:01:31,2018-12-31 16:08:16,2018-03-23 15:16:38 -217,Brnaby,Dewsbury,173-850-9221,Male,3,82,22,2018-05-19 14:05:10,2018-12-30 00:25:40,2018-09-27 06:32:26,2018-04-25 02:17:22 -218,Ronda,Dranfield,835-657-5998,Female,5,61,54,2018-10-18 03:51:07,2018-07-20 06:01:19,2018-11-17 15:09:04,2018-12-04 20:06:06 -219,Vania,Brannan,288-990-8986,Female,3,88,25,2018-07-03 11:19:29,2018-11-13 09:44:15,2018-02-28 13:57:43,2018-02-28 05:42:56 -220,Jessy,Baggelley,848-274-4914,Female,7,38,75,2018-12-04 13:44:16,2018-11-20 01:53:14,2018-02-25 03:07:40,2018-06-17 19:02:59 -221,Paxon,Kensall,262-215-6295,Male,1,3,63,2018-08-12 21:30:25,2018-11-24 01:13:12,2018-06-04 19:20:59,2018-08-16 14:48:22 -222,Tana,O'Donohue,514-853-5855,Female,4,99,1,2018-03-21 06:05:58,2018-05-01 00:39:55,2018-03-10 21:55:54,2018-10-31 10:25:10 -223,Thomasina,Gibbons,501-364-8398,Female,3,37,56,2018-11-22 03:07:49,2018-06-30 16:44:00,2018-08-05 18:41:13,2019-01-07 06:21:44 -224,Bellanca,Golston,673-979-3362,Female,1,57,53,2018-05-02 00:04:42,2018-01-21 22:51:57,2018-08-20 18:40:05,2018-02-09 08:22:11 -225,Maureene,Drejer,769-639-6612,Female,7,49,17,2018-02-20 12:00:24,2018-09-01 04:44:08,2018-08-15 22:04:06,2018-09-04 06:40:59 -226,Beatrisa,Blanche,914-368-0909,Female,4,47,77,2018-05-21 06:41:29,2018-10-04 19:21:53,2018-07-11 04:03:32,2018-04-05 01:26:21 -227,Melita,Filipczak,743-692-1202,Female,2,18,45,2018-04-04 09:49:49,2018-03-30 16:30:51,2019-01-09 03:34:15,2018-02-05 00:54:24 -228,Jean,Rzehor,983-469-9959,Male,2,76,95,2018-08-17 14:15:05,2018-09-25 10:05:56,2018-09-04 10:03:08,2018-02-16 04:46:04 -229,Netti,Odeson,140-282-6021,Female,7,46,99,2018-04-08 08:08:21,2018-05-07 06:33:55,2018-03-10 06:30:39,2018-08-27 01:08:06 -230,Lark,Komorowski,889-340-2588,Female,6,36,54,2018-05-27 12:55:35,2018-11-18 05:20:17,2018-11-19 04:18:03,2018-04-24 14:21:19 -231,Mae,Howells,972-510-2059,Female,2,54,97,2019-01-17 19:46:20,2018-07-10 05:29:24,2018-07-06 16:03:28,2018-07-18 17:41:40 -232,Brewer,Wolstencroft,243-516-4986,Male,4,68,84,2018-07-19 01:48:48,2018-12-31 10:44:05,2018-05-25 20:15:52,2018-04-27 22:38:48 -233,Chrystel,Buist,285-587-4608,Female,3,66,90,2018-02-06 05:43:09,2018-06-10 20:45:59,2018-11-27 09:40:02,2018-12-30 22:43:43 -234,Nicola,Feltoe,102-119-8958,Female,6,30,100,2018-05-26 00:46:42,2018-03-17 00:12:12,2019-01-16 18:40:38,2018-01-27 09:20:23 -235,Engelbert,Matveiko,868-192-6148,Male,3,3,6,2018-05-27 06:16:04,2018-12-24 00:22:43,2018-04-18 07:21:59,2018-12-03 08:49:41 -236,Lezley,M'Chirrie,749-737-2204,Male,4,16,17,2018-07-06 21:48:48,2018-02-09 05:08:49,2018-09-05 10:59:16,2018-03-22 01:13:02 -237,Josy,Larkins,826-241-0108,Female,1,8,18,2018-10-26 03:28:37,2018-02-24 22:01:17,2018-12-29 22:31:43,2018-05-23 06:28:27 -238,Armando,Girt,296-631-5842,Male,1,90,62,2018-03-14 20:02:06,2018-02-25 03:43:37,2018-05-29 18:43:28,2018-10-10 16:04:29 -239,Nevins,Boch,243-865-0986,Male,7,87,34,2018-04-27 05:11:05,2018-06-13 18:02:47,2018-04-17 23:28:45,2018-03-11 20:07:50 -240,Gordan,MacHoste,194-807-0099,Male,2,8,10,2018-11-30 11:09:40,2018-03-19 08:40:39,2018-07-07 07:58:57,2018-12-03 15:54:45 -241,Vlad,Urling,756-416-9308,Male,6,44,75,2018-07-01 08:10:44,2018-06-25 11:50:00,2018-02-18 09:41:26,2019-01-20 16:56:43 -242,Karney,Batteson,884-299-0885,Male,3,4,70,2018-04-21 18:15:47,2018-03-17 15:26:35,2018-09-21 06:49:36,2018-03-03 10:02:05 -243,Shep,Croisier,182-249-1703,Male,2,25,64,2018-11-27 15:36:38,2018-03-27 09:16:11,2018-07-27 14:14:49,2018-08-31 21:47:02 -244,Jackelyn,Franschini,203-947-2285,Female,5,93,18,2018-05-11 18:05:34,2018-07-09 02:56:23,2018-05-26 13:31:09,2018-11-12 13:51:54 -245,Kingston,Brazier,388-460-9266,Male,5,67,43,2018-11-17 16:06:03,2018-10-22 21:39:40,2018-11-03 04:17:45,2018-08-23 17:37:21 -246,Derwin,Postin,334-746-9914,Male,2,9,74,2018-04-28 10:39:48,2018-10-16 21:01:17,2019-01-17 12:54:27,2018-09-18 06:08:12 -247,Rustie,Boddington,499-187-3081,Male,7,75,92,2018-07-09 18:05:33,2018-09-15 11:50:52,2018-06-10 05:00:00,2018-09-23 05:52:23 -248,Araldo,MacConnulty,922-950-0398,Male,4,66,28,2018-11-11 12:46:18,2018-09-10 16:05:23,2018-09-21 00:16:24,2018-10-10 19:06:57 -249,Brear,Zuanelli,948-803-5705,Female,7,88,15,2018-03-03 08:12:37,2018-10-06 14:14:00,2018-09-06 21:02:50,2018-04-04 06:13:25 -250,Ruttger,Cartan,503-123-4758,Male,6,8,46,2018-07-02 10:33:15,2018-10-11 08:51:25,2018-02-16 18:01:35,2018-05-15 00:25:35 -251,Leta,Gravenell,798-643-9817,Female,6,19,50,2018-09-26 18:01:14,2018-12-31 01:08:01,2018-08-12 01:18:26,2018-08-12 11:04:31 -252,Nanny,Spellward,298-614-5133,Female,2,78,35,2018-07-31 14:38:53,2018-07-11 11:50:42,2018-06-24 03:47:24,2018-08-23 06:25:24 -253,Garwin,Overil,981-304-0345,Male,1,66,62,2018-02-20 05:57:01,2018-02-04 20:02:37,2018-04-21 16:30:20,2018-07-27 08:45:03 -254,Ancell,Bromidge,677-576-3535,Male,1,54,47,2018-02-27 19:07:09,2018-07-07 17:41:39,2018-03-14 05:31:23,2018-11-18 21:30:30 -255,Harmonia,McIleen,610-808-3838,Female,5,76,7,2018-05-09 14:49:35,2018-04-12 02:30:13,2019-01-17 21:59:23,2018-04-20 05:21:50 -256,Ginni,See,809-189-3574,Female,7,93,45,2018-04-11 20:22:07,2018-08-17 13:12:57,2018-04-20 06:30:33,2018-04-17 00:12:41 -257,Christi,Doorly,614-386-8893,Female,7,23,11,2018-08-09 05:01:14,2018-03-11 21:19:53,2018-05-09 23:37:07,2018-03-27 22:07:11 -258,Perice,Severy,433-906-1030,Male,1,18,5,2018-09-01 12:30:04,2018-09-13 05:34:16,2019-01-16 22:35:35,2019-01-09 20:31:49 -259,Dulsea,Yokel,279-965-4206,Female,2,93,50,2018-10-31 22:48:09,2018-07-13 09:25:20,2018-02-16 09:15:58,2018-05-12 21:55:26 -260,Marge,Cheng,549-350-8693,Female,2,10,68,2018-09-01 18:42:35,2018-04-07 10:58:53,2018-07-30 16:05:15,2018-10-20 05:45:19 -261,Baron,McIlmorow,283-456-4615,Male,2,41,89,2018-11-07 01:23:03,2018-12-20 18:25:28,2018-08-31 12:49:04,2018-05-27 07:39:41 -262,Rabbi,Beaglehole,904-724-1771,Male,2,94,67,2018-11-04 08:21:47,2018-12-28 20:54:40,2018-12-08 10:20:14,2018-11-29 19:47:40 -263,Olvan,Asher,310-502-8368,Male,7,76,67,2018-03-15 22:02:48,2018-07-30 12:08:26,2018-12-06 22:49:46,2018-06-17 22:03:05 -264,Yard,Beldon,209-784-5636,Male,7,90,9,2018-07-24 02:02:11,2018-05-11 03:54:15,2018-08-20 18:46:55,2018-03-10 04:11:33 -265,Enriqueta,Barraclough,332-372-0081,Female,6,75,69,2018-08-18 05:08:19,2018-01-27 11:36:23,2018-05-23 08:59:06,2018-02-11 04:14:36 -266,Alli,Smallcomb,255-741-1276,Female,2,8,1,2018-12-06 01:19:35,2018-07-16 16:10:12,2018-07-16 13:31:05,2018-10-26 07:03:09 -267,Shay,Amsden,816-821-9426,Male,6,25,35,2018-03-15 01:09:39,2018-11-26 05:57:30,2018-10-26 07:54:05,2018-04-14 01:42:13 -268,Jacynth,Boscott,970-121-0282,Female,1,88,89,2018-07-31 16:10:10,2018-05-10 10:28:44,2018-10-02 23:00:23,2018-07-02 13:55:14 -269,Dominique,Farny,782-337-7486,Male,1,17,29,2018-09-09 16:09:20,2018-04-10 15:04:16,2018-03-25 16:40:27,2019-01-04 20:02:55 -270,Keefe,Guerrero,440-254-1961,Male,4,96,29,2018-10-19 10:06:55,2018-07-28 18:31:17,2018-05-05 19:05:12,2018-06-01 05:55:25 -271,Buiron,Anfossi,512-333-8553,Male,2,92,51,2018-09-09 16:00:30,2018-02-20 14:27:22,2018-03-11 07:29:35,2018-07-12 02:19:45 -272,Eleonore,Puller,325-656-5909,Female,4,88,37,2018-12-04 20:39:40,2018-02-13 04:35:07,2018-08-16 18:26:05,2018-06-08 07:45:57 -273,Katuscha,Rasch,427-956-1046,Female,4,68,90,2018-06-19 01:20:15,2018-04-03 01:55:07,2018-04-17 19:09:09,2018-08-15 11:04:06 -274,Hoebart,Linger,972-926-3923,Male,4,74,74,2018-02-19 01:23:42,2018-01-26 15:34:23,2018-09-13 07:10:43,2018-06-07 23:26:33 -275,Patrick,Hryskiewicz,736-622-7490,Male,3,91,1,2019-01-13 09:57:23,2018-05-06 15:42:09,2018-07-01 17:16:14,2018-09-01 02:26:15 -276,Bert,Adrianello,485-126-1547,Female,7,33,12,2018-11-01 06:34:27,2018-09-14 23:29:20,2018-03-11 08:15:03,2018-09-21 21:53:26 -277,Burton,Spittall,570-586-9893,Male,7,46,33,2018-01-28 06:20:39,2018-06-15 19:15:06,2018-06-27 02:36:30,2018-03-24 02:52:03 -278,Tessy,Mitchley,167-983-7021,Female,5,45,26,2018-03-02 16:44:00,2018-12-25 18:48:13,2018-04-01 18:27:41,2018-04-03 20:39:05 -279,Nettle,Hause,489-296-7367,Female,2,99,15,2018-03-18 02:50:49,2018-03-02 01:31:53,2018-10-31 06:40:34,2018-04-28 11:21:14 -280,Pearce,Darwent,801-341-9474,Male,2,24,44,2018-05-28 23:54:50,2018-02-07 18:37:22,2018-09-11 02:48:52,2018-11-09 16:24:17 -281,Kelsey,Suttle,536-591-5133,Female,6,11,76,2018-02-14 19:05:31,2018-07-14 19:32:27,2018-03-26 04:59:22,2018-04-01 20:21:57 -282,Gillie,Sponton,270-390-2110,Female,2,94,57,2018-03-14 11:50:53,2018-03-27 13:10:53,2018-04-23 19:54:11,2018-08-22 21:53:12 -283,Marsha,Dietz,740-837-1891,Female,5,90,95,2018-03-18 04:53:06,2018-06-29 02:28:55,2018-08-10 05:14:09,2018-05-10 04:03:25 -284,Miles,Purchon,413-518-8673,Male,2,57,98,2018-04-02 15:49:11,2018-02-04 16:57:33,2018-09-09 22:23:44,2018-03-16 04:00:43 -285,Collette,Menego,440-637-0309,Female,3,21,56,2018-04-18 04:27:48,2018-05-05 08:32:40,2018-03-17 17:54:26,2018-04-12 00:24:45 -286,Heriberto,Dunkerton,321-657-4492,Male,5,99,91,2018-08-17 12:11:42,2018-10-26 14:33:07,2018-03-10 13:13:28,2018-05-03 02:14:30 -287,Hailee,Remington,671-722-2287,Female,6,69,53,2018-08-01 01:54:04,2018-08-20 04:05:47,2018-04-24 14:22:04,2018-11-02 14:15:55 -288,Ingunna,Errigo,378-401-4671,Female,3,83,66,2018-12-22 21:52:13,2018-12-24 18:41:25,2018-11-11 17:31:47,2018-06-27 14:34:11 -289,Barbie,Grishmanov,184-949-4040,Female,7,93,68,2018-08-14 21:25:04,2018-08-26 18:27:48,2018-04-28 10:50:33,2018-08-06 14:12:21 -290,Anderson,Freeland,842-434-1249,Male,6,22,71,2019-01-05 09:24:32,2018-06-13 07:19:06,2018-04-24 22:20:16,2018-05-31 21:18:59 -291,Olympie,Prantl,988-864-1736,Female,1,39,40,2018-04-06 05:52:26,2018-03-10 03:20:54,2018-02-06 16:53:55,2018-09-03 16:18:27 -292,Amos,Lanyon,552-486-3382,Male,1,17,35,2018-07-03 20:26:09,2018-11-16 06:37:27,2018-08-16 14:36:30,2018-04-07 19:59:08 -293,Gabby,Stockau,753-586-0632,Male,5,19,14,2018-12-10 13:52:07,2018-03-20 20:50:50,2018-04-11 20:54:39,2018-11-13 17:11:21 -294,Uta,Joan,660-241-5130,Female,7,67,41,2018-04-21 18:11:39,2018-07-12 17:47:45,2018-05-20 14:57:17,2018-09-19 10:15:02 -295,Elnar,Manjot,691-939-7359,Male,5,18,86,2018-11-24 20:27:24,2018-04-29 05:45:30,2018-09-06 04:15:04,2018-05-31 17:11:55 -296,Avram,Cowins,471-336-0418,Male,1,18,23,2018-10-07 19:35:52,2018-07-24 19:33:54,2018-05-09 12:43:10,2018-10-08 09:08:37 -297,Kyla,Fines,380-936-0659,Female,7,16,6,2018-12-04 05:02:51,2018-06-13 12:25:14,2018-05-15 10:17:43,2018-07-24 13:06:26 -298,Tymothy,Trevillion,740-586-6434,Male,4,99,5,2018-11-29 03:58:39,2018-07-10 01:02:27,2018-07-05 11:15:40,2018-07-17 11:17:00 -299,Rafaelita,Stiven,313-253-8470,Female,7,94,91,2018-05-11 22:09:50,2018-12-04 03:23:26,2018-06-04 22:13:06,2018-08-02 01:03:16 -300,Stanwood,Bracci,757-577-7619,Male,3,79,15,2018-06-02 08:42:52,2018-05-01 23:25:28,2018-10-27 06:54:40,2019-01-03 19:33:39 -301,Heddie,Pegden,750-484-0458,Female,3,85,74,2018-02-15 15:15:50,2018-08-13 10:31:12,2018-10-22 05:36:44,2018-07-27 21:33:04 -302,Letty,Ipplett,534-461-3389,Female,2,24,58,2018-12-30 15:03:42,2018-12-25 22:41:39,2018-08-06 08:13:19,2018-06-13 08:22:24 -303,Clarke,Buckberry,261-218-0110,Male,4,39,35,2018-11-25 02:26:48,2018-10-01 22:53:26,2019-01-01 07:32:49,2018-06-23 02:36:18 -304,Valina,Bouskill,292-930-7629,Female,2,63,32,2018-03-13 00:24:33,2018-12-08 10:39:51,2019-01-06 10:27:01,2018-07-13 00:19:13 -305,Jeth,Mosedall,326-529-0770,Male,7,44,30,2019-01-17 17:26:19,2018-03-23 23:40:12,2018-12-16 02:11:33,2018-09-08 07:21:24 -306,Mano,Komorowski,467-693-9454,Male,5,63,33,2018-12-05 21:37:13,2018-05-15 16:54:39,2018-11-21 08:06:01,2018-12-25 19:18:03 -307,Libby,Worters,651-420-4117,Female,6,62,73,2018-11-16 15:37:33,2018-04-10 08:47:08,2018-09-25 07:08:44,2018-12-20 18:11:17 -308,Ginnie,Dunnion,884-641-9401,Female,4,15,91,2018-02-25 04:25:07,2018-06-11 12:12:35,2018-12-20 05:03:34,2018-05-12 15:41:13 -309,Addi,Butterfill,454-471-6991,Female,6,45,37,2019-01-14 00:57:24,2018-10-22 12:37:53,2018-11-12 17:11:49,2018-04-13 08:39:20 -310,Eustace,Calway,260-583-1874,Male,3,98,96,2018-12-08 14:19:50,2018-03-09 04:33:52,2018-08-03 22:32:38,2018-12-17 16:12:12 -311,Greta,Tailour,864-452-3785,Female,5,63,78,2018-05-09 23:36:15,2018-09-16 21:21:51,2018-06-17 03:49:40,2018-06-25 12:40:03 -312,Nance,Ruston,102-299-0194,Female,4,66,33,2018-04-19 13:30:14,2018-08-22 20:55:14,2018-03-02 20:03:46,2018-03-23 09:40:10 -313,Harriette,Dicty,498-183-6908,Female,7,1,13,2018-12-31 04:35:08,2018-08-13 12:05:13,2018-04-30 22:42:00,2018-12-03 13:23:45 -314,Merrielle,Mapes,918-608-0262,Female,5,47,45,2018-12-16 07:21:41,2018-10-27 21:05:00,2018-03-23 14:05:12,2018-08-02 11:02:53 -315,Gris,Scurrell,392-726-5529,Male,4,71,95,2018-02-23 03:36:40,2018-04-09 20:52:39,2018-03-07 02:56:27,2018-10-22 11:26:37 -316,Novelia,Newdick,262-887-9640,Female,3,20,97,2018-05-18 12:00:02,2018-02-04 08:00:28,2018-01-28 09:59:37,2018-07-06 05:53:32 -317,Sean,Breton,304-133-1524,Male,4,91,49,2018-07-09 23:07:45,2018-10-27 06:20:49,2018-08-22 21:03:24,2018-06-13 05:33:30 -318,Winston,Springham,259-758-2788,Male,6,86,20,2018-03-20 19:07:57,2018-03-17 14:55:01,2018-08-05 20:39:20,2018-02-11 22:19:58 -319,Clemmie,Saywood,341-505-9072,Male,4,61,30,2018-06-08 02:47:28,2018-07-03 05:59:45,2018-10-28 00:28:02,2018-04-07 23:20:59 -320,Robinia,Vida,537-434-4616,Female,6,19,32,2018-05-03 10:52:24,2018-10-12 00:17:12,2018-11-27 23:47:32,2018-12-17 00:24:59 -321,Findley,Melanaphy,423-892-4436,Male,1,100,31,2018-02-04 19:41:01,2018-08-17 10:08:47,2018-11-04 14:37:46,2018-07-01 11:45:21 -322,Brooks,O'Keenan,840-842-8591,Female,4,82,84,2018-08-21 21:40:21,2018-08-31 04:07:15,2018-02-01 02:25:03,2018-12-09 10:50:21 -323,Caz,Leaf,797-315-7239,Male,6,75,22,2018-10-17 18:51:00,2018-11-22 19:03:52,2018-02-15 06:48:13,2018-04-19 22:25:23 -324,Ad,Harvey,336-617-2629,Male,4,46,5,2018-07-01 18:17:34,2018-05-24 05:31:23,2018-04-05 21:04:43,2018-07-21 06:50:26 -325,Berrie,Robardley,671-363-7428,Female,2,46,55,2018-05-14 01:56:01,2018-09-20 02:21:44,2019-01-14 15:24:34,2018-05-14 15:49:53 -326,Corliss,Halwell,154-276-2412,Female,3,63,16,2018-12-21 10:15:57,2018-11-26 00:14:11,2018-10-24 18:09:31,2018-05-27 11:41:11 -327,Carlina,Laird,357-488-1031,Female,5,59,27,2018-10-24 22:33:19,2018-10-23 00:27:39,2018-10-26 13:59:23,2018-07-19 02:41:32 -328,Rivalee,Bartolomucci,299-435-2483,Female,2,86,75,2018-06-02 23:51:58,2018-10-18 07:08:38,2019-01-11 07:36:58,2018-06-06 22:53:26 -329,Eleen,Girardy,254-561-4781,Female,6,99,58,2018-08-12 03:49:21,2019-01-04 17:17:54,2018-07-07 17:22:19,2018-02-08 00:26:15 -330,Junina,Scarisbrick,668-657-6435,Female,2,82,52,2018-10-08 01:58:04,2019-01-18 08:27:33,2018-10-13 10:36:18,2018-04-09 10:28:35 -331,Mufi,Insole,497-136-1156,Female,1,3,77,2018-07-01 05:18:23,2018-04-25 06:55:14,2018-12-23 07:35:00,2018-09-14 19:25:46 -332,Burk,Sawday,758-694-5610,Male,1,16,37,2018-05-18 17:42:50,2018-09-01 06:27:12,2018-05-06 06:30:31,2018-11-29 12:15:41 -333,Jess,Gully,330-430-8050,Female,5,2,75,2018-04-21 00:37:44,2018-06-12 02:34:07,2018-05-04 05:50:38,2018-11-25 21:02:42 -334,Dayna,Goublier,395-283-7995,Female,1,3,58,2018-03-10 13:08:34,2018-04-01 05:11:59,2018-07-17 13:31:35,2019-01-02 10:31:32 -335,Shandy,Grzegorczyk,271-236-1931,Female,6,32,34,2018-10-24 18:00:50,2018-03-17 19:11:58,2018-07-13 09:20:10,2018-07-07 03:03:48 -336,Alec,Nunnery,471-774-4412,Male,3,85,94,2018-02-15 09:59:45,2018-01-30 12:50:03,2018-03-01 13:47:47,2018-09-28 11:00:16 -337,Marti,Bedboro,799-912-3939,Female,3,88,26,2018-06-25 11:23:21,2018-10-30 08:43:52,2018-01-29 08:37:23,2018-06-06 00:28:49 -338,Malchy,Kobpac,819-568-9360,Male,4,9,14,2018-02-24 04:10:07,2018-10-05 18:35:23,2018-06-15 18:09:22,2018-11-15 08:05:17 -339,Egan,Dobbinson,366-886-7331,Male,5,43,13,2018-03-14 16:50:59,2018-08-08 23:17:17,2018-05-14 23:29:30,2018-08-19 04:54:16 -340,Maisie,Legg,700-620-6322,Female,7,85,21,2018-08-24 21:35:43,2018-08-30 17:01:27,2018-09-26 01:11:55,2018-12-29 12:04:35 -341,Fidel,Cossum,677-926-2862,Male,3,37,35,2018-07-26 05:42:32,2018-03-10 10:55:00,2018-12-22 17:20:15,2018-12-23 18:00:25 -342,Artemis,Beaton,301-959-5912,Male,7,15,26,2019-01-16 02:54:03,2018-10-28 11:08:44,2018-04-03 17:01:17,2018-04-13 04:28:34 -343,Culver,MacShirrie,126-770-5278,Male,4,28,43,2018-04-18 15:27:55,2018-08-01 10:35:51,2018-03-25 11:19:36,2018-06-01 19:23:11 -344,Jessa,Penreth,684-809-2622,Female,7,59,63,2018-08-04 18:24:37,2018-12-16 20:09:17,2018-04-11 13:14:28,2018-04-22 20:10:29 -345,Nydia,Hefner,535-519-6688,Female,3,70,29,2018-07-22 18:53:43,2018-09-02 00:30:03,2018-10-29 22:17:37,2018-05-07 11:46:24 -346,Ber,Naulty,311-674-2440,Male,6,85,70,2018-09-03 15:50:38,2018-07-04 22:30:51,2018-06-29 11:55:09,2018-05-16 11:27:56 -347,Margit,Greder,417-702-7174,Female,3,35,4,2018-04-28 01:58:34,2018-07-07 16:48:11,2018-10-08 13:45:45,2018-07-30 06:54:10 -348,Haroun,Kleynen,447-297-5270,Male,1,91,87,2018-05-14 13:40:54,2018-02-06 20:20:54,2018-04-24 19:09:01,2018-07-08 15:20:39 -349,Aylmer,Hubner,861-836-0360,Male,7,92,93,2018-02-10 06:55:44,2018-05-09 06:47:11,2018-07-09 15:46:54,2018-06-24 16:38:43 -350,Natty,Clemenzo,127-593-4758,Male,2,26,56,2018-02-01 13:02:29,2018-08-21 13:26:29,2018-12-24 09:27:03,2018-12-03 17:23:39 -351,Adriaens,Galier,704-551-4514,Female,1,64,55,2018-02-20 14:06:58,2018-09-17 22:53:46,2018-06-05 21:13:53,2018-02-25 03:51:27 -352,Raphaela,Higounet,493-470-8620,Female,7,72,86,2018-04-06 23:54:14,2018-11-09 00:01:09,2018-04-16 13:28:28,2018-10-15 09:06:54 -353,Nadia,Cureton,243-413-5780,Female,7,16,92,2018-10-20 06:35:07,2018-04-22 20:08:35,2018-04-07 15:26:39,2018-07-12 20:04:06 -354,Elliot,Bursell,301-524-4971,Male,6,59,44,2018-06-15 18:56:07,2018-03-14 21:30:37,2018-04-10 07:08:26,2018-10-03 23:57:13 -355,Miltie,Credland,318-601-5704,Male,3,5,47,2018-11-14 17:21:39,2018-04-18 22:02:24,2018-05-29 11:29:17,2018-08-28 19:44:37 -356,Andre,Dockray,631-438-3562,Male,2,1,36,2018-10-08 05:05:08,2018-10-07 10:51:00,2018-03-15 03:21:37,2018-08-31 02:22:35 -357,Marty,Vannah,864-526-0455,Male,5,32,9,2018-07-24 00:22:10,2018-08-26 02:40:08,2018-06-27 12:17:04,2018-05-23 03:24:49 -358,Timofei,Paddeley,941-127-2852,Male,4,75,28,2018-06-23 03:54:48,2018-06-16 19:23:26,2018-01-22 23:50:44,2018-09-17 11:00:42 -359,Susie,Bister,717-420-9064,Female,2,35,88,2018-08-09 20:57:50,2018-12-31 14:45:14,2018-04-16 17:44:38,2018-04-22 00:14:47 -360,Salvatore,Saenz,433-114-2254,Male,7,20,65,2018-02-14 15:55:26,2018-10-12 01:07:22,2018-11-29 04:17:51,2018-03-26 04:48:55 -361,Orin,Buttler,311-657-3727,Male,6,34,55,2018-04-05 00:11:44,2018-03-18 20:58:52,2018-09-14 10:40:07,2018-08-10 05:15:21 -362,Darbee,Garnam,956-529-4862,Male,1,75,26,2018-04-10 03:09:44,2018-06-29 01:39:43,2018-08-22 22:42:21,2018-09-15 23:23:04 -363,Lynne,Order,955-214-1203,Female,3,7,62,2018-11-15 23:40:31,2019-01-19 17:41:26,2018-02-14 19:18:25,2018-05-13 10:24:56 -364,Quinn,Hickinbottom,161-623-2666,Female,4,55,12,2018-10-24 13:06:05,2018-05-14 12:29:26,2018-10-03 06:49:08,2018-08-31 05:23:27 -365,Fionnula,Lonsbrough,271-974-9269,Female,2,24,86,2018-11-26 13:04:53,2018-04-30 00:03:02,2018-12-10 17:59:39,2018-11-02 17:56:01 -366,Blinni,Bound,991-243-7726,Female,3,34,55,2018-03-15 03:25:08,2018-07-17 18:13:35,2018-01-22 14:47:57,2018-07-03 10:31:07 -367,Joellyn,Duddin,562-523-2225,Female,3,91,7,2018-03-05 16:54:40,2018-07-11 18:24:57,2018-01-27 22:51:59,2018-06-14 14:18:32 -368,Shawn,McCandie,460-327-7535,Male,7,83,25,2018-03-04 04:08:42,2018-02-27 20:23:00,2018-05-03 04:17:09,2018-05-11 02:19:04 -369,Ferdinande,Beckinsall,555-188-2556,Female,1,23,71,2019-01-09 18:09:00,2018-11-05 21:40:44,2018-04-18 11:39:10,2018-05-26 04:58:28 -370,Dex,Hercock,124-933-7494,Male,4,66,59,2018-12-03 18:59:16,2018-08-24 14:54:44,2018-12-04 06:20:22,2018-02-12 20:16:12 -371,Auguste,Kindread,503-140-7531,Female,1,66,99,2018-09-06 02:28:55,2018-06-16 13:03:23,2018-12-18 05:54:52,2018-06-18 08:33:05 -372,Nicolle,McGarvie,977-633-1344,Female,3,80,30,2018-06-27 01:20:37,2019-01-03 07:13:42,2018-08-14 06:50:08,2018-03-11 19:28:21 -373,Meir,Poxson,979-687-3866,Male,4,95,64,2018-07-09 19:27:35,2018-05-02 06:46:01,2018-03-13 19:59:34,2018-02-14 17:37:01 -374,Aurore,Mathe,855-273-0680,Female,1,35,18,2018-12-25 19:52:38,2018-06-27 16:21:30,2018-09-05 07:24:39,2018-07-07 20:33:00 -375,Tara,Kovacs,289-503-0397,Female,1,96,65,2018-02-01 14:13:00,2018-09-13 12:52:31,2018-12-11 12:17:26,2018-01-27 11:08:31 -376,Oliver,Keitch,295-918-1908,Male,2,2,91,2018-04-25 08:41:36,2018-10-26 12:47:17,2018-09-17 07:21:55,2018-05-05 18:27:42 -377,Terrie,Van der Linde,437-439-0685,Female,5,40,86,2018-06-13 19:39:12,2018-09-27 20:24:10,2018-11-29 11:48:24,2018-08-03 10:38:12 -378,Dickie,Rhymes,812-341-6120,Male,1,20,77,2018-02-19 18:11:07,2018-07-04 05:36:40,2018-11-14 00:59:02,2018-11-24 17:13:06 -379,Lynette,Hadland,438-785-0370,Female,1,49,29,2018-04-01 23:24:07,2018-08-21 14:23:03,2018-05-13 18:28:29,2018-12-12 21:59:32 -380,Blanch,Smythin,325-174-1975,Female,1,13,78,2018-11-04 02:34:45,2018-10-22 10:28:57,2018-09-14 10:12:56,2018-10-23 19:59:00 -381,Camellia,Rickeard,681-592-9848,Female,5,53,4,2018-08-25 10:15:49,2018-04-05 06:53:58,2018-02-17 08:17:38,2018-09-11 01:16:02 -382,Muire,Minto,821-124-3681,Female,2,92,71,2018-10-16 14:05:30,2018-05-21 07:22:46,2018-10-26 09:45:10,2018-09-07 09:40:50 -383,Franz,Goullee,650-849-7354,Male,1,19,86,2018-07-14 09:46:05,2018-02-20 08:15:57,2018-06-05 10:37:07,2018-06-14 13:33:38 -384,Ardath,Salaman,542-596-2751,Female,6,3,76,2018-06-07 05:11:01,2018-09-17 09:28:04,2018-04-10 13:00:45,2018-11-27 21:22:09 -385,Graeme,Balshen,286-335-9657,Male,3,44,17,2018-07-18 15:23:20,2018-03-28 07:57:47,2018-11-12 18:58:13,2018-10-11 13:56:49 -386,Lola,Ainsbury,875-341-9340,Female,5,48,71,2018-03-12 03:05:33,2018-11-01 02:55:54,2018-02-15 04:37:51,2018-05-27 04:11:38 -387,Marchelle,Reynoollds,771-436-6596,Female,3,15,98,2018-07-21 06:24:35,2018-10-15 12:19:29,2018-10-21 17:19:01,2018-12-07 00:08:23 -388,Ruddie,Ginger,639-798-1010,Male,6,53,88,2018-10-27 08:25:56,2018-08-05 15:50:59,2018-05-26 08:38:25,2018-03-12 08:36:31 -389,Kathrine,Guiu,822-798-6112,Female,2,31,32,2018-07-21 23:07:18,2018-04-23 18:22:19,2018-12-14 04:50:14,2018-12-17 05:07:54 -390,Bobbie,Peet,321-618-4507,Male,6,40,10,2018-12-07 06:56:32,2018-05-26 07:54:01,2018-02-12 22:14:19,2018-03-02 09:00:13 -391,Waylon,Brignall,721-399-8864,Male,2,29,55,2018-03-05 23:01:40,2018-02-12 20:24:53,2018-10-03 20:50:03,2018-05-27 20:39:09 -392,Randene,M'Chirrie,274-833-8717,Female,7,5,29,2018-11-09 00:26:39,2018-05-08 06:51:45,2018-10-07 04:03:07,2018-07-11 15:11:59 -393,Venus,Burgise,888-311-2349,Female,5,49,10,2018-01-31 18:35:34,2018-06-11 17:52:44,2019-01-18 10:15:45,2018-01-29 11:19:22 -394,Patton,Atkirk,887-990-8528,Male,3,14,48,2018-09-02 04:16:21,2018-12-07 12:14:18,2018-09-11 02:15:29,2018-05-31 08:26:51 -395,Ethelda,Sclater,557-210-5737,Female,2,98,59,2018-10-08 02:45:35,2018-03-07 11:02:12,2018-03-09 22:30:08,2018-07-15 06:00:38 -396,Kerry,Mascall,178-504-3458,Male,3,83,65,2018-08-12 19:58:08,2018-07-06 21:04:42,2018-07-15 00:45:35,2018-11-11 14:30:45 -397,Kelsey,Bohills,477-245-9384,Female,4,23,40,2018-08-31 00:28:52,2018-04-23 15:33:52,2018-08-22 04:21:43,2018-12-27 08:56:06 -398,Brennen,Ahrendsen,666-924-8234,Male,3,47,82,2018-12-10 22:01:21,2018-11-13 15:03:16,2018-01-21 19:47:47,2018-07-28 11:39:10 -399,Carmelina,Mountcastle,871-952-4482,Female,6,14,79,2018-05-25 02:01:07,2018-05-15 19:52:19,2018-07-16 23:16:38,2018-05-22 23:32:19 -400,Dale,Eltone,663-128-1228,Male,1,80,26,2018-10-13 23:51:08,2018-02-19 19:49:01,2018-01-27 11:58:54,2018-07-02 14:05:44 -401,Brianna,Beauchop,922-667-1003,Female,5,12,12,2018-11-05 20:21:33,2018-06-24 22:17:20,2018-06-12 04:34:37,2018-07-09 06:48:22 -402,Guillema,MacKibbon,164-334-7955,Female,3,6,56,2018-06-24 21:01:56,2018-08-15 08:52:58,2018-07-21 21:42:02,2018-02-26 08:29:48 -403,Ettore,Brailsford,231-820-9624,Male,1,92,34,2019-01-17 05:37:42,2018-06-30 12:14:43,2018-04-11 20:55:10,2018-01-21 17:40:14 -404,Shawn,M'cowis,293-256-5912,Male,7,12,87,2018-02-07 20:27:20,2018-08-07 19:48:03,2019-01-01 18:32:27,2018-08-31 20:41:20 -405,Lolly,Rankcom,743-968-5736,Female,2,17,31,2018-11-03 21:37:26,2018-07-18 08:15:01,2018-12-28 23:22:36,2018-09-04 02:20:01 -406,Jeffry,Dingle,194-835-0524,Male,1,6,58,2018-10-21 16:42:07,2018-06-01 21:41:20,2018-06-17 04:34:34,2018-12-29 19:09:29 -407,Marcelle,Molder,766-356-8780,Female,3,85,45,2018-10-18 11:17:27,2018-10-17 20:18:59,2018-09-05 10:30:56,2018-08-10 06:31:09 -408,Binni,Ferney,214-353-4132,Female,6,6,98,2018-02-20 07:18:40,2018-06-24 11:40:51,2018-12-13 02:29:35,2018-10-04 10:52:07 -409,Pat,Whenham,885-713-4885,Male,7,64,5,2018-10-29 12:39:59,2018-11-08 18:24:31,2018-04-17 11:10:35,2018-10-13 22:45:02 -410,Towney,Mizzi,602-556-2702,Male,7,40,94,2018-03-02 22:07:54,2018-08-30 01:11:53,2018-12-21 22:30:09,2018-04-08 21:36:17 -411,Cecil,Bickerdike,577-476-2260,Male,2,2,65,2018-02-25 13:53:37,2018-02-13 04:10:01,2018-05-27 20:30:46,2018-04-11 01:36:56 -412,Franciskus,Thomlinson,539-919-8711,Male,4,69,14,2018-11-12 12:18:44,2018-02-07 14:40:19,2018-08-23 04:04:48,2018-02-11 00:53:06 -413,Valentino,Machent,281-308-6846,Male,6,76,23,2018-10-04 13:04:01,2018-09-13 11:56:13,2018-06-25 21:50:15,2018-06-03 04:08:35 -414,Evelin,Harpham,287-743-1401,Male,7,1,5,2018-06-15 01:25:03,2018-05-17 06:35:54,2018-10-22 08:02:14,2018-08-25 01:58:06 -415,Cassandre,Crum,685-341-7481,Female,3,25,79,2018-07-29 10:09:33,2018-01-30 23:16:22,2019-01-13 15:40:35,2018-07-14 15:57:17 -416,Loren,Leschelle,321-405-9197,Male,3,26,13,2018-04-29 06:52:46,2018-06-21 13:57:41,2018-07-30 18:39:32,2018-09-01 00:31:38 -417,Ilaire,Plose,336-197-4797,Male,1,53,50,2018-07-01 07:52:56,2018-10-30 02:18:43,2018-08-21 23:46:29,2018-08-07 13:03:11 -418,Hannis,Issacof,315-716-3782,Female,2,99,85,2019-01-19 10:40:46,2018-04-26 10:04:56,2018-11-15 02:42:19,2018-08-21 16:50:00 -419,Meggie,Beeke,556-174-4615,Female,1,13,85,2018-03-05 16:12:22,2018-09-19 22:31:27,2018-12-04 04:01:57,2018-04-14 20:14:40 -420,Clemens,Leades,183-447-0091,Male,7,98,12,2018-06-18 06:17:24,2018-04-10 09:59:20,2018-03-20 22:45:02,2018-05-10 17:11:21 -421,Dennis,Chifney,196-548-2180,Male,7,75,98,2018-12-09 00:19:15,2018-06-16 10:29:26,2018-09-12 03:26:46,2018-10-24 16:42:20 -422,Yuri,Laytham,783-967-4260,Male,7,72,60,2018-01-28 20:33:42,2018-11-10 15:59:58,2018-05-07 10:19:43,2018-03-08 01:03:28 -423,Rosaline,Gibbins,376-974-7633,Female,3,22,56,2018-06-26 01:09:00,2018-10-30 23:51:58,2018-07-31 09:43:54,2018-11-23 12:00:53 -424,Yule,Hadwick,795-430-0875,Male,2,99,87,2018-03-09 17:35:22,2018-07-18 20:38:41,2018-08-29 09:29:40,2018-12-12 13:21:09 -425,Albertine,Bernlin,415-360-6554,Female,2,40,34,2018-05-24 10:27:28,2018-10-31 10:36:51,2018-07-04 15:40:42,2018-05-23 02:22:57 -426,Donnell,Stammler,944-379-5489,Male,4,59,41,2018-06-28 16:01:29,2018-05-18 12:55:36,2018-03-07 06:37:32,2018-03-25 12:44:31 -427,Brant,Athy,987-827-3040,Male,5,52,7,2018-01-24 14:17:54,2018-10-06 04:10:01,2018-02-21 04:02:17,2018-05-27 20:44:43 -428,Rose,Barnaby,789-522-4912,Female,7,31,46,2018-11-30 14:09:29,2018-11-06 16:28:33,2018-12-13 23:06:42,2018-09-12 17:39:14 -429,Valina,Ply,729-373-7904,Female,3,65,27,2018-11-15 05:26:26,2018-11-28 15:21:13,2018-05-01 00:56:08,2018-02-05 07:37:50 -430,Berkley,Ferry,484-341-3250,Male,6,47,48,2018-07-26 11:27:11,2018-03-05 19:23:46,2018-08-05 08:09:19,2018-05-30 08:43:28 -431,Jarred,Cunnington,995-170-5820,Male,4,6,1,2018-07-12 11:36:19,2018-10-19 05:16:25,2018-06-28 12:38:16,2018-10-08 06:52:46 -432,Marys,Audry,449-892-8929,Female,2,25,86,2018-11-21 14:36:19,2018-11-26 13:31:27,2018-03-28 15:22:34,2018-01-28 08:07:21 -433,Coreen,Vinnicombe,267-868-6003,Female,6,64,45,2018-10-19 22:09:21,2018-12-08 23:41:39,2018-08-16 05:46:08,2018-11-18 14:46:52 -434,Spense,Sarfati,945-773-9494,Male,4,6,3,2018-03-18 13:44:54,2018-09-04 10:40:58,2019-01-15 18:23:55,2018-06-07 16:02:39 -435,Chandra,Burgin,130-446-4470,Female,4,95,96,2018-09-27 16:48:00,2018-05-20 20:44:56,2018-11-23 04:46:53,2018-01-31 16:31:14 -436,Tomas,Currin,756-279-5643,Male,4,41,4,2018-11-18 07:22:02,2018-11-14 14:03:44,2018-09-18 12:36:39,2018-06-05 09:28:43 -437,Conway,Wesson,754-769-3550,Male,1,52,46,2019-01-02 08:07:04,2018-02-14 00:52:12,2018-02-11 10:52:29,2018-02-16 15:31:25 -438,Stefa,Meese,610-105-6841,Female,7,39,28,2018-04-28 02:21:35,2018-10-21 01:33:19,2018-11-23 21:00:01,2019-01-10 08:36:35 -439,Theadora,Ubee,609-368-9924,Female,6,42,5,2018-04-22 17:02:17,2018-08-21 16:33:25,2018-08-25 04:12:23,2018-02-16 01:13:06 -440,Virginia,Flawn,711-955-7169,Female,3,20,19,2018-08-16 18:01:55,2018-04-18 10:08:19,2018-01-27 09:38:48,2018-05-29 02:29:24 -441,Marv,Mummery,820-192-1452,Male,5,75,95,2018-05-29 15:29:25,2018-03-19 14:00:54,2018-01-22 01:15:38,2018-08-17 08:36:00 -442,Fulton,Zelake,283-584-1765,Male,7,4,3,2019-01-13 23:55:52,2018-08-19 22:29:51,2018-04-16 02:28:54,2018-03-16 16:58:02 -443,Guillemette,Ferretti,776-408-8649,Female,3,24,79,2018-07-31 04:43:48,2018-08-04 15:42:51,2018-04-11 16:00:11,2019-01-07 22:56:20 -444,Egbert,Dureden,698-387-7895,Male,7,54,6,2018-02-25 13:06:41,2018-01-28 14:50:49,2019-01-01 05:38:28,2018-06-19 00:46:05 -445,Trumaine,Canniffe,563-399-5639,Male,1,79,93,2018-11-08 00:30:08,2018-04-07 04:15:13,2018-03-30 14:48:19,2018-04-10 23:29:00 -446,Burr,Goves,451-577-7757,Male,1,27,72,2018-03-16 22:57:50,2018-02-04 21:42:45,2018-06-27 04:37:53,2019-01-16 15:20:56 -447,Juditha,Luebbert,958-685-2937,Female,4,36,87,2018-08-30 23:36:55,2018-06-22 07:04:37,2018-08-23 08:03:08,2018-03-28 04:50:57 -448,Lilly,Smewings,246-392-5467,Female,7,61,65,2018-06-02 21:56:15,2018-09-21 22:08:51,2018-11-29 20:26:34,2018-09-09 13:36:55 -449,Beckie,Curd,239-783-9576,Female,2,18,69,2018-11-20 04:10:54,2018-07-09 08:10:52,2018-03-19 21:04:09,2018-06-19 12:09:53 -450,Cristie,Edmonds,203-875-9153,Female,6,75,68,2018-11-16 10:01:12,2018-08-05 10:10:51,2019-01-11 05:06:49,2018-02-27 23:12:37 -451,Richmound,Machans,259-901-3247,Male,6,7,81,2019-01-12 15:06:01,2018-08-04 16:50:11,2018-12-30 16:16:18,2018-04-24 01:22:55 -452,Murial,Heiss,686-151-1653,Female,6,62,44,2018-05-18 13:49:57,2018-07-31 04:58:55,2018-02-26 22:38:19,2018-06-03 12:20:39 -453,Leonhard,O'Hear,205-401-7116,Male,5,3,1,2018-12-01 20:43:01,2018-06-19 12:45:05,2018-06-17 21:31:22,2018-12-29 20:41:28 -454,Kin,Yakovlev,952-369-5846,Male,1,39,38,2018-03-05 07:22:54,2018-06-20 14:24:43,2018-12-24 17:56:41,2018-07-13 07:55:25 -455,Debee,Fransinelli,230-272-0203,Female,3,64,60,2018-03-28 12:01:56,2018-09-10 13:03:46,2018-05-10 07:50:05,2018-08-10 09:35:31 -456,Nappie,Seaton,809-725-5784,Male,1,67,52,2018-09-13 00:18:51,2018-07-10 10:46:33,2018-04-19 00:56:44,2018-06-17 12:12:31 -457,Adelheid,Wanjek,795-641-9749,Female,1,21,97,2018-03-09 22:00:35,2018-08-09 22:29:44,2018-05-22 14:09:09,2018-03-19 18:49:28 -458,Jeannette,Glanville,377-671-9024,Female,7,84,44,2018-10-05 10:17:32,2018-04-06 12:22:12,2018-05-10 03:19:20,2018-09-30 04:25:01 -459,Adrianna,Blezard,773-598-7742,Female,6,89,62,2018-04-25 21:46:25,2018-05-26 05:44:50,2018-07-14 12:21:26,2018-09-28 10:26:06 -460,Gloria,Keelin,120-823-7944,Female,4,9,68,2018-07-13 21:08:25,2018-03-14 15:55:09,2018-04-02 02:08:40,2019-01-09 11:56:17 -461,Becki,Gatling,845-125-4361,Female,4,1,71,2018-06-24 20:47:16,2018-08-28 04:29:09,2018-05-06 23:04:29,2018-06-01 05:37:42 -462,Gabriellia,Lobley,844-697-7445,Female,2,89,99,2018-09-15 13:57:53,2018-06-14 14:04:36,2018-12-09 22:49:10,2018-02-12 02:07:35 -463,Aaren,McVie,973-286-0455,Female,4,67,14,2018-10-24 23:51:19,2018-04-28 04:48:26,2018-08-01 00:36:09,2018-07-03 13:36:32 -464,Barbara,Luddy,270-772-2682,Female,6,31,58,2018-03-18 11:34:08,2018-11-10 07:14:55,2018-12-12 21:20:10,2018-08-31 00:15:05 -465,Ibrahim,Went,494-197-0863,Male,3,35,42,2018-10-27 09:01:43,2018-05-24 01:03:27,2018-11-12 00:22:15,2018-03-28 09:23:37 -466,Sherry,Meert,142-492-1426,Female,7,30,41,2018-09-05 17:22:28,2019-01-11 02:43:23,2018-08-24 21:28:14,2018-03-23 18:02:50 -467,Marietta,Caulwell,931-150-2069,Male,5,5,93,2018-10-20 06:55:32,2018-08-24 12:59:12,2018-02-05 08:19:35,2018-01-23 22:03:22 -468,Kaiser,Gossage,250-466-8664,Male,6,23,93,2018-08-30 13:38:00,2018-10-27 22:45:24,2018-06-20 08:32:02,2018-01-25 09:32:34 -469,Margie,Fenelon,570-190-5079,Female,7,83,33,2018-12-11 01:27:54,2018-02-18 13:46:59,2018-09-23 21:24:36,2018-09-12 19:05:02 -470,Alvin,Stallan,451-964-7576,Male,6,25,97,2018-10-10 09:53:05,2018-05-12 18:37:24,2018-04-16 18:11:41,2018-12-06 13:37:08 -471,Corbin,Lamport,950-956-7283,Male,2,80,15,2018-10-08 17:14:14,2018-12-03 17:06:55,2018-08-04 22:29:17,2018-12-03 12:04:13 -472,Imelda,Crat,346-373-3643,Female,3,60,21,2018-01-25 18:42:27,2018-02-02 11:29:22,2018-05-12 06:06:53,2018-05-24 14:31:31 -473,Kala,Aikenhead,665-137-0705,Female,3,5,83,2018-03-11 01:11:04,2019-01-18 14:28:39,2018-04-20 06:28:31,2018-06-21 01:18:27 -474,Bastien,Lavell,325-523-0512,Male,7,87,91,2019-01-14 08:13:00,2018-06-08 18:23:51,2018-12-02 08:49:53,2018-12-06 00:24:41 -475,Muriel,Cannon,174-249-0377,Female,7,11,49,2018-06-09 02:06:14,2018-05-19 03:47:34,2018-02-15 07:14:49,2018-03-19 22:10:50 -476,Duane,Presland,616-278-2852,Male,6,49,20,2018-02-10 17:43:55,2018-02-21 00:21:21,2018-10-01 16:17:22,2018-04-06 08:15:06 -477,Emmerich,Baildon,408-829-6965,Male,1,13,29,2018-11-08 20:46:52,2018-07-04 14:45:10,2018-05-22 03:30:35,2018-07-26 23:46:21 -478,El,Seabourne,745-257-4885,Male,6,13,60,2019-01-05 01:40:08,2019-01-07 01:30:58,2018-08-24 00:13:56,2018-08-20 02:39:03 -479,Rivalee,Robertsson,882-741-1264,Female,3,36,70,2018-10-07 07:27:41,2018-05-13 11:32:58,2018-12-07 16:22:21,2018-12-12 19:59:38 -480,Alexis,Lapping,852-596-1033,Female,1,48,44,2018-01-30 22:17:04,2018-08-30 00:34:37,2018-11-04 00:05:38,2018-12-11 02:01:32 -481,Francine,Slatcher,134-351-4974,Female,1,56,91,2018-12-25 00:49:27,2018-10-11 02:42:45,2018-10-09 12:40:08,2018-09-01 13:26:34 -482,Kristen,Petters,440-151-8788,Female,7,19,49,2018-02-17 01:34:14,2018-10-28 03:18:55,2018-09-13 14:14:48,2018-01-22 12:26:05 -483,Riobard,Helin,217-648-4050,Male,6,3,62,2019-01-08 20:13:28,2018-07-10 21:50:12,2018-02-14 10:54:30,2018-07-10 15:21:36 -484,Jere,Marrison,125-522-1752,Male,5,77,48,2018-03-27 12:35:57,2018-08-11 12:06:00,2018-07-10 09:48:33,2018-11-12 18:44:01 -485,Sheila,Edens,296-894-3200,Female,3,99,67,2018-09-02 05:54:01,2018-03-13 04:55:49,2019-01-07 04:42:32,2018-12-12 03:46:51 -486,Georgy,Sallings,860-751-2558,Male,5,42,98,2018-03-04 09:36:14,2018-12-18 03:43:57,2018-05-26 16:22:04,2018-09-02 12:56:41 -487,Marcellina,Ledgister,286-469-6281,Female,6,17,35,2018-07-04 19:56:40,2018-04-13 18:15:53,2018-06-22 16:02:20,2018-02-12 13:24:14 -488,Terra,Dodamead,913-630-9923,Female,1,82,1,2018-12-11 19:54:27,2018-12-11 20:39:38,2018-03-28 15:51:45,2018-08-25 04:08:21 -489,Alia,Morrel,431-923-1395,Female,7,7,38,2018-05-24 06:33:39,2018-03-16 20:23:58,2018-09-11 05:45:02,2018-02-10 15:26:52 -490,Henri,Cullivan,513-315-1874,Male,2,7,65,2018-02-21 12:36:28,2018-02-28 14:01:27,2018-11-04 00:27:37,2018-06-18 18:54:48 -491,Josie,Langrish,674-305-6918,Female,2,79,72,2018-07-26 02:09:25,2018-12-03 14:04:40,2018-10-18 18:24:47,2018-09-01 09:38:00 -492,Brittany,Redwall,197-871-1265,Female,2,98,39,2019-01-15 16:02:18,2018-07-28 14:31:51,2019-01-05 12:31:54,2018-02-17 02:21:53 -493,Phillie,Caulket,276-222-0475,Female,2,92,27,2018-10-19 10:58:15,2018-10-01 05:23:18,2018-10-31 20:41:31,2018-01-23 21:09:13 -494,Clair,Ring,789-696-3129,Female,1,60,89,2018-12-15 04:12:43,2018-03-14 18:18:51,2018-02-01 04:15:54,2018-05-24 23:34:59 -495,Allis,Sunner,601-505-2836,Female,3,37,9,2018-03-16 18:20:34,2018-10-03 23:52:03,2018-09-09 20:19:13,2018-09-12 13:27:03 -496,Madeleine,Haitlie,956-801-4088,Female,4,55,99,2018-05-23 09:24:40,2018-09-25 14:13:54,2018-12-07 06:01:21,2018-08-05 05:36:15 -497,Cirillo,Gronav,571-141-3522,Male,5,81,10,2018-10-11 20:52:40,2018-02-21 03:11:05,2018-09-16 08:35:42,2018-03-26 20:16:43 -498,Arturo,Cowitz,923-926-3273,Male,3,93,12,2018-11-22 05:37:54,2018-02-17 15:11:34,2018-03-31 00:15:46,2018-08-03 14:49:13 -499,Haley,Cartmill,139-891-8155,Female,2,79,56,2018-10-28 03:24:17,2018-09-26 03:42:15,2018-09-16 20:27:43,2018-10-21 06:51:02 -500,Caddric,Eim,386-491-4555,Male,4,88,81,2018-07-27 07:41:11,2018-11-06 13:25:15,2018-04-30 01:01:46,2018-10-27 13:14:40 -501,Sargent,Beart,958-909-4690,Male,1,44,9,2018-07-18 12:02:07,2018-07-23 05:06:07,2018-07-16 15:25:53,2018-08-26 13:12:34 -502,Dane,Gason,502-241-7120,Male,6,79,58,2018-11-17 04:47:55,2018-07-17 16:19:37,2018-12-02 13:39:55,2018-08-07 15:28:47 -503,Humfried,Canelas,275-518-1730,Male,3,82,87,2018-02-02 11:38:29,2018-10-18 04:09:03,2018-02-04 00:47:16,2018-07-23 00:37:30 -504,Sam,Freiberg,757-773-6048,Female,5,89,31,2018-12-01 22:51:12,2018-06-29 03:50:29,2018-07-25 14:13:37,2018-06-11 22:59:09 -505,Goddart,Crossgrove,820-183-6322,Male,3,41,25,2018-11-22 23:25:36,2018-01-29 08:12:28,2018-09-24 21:36:56,2018-03-04 00:40:37 -506,Joela,Bondesen,856-474-9498,Female,5,71,97,2018-05-08 08:23:42,2018-12-20 17:54:27,2018-08-13 11:11:11,2018-08-06 19:06:58 -507,Harrie,Nendick,943-670-9341,Female,3,66,6,2018-05-03 20:18:57,2018-11-06 16:35:09,2018-07-18 17:01:56,2018-03-29 06:23:00 -508,Farlay,Manderson,834-991-0018,Male,4,44,9,2018-08-16 12:51:08,2018-09-19 19:35:31,2018-09-28 07:49:16,2018-11-26 04:15:32 -509,Warren,Pegram,815-768-9711,Male,1,2,70,2018-11-03 16:08:12,2018-09-27 19:07:58,2018-02-15 09:57:42,2018-02-04 05:33:01 -510,Mylo,Haskayne,624-512-7407,Male,3,71,28,2018-11-05 07:00:48,2018-08-22 23:42:06,2018-10-13 09:30:14,2018-12-17 14:14:01 -511,Giacomo,Halsho,976-203-6826,Male,2,59,100,2018-04-11 12:30:03,2018-05-06 11:36:27,2019-01-03 21:44:26,2018-06-13 06:17:36 -512,Aloysia,Stuchburie,466-684-9228,Female,7,15,94,2018-05-05 20:22:16,2018-05-06 16:01:54,2018-11-13 03:57:27,2018-08-05 07:41:19 -513,Brit,Glentz,283-639-7723,Male,4,5,19,2018-04-07 12:25:00,2018-09-26 07:12:01,2018-06-05 14:15:20,2018-06-02 16:59:25 -514,Maddi,Kerfoot,543-438-1531,Female,3,16,67,2018-06-30 07:58:22,2018-12-16 23:14:43,2019-01-03 10:51:10,2018-09-10 17:15:42 -515,Ruy,Townson,801-852-6590,Male,1,31,55,2018-02-22 06:06:31,2019-01-20 20:38:59,2018-09-28 17:23:51,2018-09-30 05:48:30 -516,Rawley,Tatum,634-340-1379,Male,5,32,35,2018-02-14 04:43:24,2018-06-30 10:54:44,2018-11-22 11:23:10,2018-03-01 16:10:00 -517,Teddy,Pickford,404-551-3889,Male,2,82,54,2018-12-29 05:25:46,2018-04-13 05:46:18,2018-10-11 18:14:38,2018-11-07 08:35:59 -518,Randolph,Stealfox,750-802-5940,Male,3,91,11,2018-04-03 20:00:54,2018-11-29 19:15:41,2018-02-20 09:38:24,2018-03-25 15:38:52 -519,Filmer,Sumption,833-713-4339,Male,2,2,8,2018-01-26 04:26:32,2018-03-08 20:23:21,2018-07-27 10:41:05,2018-11-04 20:18:36 -520,Barbee,Salvador,475-228-6268,Female,1,13,71,2018-10-24 00:02:01,2018-01-21 21:29:45,2018-07-03 13:31:36,2019-01-07 14:59:36 -521,Valina,Spillett,588-767-5376,Female,5,27,8,2018-03-03 01:39:51,2018-01-28 01:22:11,2018-04-22 03:30:25,2018-03-08 04:45:22 -522,Taber,Faunt,428-608-8317,Male,5,46,93,2018-06-09 11:17:55,2018-09-01 01:34:32,2018-02-19 13:01:55,2018-08-15 06:00:48 -523,Lilas,Siemons,680-968-7597,Female,6,31,25,2018-11-26 22:08:43,2018-02-15 23:08:21,2018-12-26 05:40:57,2018-02-22 02:08:43 -524,Spence,Vosper,720-164-0499,Male,2,37,73,2018-01-31 08:38:29,2018-07-08 11:20:30,2018-10-31 09:36:46,2018-08-26 13:46:48 -525,Robinett,Le Breton De La Vieuville,690-247-8261,Female,6,47,79,2018-04-02 23:29:51,2018-04-26 14:43:49,2018-09-29 04:02:35,2018-02-22 14:19:00 -526,Pia,Favell,689-639-0553,Female,5,96,86,2018-09-27 09:10:13,2018-02-18 08:18:56,2018-09-16 10:20:42,2018-09-19 19:46:37 -527,Jody,Persich,875-503-4255,Female,5,1,63,2018-12-28 04:07:08,2018-02-19 06:37:40,2018-11-08 19:30:56,2018-04-16 19:36:13 -528,Mimi,Meach,664-906-5485,Female,3,46,59,2018-05-16 02:36:27,2018-02-06 06:52:54,2018-03-16 20:22:46,2018-12-24 10:29:20 -529,Nyssa,Hillborne,493-931-8360,Female,6,70,73,2018-12-08 00:07:34,2018-01-31 21:28:10,2018-04-14 12:33:22,2018-12-18 17:12:16 -530,Chrissie,Jagger,284-506-7117,Male,7,89,53,2018-03-21 21:11:02,2018-09-10 16:42:15,2019-01-17 21:11:31,2018-10-26 07:01:07 -531,Jacqueline,Hebblewhite,313-329-3935,Female,6,70,40,2018-07-29 17:39:44,2018-08-26 14:11:15,2018-12-18 12:39:49,2018-09-04 11:21:47 -532,Gunilla,Frarey,231-521-7913,Female,7,3,44,2018-03-05 06:12:04,2018-06-21 16:09:41,2018-01-27 13:30:18,2018-02-28 16:14:26 -533,Eleni,Fassum,149-906-0502,Female,1,40,27,2018-11-17 06:56:45,2018-06-22 05:04:09,2018-05-07 22:21:42,2018-12-21 21:39:19 -534,Kerr,Kelshaw,729-673-6161,Male,6,94,93,2018-11-23 00:31:03,2018-12-09 03:46:43,2018-02-22 16:54:17,2018-09-09 11:05:13 -535,Lisha,Curgenven,874-739-3351,Female,4,97,18,2018-02-20 18:11:36,2018-10-17 06:38:52,2018-12-26 02:40:15,2018-02-13 09:24:09 -536,Bevin,Jakeman,676-751-7045,Male,1,87,71,2018-02-20 13:08:18,2018-11-21 06:36:13,2018-09-22 09:22:49,2018-10-09 06:21:12 -537,Harland,Sidney,139-828-9659,Male,6,23,85,2018-09-18 02:15:28,2018-04-10 06:49:54,2018-12-05 20:08:51,2018-08-05 09:53:26 -538,Rori,Seys,180-907-6460,Female,5,27,23,2018-02-22 03:55:23,2018-08-01 08:40:28,2018-05-15 12:42:51,2018-10-22 00:24:22 -539,Baxy,Marjanski,580-759-7206,Male,4,95,30,2018-09-01 14:33:22,2018-12-14 23:01:00,2018-12-02 00:20:18,2018-08-25 13:54:47 -540,Martie,Dearsley,102-718-1278,Male,7,89,15,2018-03-15 10:57:25,2018-03-03 03:48:25,2018-07-12 03:48:36,2018-07-22 13:18:47 -541,Erin,Ruddick,969-222-3994,Male,1,97,56,2018-05-18 05:27:05,2018-02-23 12:22:10,2018-04-13 08:34:06,2018-11-25 15:51:09 -542,Tome,Lorne,842-424-5954,Male,4,58,76,2018-12-11 13:20:20,2018-07-29 14:26:59,2018-08-12 08:27:28,2018-04-03 13:46:52 -543,Nell,Borkin,228-448-5895,Female,1,3,1,2018-11-30 16:38:15,2018-07-27 09:33:59,2018-08-23 02:00:10,2018-09-28 00:28:48 -544,Teirtza,Springthorp,538-731-0003,Female,4,8,3,2018-03-28 08:52:40,2018-11-03 18:14:45,2019-01-02 06:05:23,2018-03-22 22:01:00 -545,Arlina,Feighney,977-853-6783,Female,1,18,40,2018-02-08 21:04:46,2018-03-02 23:43:32,2018-03-05 13:33:15,2018-05-12 17:12:38 -546,Melosa,Gifford,804-769-4197,Female,7,55,98,2018-02-04 08:50:49,2018-10-10 06:22:51,2018-06-01 01:45:08,2018-12-24 03:31:15 -547,Charin,Petrello,597-441-0171,Female,6,67,18,2018-09-10 08:11:34,2018-03-15 18:44:45,2018-10-22 23:24:05,2018-07-31 01:37:48 -548,Cristian,Stute,223-959-7392,Male,2,5,69,2018-11-01 17:37:10,2018-05-25 14:21:07,2018-10-09 08:14:38,2018-06-29 13:27:34 -549,Velvet,Morison,848-981-1316,Female,1,20,17,2018-02-14 02:16:51,2018-08-25 23:57:58,2018-04-20 10:47:18,2018-04-04 19:16:45 -550,Vivienne,Taillard,392-626-2926,Female,2,38,47,2019-01-20 11:03:04,2018-06-11 20:42:47,2018-05-13 17:10:39,2018-06-02 20:11:46 -551,Zach,Vials,406-733-0058,Male,1,28,88,2018-12-14 14:36:03,2018-02-25 21:52:58,2018-10-17 02:37:28,2018-02-05 17:26:59 -552,Christie,De Caville,268-836-0470,Male,6,28,91,2018-11-26 14:01:43,2018-06-27 22:05:24,2018-11-10 16:11:15,2018-07-20 12:01:34 -553,Dulce,Walesby,578-217-3628,Female,6,83,40,2018-04-12 08:24:30,2018-10-07 09:32:47,2018-04-10 12:21:16,2018-06-04 11:56:13 -554,Shermy,Martinek,627-924-0370,Male,1,54,86,2018-09-02 00:41:57,2018-09-16 02:42:47,2018-05-10 03:54:12,2018-11-14 17:54:47 -555,Curcio,Cudworth,355-447-1790,Male,2,43,26,2018-05-31 02:31:23,2018-11-18 23:47:19,2018-02-26 10:49:12,2018-08-22 04:36:14 -556,Newton,Zuan,810-756-5844,Male,5,85,20,2018-03-09 16:07:56,2018-10-12 16:45:42,2018-05-02 19:27:29,2018-04-21 12:37:09 -557,Gina,Keyho,566-476-0815,Female,4,8,83,2018-09-21 17:12:16,2018-03-20 10:13:51,2018-05-22 10:29:45,2018-09-23 17:23:36 -558,Emmanuel,Beacham,923-766-7627,Male,4,15,10,2018-10-14 04:16:42,2018-12-12 21:49:16,2018-04-06 14:49:00,2018-02-10 06:29:37 -559,Mel,Deniseau,577-125-8484,Female,3,12,6,2018-06-01 18:43:13,2018-11-09 14:24:38,2018-07-01 23:11:43,2018-11-24 10:28:42 -560,Deena,Knutton,544-886-5072,Female,2,98,57,2018-02-11 05:11:20,2018-08-19 14:06:35,2018-09-06 12:12:59,2018-10-07 13:53:21 -561,Flossy,Antonacci,108-542-7284,Female,2,20,36,2018-05-20 08:28:31,2018-04-01 14:07:20,2018-07-23 02:08:55,2018-08-29 00:40:11 -562,Gabriela,Gravy,565-992-0341,Female,3,54,70,2018-03-14 07:29:51,2018-11-24 05:40:57,2018-06-24 11:53:15,2018-12-13 15:23:43 -563,Emelen,Healey,821-210-6931,Male,7,16,79,2018-03-02 11:53:31,2018-07-04 07:43:45,2018-08-20 22:28:53,2018-08-20 07:13:10 -564,Anne-marie,Peatman,431-777-2495,Female,4,38,1,2018-02-28 18:38:14,2018-08-28 18:58:41,2018-09-01 22:16:42,2018-11-14 23:08:02 -565,Raymond,Truelock,671-694-3305,Male,5,20,76,2018-11-19 18:58:41,2018-10-26 03:22:35,2018-10-13 10:05:37,2018-10-20 00:19:39 -566,Gabriel,Matlock,704-620-9706,Female,1,29,24,2018-07-24 15:56:02,2018-12-23 10:03:48,2018-07-13 22:41:53,2018-06-12 13:42:42 -567,Leontine,Kollasch,793-692-0103,Female,4,68,78,2018-05-05 06:54:44,2018-07-26 19:41:30,2018-04-16 00:46:38,2018-11-20 19:18:17 -568,Amelina,Gullick,674-849-6707,Female,2,75,43,2019-01-01 12:18:11,2018-02-18 10:50:33,2018-09-11 05:30:18,2018-12-28 03:43:14 -569,Matthew,Gateley,450-774-0905,Male,5,93,62,2018-02-17 13:01:16,2018-06-17 01:27:48,2018-12-03 19:17:56,2018-08-31 08:39:46 -570,Alvan,Postance,415-301-3970,Male,5,36,24,2018-02-15 12:09:30,2018-07-26 19:38:06,2018-09-23 03:56:41,2018-09-17 12:13:43 -571,Ethelind,Otteridge,724-398-4832,Female,1,11,20,2019-01-09 07:06:55,2018-08-06 11:24:34,2018-02-04 09:08:33,2018-02-04 10:18:38 -572,Allayne,Pettegre,567-912-1393,Male,5,50,24,2019-01-17 18:14:12,2018-03-20 23:30:29,2018-07-08 17:53:55,2018-03-30 22:34:32 -573,Cindee,MacGill,218-267-2220,Female,3,85,36,2018-03-18 06:24:30,2018-08-12 14:08:59,2018-06-07 00:36:38,2018-07-28 18:35:16 -574,Jeramie,Fante,508-403-4318,Male,6,17,58,2018-09-05 21:09:00,2018-07-16 01:34:59,2018-05-30 20:15:51,2018-10-07 09:23:32 -575,Johannah,Treamayne,670-278-1704,Female,1,44,50,2018-09-01 12:25:07,2018-09-04 03:56:02,2018-03-25 08:47:56,2018-06-27 19:44:57 -576,Dari,Brocklesby,128-823-5176,Female,2,21,47,2018-11-06 21:06:13,2018-11-23 13:57:31,2019-01-01 00:06:22,2018-06-23 04:39:41 -577,Cob,Younglove,589-756-5544,Male,1,34,97,2018-06-06 05:48:43,2019-01-01 02:48:52,2018-09-20 02:52:35,2018-06-29 07:02:35 -578,Genevieve,Benois,718-259-0218,Female,1,83,84,2018-12-29 00:38:58,2019-01-17 14:12:58,2018-08-21 12:35:34,2018-07-15 16:50:51 -579,Demetra,Clineck,537-758-1797,Female,7,58,86,2018-04-18 09:28:08,2018-05-18 03:26:25,2018-02-24 07:51:24,2018-12-11 05:21:46 -580,Edithe,MacNeilage,254-201-0040,Female,5,2,46,2018-12-06 12:01:57,2018-02-16 02:10:30,2018-02-23 14:46:58,2018-12-31 17:43:21 -581,Osbourne,Scranny,682-363-4094,Male,3,29,17,2018-05-10 17:26:21,2018-11-02 03:59:01,2018-04-07 16:21:34,2018-07-31 23:17:47 -582,Con,Shyre,535-646-6697,Male,3,96,16,2018-07-14 00:36:39,2018-12-15 03:20:27,2018-07-23 10:48:18,2018-03-18 15:21:58 -583,Sylvester,Cannicott,456-905-3181,Male,1,2,37,2018-12-19 15:40:57,2018-06-18 08:08:39,2018-05-16 20:50:39,2018-10-02 13:56:35 -584,Any,Hayter,822-858-6900,Male,7,52,26,2018-11-06 13:05:00,2018-12-07 12:10:14,2018-12-30 08:34:38,2018-11-29 15:54:05 -585,Hebert,Casaro,238-642-2667,Male,5,86,80,2018-08-01 13:07:27,2018-11-03 12:14:52,2018-07-26 07:25:57,2019-01-19 03:35:48 -586,Lurlene,Feare,839-313-4455,Female,3,59,51,2018-08-26 04:27:58,2018-10-22 00:35:33,2018-06-26 19:50:51,2018-10-10 07:34:07 -587,Benjy,Mulvenna,623-742-2472,Male,3,63,37,2018-12-05 12:16:12,2018-06-01 06:27:24,2018-05-17 11:06:08,2018-11-03 18:34:32 -588,Odey,Burborough,705-824-5381,Male,7,35,7,2018-11-08 11:17:04,2018-10-02 17:39:13,2018-06-12 17:24:31,2018-11-16 00:36:52 -589,Marin,Piddletown,544-353-3265,Female,6,65,12,2018-06-05 02:00:30,2018-04-15 22:13:49,2018-10-25 08:48:07,2018-02-10 21:14:37 -590,Cyrille,holmes,735-579-6221,Male,7,40,75,2018-04-16 22:04:54,2018-04-25 22:55:07,2018-07-02 18:15:05,2018-08-10 21:27:54 -591,Maurice,Rains,484-638-1467,Male,5,73,91,2018-09-29 20:25:42,2018-05-09 00:14:24,2018-10-31 20:25:12,2018-10-07 19:50:59 -592,Caddric,Styant,859-759-9605,Male,6,10,38,2018-06-20 20:21:02,2018-12-09 17:47:12,2019-01-09 04:06:46,2018-07-19 05:01:01 -593,Vittorio,Straffon,643-403-5013,Male,3,46,7,2018-05-21 05:19:11,2018-12-06 16:33:18,2018-07-03 02:13:34,2018-11-03 12:50:20 -594,Filippo,Adamiak,414-171-7965,Male,5,13,70,2018-03-31 10:48:08,2018-07-07 00:41:10,2018-04-29 13:12:05,2018-08-12 07:32:33 -595,Abran,Blanning,940-243-9117,Male,6,88,72,2018-06-16 02:58:35,2018-08-17 14:00:04,2018-12-23 23:58:31,2018-04-15 17:28:52 -596,Ewart,Van Der Weedenburg,712-866-8225,Male,1,35,99,2018-12-03 12:43:02,2018-08-22 00:51:23,2018-06-03 09:07:10,2018-02-26 12:18:48 -597,Charmion,Toffoletto,139-517-9898,Female,2,60,33,2018-11-24 14:11:52,2018-10-26 03:35:48,2018-12-18 20:13:45,2018-09-23 22:05:26 -598,Marcellus,Casserly,253-327-1311,Male,3,41,81,2018-10-18 22:38:49,2018-03-13 20:31:39,2018-07-25 06:23:51,2018-06-05 20:55:02 -599,Bryant,Woonton,888-556-3681,Male,7,81,99,2018-02-28 09:31:55,2018-05-01 06:19:53,2019-01-09 14:08:26,2018-10-29 15:33:42 -600,Annnora,Beswick,518-587-0261,Female,6,56,22,2018-08-12 21:49:43,2019-01-08 19:34:20,2018-02-14 10:14:40,2018-08-01 03:40:27 -601,Donovan,Stenner,407-562-5695,Male,1,80,76,2018-08-31 07:45:11,2018-12-01 06:25:41,2018-02-28 03:57:11,2018-10-17 16:19:27 -602,Northrup,Limprecht,463-752-6075,Male,5,65,42,2018-11-03 02:27:29,2018-05-05 19:23:48,2018-02-18 06:54:36,2018-08-13 18:47:59 -603,Linoel,Havenhand,896-715-3769,Male,7,7,25,2018-05-10 18:45:39,2018-01-27 18:35:14,2018-06-14 18:17:37,2018-03-26 21:54:40 -604,Gerrilee,Morant,914-846-5569,Female,4,45,66,2018-02-17 20:40:10,2018-01-31 19:47:44,2018-10-09 22:28:47,2018-10-27 15:15:40 -605,Giralda,Daine,952-600-0863,Female,4,28,60,2018-06-15 19:09:55,2018-04-30 04:40:26,2018-09-14 06:48:06,2018-02-10 19:05:33 -606,Joela,Rand,808-932-6875,Female,1,27,3,2018-08-16 15:12:40,2018-09-27 15:12:49,2018-05-27 05:51:56,2018-04-13 14:52:35 -607,Obidiah,Beecham,324-361-0116,Male,7,72,18,2018-10-28 13:32:50,2018-06-20 18:58:47,2018-11-02 11:51:44,2018-03-11 23:29:03 -608,Karlik,Witherington,317-493-1871,Male,4,86,11,2019-01-20 03:58:33,2018-07-21 12:26:45,2018-08-23 20:09:48,2018-11-13 10:55:23 -609,Andras,Buttler,645-159-2747,Male,4,66,45,2018-05-19 10:32:36,2018-12-15 13:10:33,2018-01-31 23:04:41,2019-01-04 22:38:54 -610,Kevan,MacCorkell,902-102-9241,Male,5,35,56,2018-02-09 15:51:27,2018-07-17 04:54:50,2018-01-23 13:03:51,2018-07-12 19:59:05 -611,Dena,Welbelove,824-828-1515,Female,7,30,100,2018-03-13 11:53:11,2018-07-30 19:53:24,2019-01-12 19:12:36,2018-10-23 22:10:25 -612,Susette,Spurman,489-770-6265,Female,5,20,53,2018-05-08 12:17:52,2018-06-18 00:15:28,2018-04-14 14:12:49,2018-09-21 10:34:01 -613,Lisabeth,Clarycott,631-189-3198,Female,7,98,3,2018-08-30 00:26:48,2018-03-16 13:08:16,2018-10-12 07:44:50,2018-10-14 13:12:31 -614,Sheryl,Cicchinelli,508-453-8265,Female,6,77,4,2019-01-04 08:57:07,2018-07-27 00:56:42,2018-07-07 09:59:19,2018-08-03 11:54:06 -615,Milly,Harston,959-484-0888,Female,3,13,88,2018-05-02 06:02:08,2018-05-11 09:34:20,2019-01-11 22:42:26,2018-02-06 01:43:05 -616,Avery,Cant,144-536-3636,Male,5,59,83,2018-04-28 04:40:20,2018-02-20 10:21:26,2018-01-23 14:16:23,2018-06-13 17:25:06 -617,Odelle,Hauxley,311-843-6729,Female,2,15,33,2018-06-09 20:51:56,2018-03-22 15:09:29,2019-01-07 22:47:04,2018-10-30 05:38:26 -618,Symon,Dewi,944-566-4724,Male,6,79,26,2018-10-23 03:09:57,2018-04-20 15:52:10,2018-07-23 05:16:26,2018-09-05 13:15:24 -619,Nora,Ingerson,644-377-6341,Female,7,58,74,2018-12-31 01:35:50,2018-03-08 16:01:54,2018-04-02 13:25:27,2018-08-14 07:54:24 -620,Mariam,Ceschelli,722-520-3029,Female,5,65,57,2018-08-17 21:29:16,2018-11-14 18:13:13,2018-11-22 04:05:56,2018-03-25 21:13:21 -621,Guglielma,Fearey,399-683-0328,Female,2,48,46,2018-12-01 22:21:56,2018-05-05 09:53:28,2018-04-01 03:22:30,2018-10-31 05:13:13 -622,Putnem,Glanton,730-351-4499,Male,3,47,40,2018-05-06 05:22:19,2018-08-03 21:56:51,2018-07-27 03:42:36,2018-09-26 03:10:38 -623,Blancha,Penney,585-209-3640,Female,4,92,1,2018-04-24 13:18:47,2018-06-21 21:42:31,2018-03-11 01:50:30,2018-08-17 20:04:54 -624,Zacherie,Manoelli,211-774-0854,Male,7,41,38,2018-09-29 10:25:00,2018-11-03 11:49:35,2018-06-04 21:41:44,2018-10-24 16:29:50 -625,Seymour,Murphey,840-189-1695,Male,7,27,18,2018-11-22 02:51:55,2018-11-13 09:09:33,2018-04-26 15:24:33,2018-06-10 09:01:11 -626,Kiele,Potte,807-707-7776,Female,5,50,79,2018-12-10 09:07:14,2018-02-09 02:17:04,2018-12-02 09:39:41,2018-06-25 03:58:33 -627,Pascale,Keat,699-216-9743,Male,6,20,78,2018-11-23 01:30:15,2018-04-11 09:12:08,2018-03-14 20:14:59,2018-02-13 23:24:16 -628,Krisha,Sails,162-533-7679,Male,5,91,52,2019-01-17 01:56:16,2018-02-15 14:18:56,2018-03-05 23:19:21,2018-02-24 11:00:50 -629,Justen,McFeat,266-387-8084,Male,4,45,19,2018-10-17 20:09:40,2018-12-29 10:26:10,2018-07-21 12:46:49,2018-02-12 09:50:24 -630,Daloris,Adamson,173-669-4723,Female,4,46,42,2018-02-02 14:26:53,2018-08-15 00:31:20,2018-10-28 08:17:42,2018-04-21 16:28:19 -631,Saleem,Cawood,885-138-1413,Male,6,96,11,2018-09-04 09:51:41,2018-06-12 17:37:20,2018-12-09 22:22:56,2018-11-28 01:06:26 -632,Yettie,Glynn,672-547-0019,Female,3,84,66,2018-11-13 23:39:10,2018-07-14 16:14:12,2018-09-21 13:43:43,2018-09-29 15:57:10 -633,Waite,Smalls,320-394-9058,Male,4,2,55,2018-12-17 16:32:29,2018-11-15 01:45:06,2018-03-17 23:34:19,2018-03-06 15:12:35 -634,Tomkin,Adam,674-394-3276,Male,3,5,48,2018-02-07 03:48:38,2018-07-13 14:23:03,2018-06-02 14:48:09,2018-07-13 06:23:14 -635,Dilly,Strotone,507-532-7349,Male,2,63,15,2018-10-18 04:02:56,2018-08-29 04:49:57,2018-12-04 03:03:45,2018-10-13 05:54:24 -636,Townsend,Eytel,577-285-3662,Male,2,28,15,2018-06-01 12:29:01,2018-09-17 04:48:03,2018-08-12 21:57:59,2018-02-19 20:48:01 -637,Aurel,Taleworth,826-459-6823,Female,4,21,100,2018-08-04 08:00:57,2018-09-17 17:45:32,2018-10-01 19:40:32,2018-09-12 06:23:27 -638,Barnabe,Eldredge,303-934-8908,Male,1,96,66,2018-11-25 12:08:25,2018-09-28 04:15:54,2018-06-11 18:54:23,2018-01-29 01:27:18 -639,Brnaby,Kwietek,319-338-0342,Male,1,99,21,2018-07-11 05:00:49,2018-09-07 18:54:24,2019-01-02 06:20:42,2018-07-12 08:08:28 -640,Thea,Beamont,123-463-1082,Female,4,95,46,2018-03-04 16:30:12,2018-09-20 03:40:11,2018-07-15 14:34:10,2018-08-29 13:50:42 -641,Moyra,MacAne,973-363-3000,Female,3,50,66,2018-06-15 02:19:51,2018-07-18 23:41:04,2018-11-11 08:19:50,2018-07-28 23:40:30 -642,Luce,Hanmer,800-595-2765,Male,4,71,68,2018-12-29 07:24:16,2018-03-30 23:25:56,2018-12-20 17:22:17,2018-07-01 23:50:17 -643,Clement,Gobert,746-653-6801,Male,2,29,39,2018-03-16 20:33:17,2018-12-07 02:34:52,2018-12-12 16:45:55,2018-12-20 02:30:28 -644,Dalenna,Kingsnorth,366-634-1391,Female,5,42,29,2018-04-19 19:41:25,2018-11-24 02:02:50,2018-03-31 05:36:32,2018-07-16 23:22:03 -645,Gigi,MacGilrewy,807-983-4035,Female,2,5,59,2018-11-13 14:20:34,2018-09-08 20:54:02,2018-09-05 14:11:49,2018-06-05 21:12:39 -646,Josi,De Vere,191-357-7492,Female,3,26,63,2018-11-16 05:10:17,2018-05-10 22:27:04,2018-05-04 18:15:10,2018-06-28 04:26:52 -647,Ripley,Pedrozzi,564-644-3142,Male,4,81,64,2018-05-06 05:04:31,2018-09-08 07:15:00,2018-11-12 01:23:19,2018-08-14 01:45:01 -648,Angelina,Henriques,513-742-8132,Female,1,4,93,2018-08-13 00:14:12,2018-03-20 21:24:41,2018-08-07 23:30:14,2018-11-23 00:03:11 -649,Anthia,Dandy,983-456-4556,Female,4,7,96,2018-05-12 17:03:46,2018-12-07 05:19:51,2018-11-20 12:22:28,2018-10-03 06:06:09 -650,Audry,Mourge,237-352-0739,Female,3,87,13,2018-01-25 21:10:18,2018-04-08 08:11:55,2018-01-26 17:58:05,2018-11-22 16:05:01 -651,Konstanze,Skocroft,383-376-4511,Female,5,53,15,2018-07-06 21:47:19,2018-07-21 19:51:01,2019-01-05 19:31:14,2018-12-02 06:51:10 -652,Koo,Arington,553-175-9464,Female,4,51,72,2018-03-12 21:13:34,2018-01-29 22:50:56,2018-07-28 03:59:46,2018-09-08 20:40:26 -653,Mimi,Novakovic,282-495-5519,Female,2,13,7,2019-01-18 17:51:56,2018-03-21 21:03:27,2018-11-26 23:09:59,2018-02-15 16:11:04 -654,Aldus,Aguirrezabal,289-348-2177,Male,2,27,59,2018-11-06 12:55:08,2018-03-03 18:13:31,2018-04-12 18:22:35,2018-08-22 21:43:49 -655,Sullivan,Kelmere,595-312-2528,Male,1,42,45,2018-12-01 16:35:57,2018-10-25 18:48:22,2018-09-07 00:15:27,2018-04-27 11:34:49 -656,Taite,Ruffli,824-778-7852,Male,4,22,46,2018-07-28 22:54:17,2018-10-09 20:45:57,2018-08-03 04:38:39,2018-11-26 15:09:49 -657,Rosene,Missen,922-494-6731,Female,7,91,26,2018-08-17 20:06:33,2018-11-02 02:58:57,2018-03-05 00:03:11,2018-05-31 23:55:38 -658,Ty,Fucher,639-989-4144,Male,3,68,100,2018-07-22 01:36:24,2018-03-08 21:12:38,2018-05-04 21:30:03,2018-09-06 22:32:37 -659,Heddi,Assel,246-263-2031,Female,6,39,92,2018-02-15 08:32:02,2018-02-26 03:11:18,2018-01-27 11:33:06,2018-08-29 02:37:29 -660,Boonie,Djorvic,425-328-7219,Male,7,49,6,2018-02-11 23:21:23,2018-03-07 04:45:35,2019-01-16 02:27:45,2018-10-14 03:27:02 -661,Aurie,Esgate,216-596-1681,Female,4,44,39,2019-01-07 13:40:58,2018-09-29 18:40:04,2018-04-15 01:33:28,2018-11-16 00:59:28 -662,Dana,Edginton,762-855-7796,Male,7,11,7,2018-10-22 11:13:58,2018-02-25 07:53:13,2018-10-26 14:30:34,2018-02-21 08:22:28 -663,Christiana,Haslock(e),322-905-9384,Female,7,66,50,2018-04-08 07:38:08,2018-05-11 05:11:14,2018-03-13 07:31:38,2018-03-24 02:07:40 -664,Lelia,Kimmerling,462-373-6886,Female,2,22,47,2018-07-16 09:28:30,2018-01-31 12:00:37,2018-05-14 00:22:05,2018-04-02 06:04:19 -665,Kaleena,Ferrier,462-635-6827,Female,2,74,81,2018-06-05 11:09:52,2018-02-12 09:02:48,2018-09-11 19:00:25,2018-02-20 13:36:01 -666,Davon,Kroch,646-511-8893,Male,2,79,55,2018-08-11 12:22:33,2018-03-09 12:30:22,2018-10-04 12:31:33,2018-08-30 17:50:16 -667,Agathe,Kingwell,879-547-0641,Female,7,16,34,2018-06-12 18:22:16,2018-08-05 00:55:58,2018-12-27 12:31:25,2018-02-19 01:39:48 -668,Tami,Brum,925-535-6949,Female,6,13,16,2018-08-10 21:16:02,2018-07-10 10:42:55,2018-10-03 09:45:52,2018-09-02 08:04:13 -669,Meghan,Behan,666-973-3081,Female,2,37,72,2018-07-01 22:33:57,2018-12-23 00:46:46,2018-11-15 22:39:02,2018-02-15 12:20:24 -670,Elliott,Gumbley,891-324-8441,Male,3,100,20,2018-05-26 06:24:39,2018-08-24 00:11:20,2018-10-25 08:36:44,2018-03-14 08:39:54 -671,Roosevelt,Headan,845-354-1730,Male,5,3,90,2018-07-01 14:50:49,2018-09-15 12:12:40,2018-12-24 01:35:47,2018-09-20 01:17:08 -672,Judie,Cozins,719-163-5308,Female,6,64,26,2018-02-13 12:22:03,2018-11-17 08:43:37,2018-04-01 06:23:24,2018-09-21 04:32:48 -673,Zebulen,Bulger,201-223-1332,Male,5,98,53,2018-07-16 23:18:20,2018-05-29 12:17:27,2018-04-28 14:52:50,2018-06-12 16:22:23 -674,Lea,Fairpo,372-782-5016,Female,6,19,3,2018-09-03 14:58:22,2018-07-08 18:29:06,2018-05-16 18:23:32,2018-12-29 08:04:07 -675,Mayer,Demead,393-580-8088,Male,4,41,38,2018-09-26 07:35:23,2018-04-11 15:45:52,2018-03-27 15:23:59,2018-06-06 14:21:04 -676,Ana,Cannaway,492-510-5265,Female,7,61,68,2018-02-10 08:21:49,2019-01-17 12:57:29,2018-03-10 19:54:59,2018-05-05 03:55:19 -677,Cathrine,Featonby,618-545-3336,Female,2,13,20,2018-04-06 05:43:01,2018-08-08 21:16:04,2018-09-14 02:33:02,2018-02-21 21:27:00 -678,Wilt,Pitcher,482-827-8133,Male,3,100,4,2018-07-28 21:19:49,2018-05-26 09:01:20,2018-08-20 04:38:04,2018-12-20 10:33:58 -679,Mirabelle,Beric,266-468-3958,Female,5,22,72,2018-05-02 12:06:49,2018-04-08 13:34:02,2018-05-08 04:55:38,2018-04-08 07:43:46 -680,Kitti,Duell,600-603-0212,Female,6,63,11,2018-06-03 10:32:14,2018-02-28 16:15:11,2018-07-14 16:05:36,2018-12-09 20:55:23 -681,Pebrook,Tunuy,901-401-5075,Male,7,43,54,2018-05-03 21:20:23,2018-08-22 11:35:56,2019-01-16 05:29:13,2018-06-03 07:29:48 -682,Maryanna,Eayrs,722-426-6216,Female,1,44,84,2018-09-20 04:29:10,2018-03-25 00:25:02,2018-08-24 07:28:58,2019-01-03 12:51:01 -683,Obadias,Izzatt,379-850-7154,Male,6,6,27,2018-04-26 21:45:09,2018-02-05 01:27:51,2018-12-26 01:14:44,2018-08-29 23:20:18 -684,Cherye,Androletti,524-563-8173,Female,3,68,10,2018-04-21 19:56:00,2018-09-14 22:29:43,2018-12-29 20:14:49,2018-11-16 03:21:36 -685,Joachim,Dimitrescu,795-788-5797,Male,5,76,2,2018-12-11 21:33:57,2018-12-23 19:18:05,2018-11-25 10:00:13,2018-03-10 21:29:53 -686,Wynne,Heyward,438-352-0453,Female,2,24,17,2018-08-16 11:16:51,2018-07-01 06:49:35,2018-10-07 18:27:47,2018-12-09 16:04:47 -687,Renell,Ipwell,436-940-9778,Female,2,20,24,2018-11-20 12:06:05,2018-07-02 02:09:18,2018-09-08 02:49:34,2018-02-07 07:39:15 -688,Ricky,Alderson,299-400-6861,Male,6,41,97,2018-11-21 08:08:46,2018-08-15 09:54:31,2018-12-12 09:05:40,2018-11-13 16:44:40 -689,Rubi,Gail,300-475-1452,Female,4,37,26,2019-01-06 23:27:48,2018-11-12 10:44:21,2018-12-06 15:12:08,2018-03-19 12:15:14 -690,Sherill,Tallent,643-731-0806,Female,5,51,98,2018-10-30 15:13:26,2018-06-09 19:32:29,2018-02-06 16:40:35,2018-09-26 13:31:25 -691,Elia,Hairon,537-738-0445,Male,4,59,64,2018-06-18 11:14:46,2018-08-12 09:09:40,2018-03-22 09:13:44,2018-10-25 02:49:49 -692,Johny,Degoe,380-482-6021,Male,2,89,51,2018-12-18 10:28:50,2018-10-04 06:40:46,2018-05-17 13:11:00,2019-01-18 01:02:48 -693,Kirstin,Hopfer,520-920-5762,Female,7,7,29,2018-03-03 02:44:21,2018-07-08 01:31:26,2018-08-12 04:22:03,2018-10-07 12:47:55 -694,Addie,Hrycek,411-674-4016,Female,1,62,3,2018-08-02 04:43:18,2018-09-19 05:54:13,2018-09-30 17:33:04,2018-10-24 16:39:15 -695,Devinne,Dilrew,876-178-5135,Female,6,97,69,2018-01-22 00:39:19,2018-05-29 02:38:21,2018-10-17 03:17:47,2018-07-28 12:51:30 -696,Violet,Petren,352-136-0037,Female,3,20,80,2018-09-23 03:09:33,2018-05-22 01:24:08,2019-01-06 00:46:41,2018-04-13 04:27:36 -697,Inga,Cahalan,847-549-2394,Female,3,98,26,2018-03-24 12:37:49,2018-10-09 07:41:56,2019-01-07 22:18:43,2018-01-28 07:44:56 -698,Burg,Liepina,736-158-9051,Male,4,89,88,2018-02-04 05:58:15,2018-02-24 08:51:40,2018-12-01 18:20:15,2018-02-20 12:27:18 -699,Winnifred,Yakutin,165-178-2008,Female,1,74,93,2018-12-14 06:11:18,2018-12-23 02:09:43,2018-04-07 06:12:17,2018-08-16 08:12:28 -700,Boone,Walsom,432-415-6784,Male,3,91,63,2018-06-12 09:05:08,2018-09-21 04:24:21,2018-09-18 05:27:12,2018-09-10 10:46:37 -701,Alberto,Steadman,316-988-9996,Male,7,11,32,2019-01-13 23:25:22,2018-04-27 23:46:24,2018-12-07 20:28:14,2018-02-03 17:46:13 -702,Babbie,Ossulton,151-959-6676,Female,5,50,26,2018-08-25 20:54:00,2018-05-14 14:24:06,2019-01-14 14:14:51,2018-08-15 11:39:35 -703,Franni,Sparwell,411-855-1156,Female,6,95,65,2018-07-21 15:32:34,2018-07-03 10:42:20,2018-08-26 02:44:03,2018-04-13 05:52:48 -704,Carlos,MacNair,911-726-0315,Male,1,17,35,2018-12-05 14:25:42,2018-12-12 19:39:25,2018-04-29 02:34:46,2018-10-22 16:34:03 -705,Violetta,Crosbie,334-280-9073,Female,3,9,44,2018-01-30 22:36:27,2018-08-07 22:12:15,2018-11-27 09:47:02,2018-07-24 14:22:36 -706,Malanie,Perico,380-744-7181,Female,6,68,23,2019-01-03 09:08:46,2018-08-26 01:51:30,2018-12-02 23:44:58,2018-02-16 00:13:42 -707,Ivor,Bowcher,940-535-1313,Male,2,79,20,2018-09-05 08:48:25,2018-05-21 21:40:04,2018-05-02 19:33:24,2018-06-22 07:46:47 -708,Hyacinth,Trump,241-552-4852,Female,4,46,7,2018-02-27 17:57:22,2018-11-20 03:54:39,2018-10-27 00:44:50,2018-09-19 14:04:29 -709,Vittorio,Blincko,136-124-8825,Male,5,70,20,2018-12-17 01:45:05,2018-06-06 18:10:29,2018-12-01 18:11:21,2018-04-14 00:43:46 -710,Tadeas,Glendenning,676-274-2212,Male,3,70,6,2018-08-22 07:42:12,2018-07-12 17:41:15,2018-07-24 17:42:26,2018-12-27 05:34:05 -711,Sky,Flew,681-787-4952,Male,3,81,48,2018-11-13 09:16:39,2018-09-14 09:34:51,2018-09-23 01:44:43,2018-11-21 00:50:58 -712,Luise,Olivetti,707-121-6217,Female,4,68,4,2018-03-29 01:36:21,2018-05-06 13:38:59,2018-05-06 09:55:05,2018-02-04 21:27:46 -713,Drusy,Capinetti,432-896-1449,Female,5,94,80,2018-07-31 20:38:50,2018-11-28 22:41:39,2018-04-27 00:57:40,2018-08-30 16:16:05 -714,Miranda,Rissen,700-512-2672,Female,7,29,40,2018-03-15 22:30:44,2018-02-01 02:59:19,2018-11-25 08:02:09,2018-11-05 07:51:59 -715,Ario,Bashford,390-128-4254,Male,2,54,93,2018-06-14 08:22:43,2018-08-12 18:13:42,2018-11-28 21:40:32,2018-12-29 03:09:26 -716,Rochella,Shackesby,103-592-3468,Female,7,41,14,2018-02-12 09:44:28,2018-08-22 10:35:46,2019-01-09 02:25:18,2018-10-10 17:50:44 -717,Wes,Christofides,192-457-7659,Male,1,69,89,2018-05-29 07:31:48,2019-01-06 03:40:33,2018-02-04 22:20:47,2019-01-05 16:01:23 -718,Griselda,Lukes,232-886-4996,Female,2,96,24,2019-01-10 12:54:29,2019-01-16 20:13:57,2018-04-26 08:07:43,2018-10-11 15:19:29 -719,Dredi,Cooksey,432-670-0783,Female,2,24,32,2018-02-28 00:00:07,2018-06-20 03:18:14,2018-07-21 09:03:11,2018-07-06 03:35:06 -720,Coleman,Trudgian,273-535-1414,Male,4,97,47,2018-04-25 23:41:09,2018-03-11 00:03:13,2018-06-03 13:44:14,2018-08-08 09:07:58 -721,Averill,Shilstone,947-108-0865,Male,7,1,64,2018-08-18 22:21:07,2018-04-12 03:24:47,2018-03-10 08:58:27,2018-08-03 14:04:03 -722,Carmen,Syder,954-822-0919,Female,2,47,75,2018-10-09 09:52:34,2018-11-21 01:16:40,2018-02-12 03:27:35,2018-08-12 12:44:55 -723,Morgan,Leband,547-933-1630,Female,5,39,97,2018-03-25 07:19:57,2018-03-28 20:22:12,2018-09-05 13:29:46,2018-10-12 09:04:17 -724,Milzie,Fearnley,589-230-2628,Female,1,44,13,2018-05-17 23:12:31,2018-07-29 21:43:28,2018-07-06 23:27:59,2018-09-14 01:45:16 -725,Deb,Marjot,495-276-5931,Female,2,27,81,2018-09-28 15:27:35,2018-02-05 23:31:12,2018-07-29 04:18:34,2018-03-08 09:45:23 -726,Shayne,Artinstall,628-997-5039,Male,2,23,20,2018-11-19 12:44:15,2018-05-30 23:05:12,2018-11-23 10:18:23,2018-06-08 14:18:23 -727,Annabal,Standbridge,226-314-1568,Female,5,16,5,2018-08-11 00:40:31,2018-12-20 14:06:36,2018-04-15 04:33:53,2018-11-09 16:42:45 -728,Sheffield,Crielly,360-797-0933,Male,7,57,90,2018-03-08 03:32:17,2018-11-07 06:12:46,2019-01-12 22:10:52,2019-01-02 03:16:09 -729,Antonius,Delagua,336-343-1380,Male,2,64,60,2018-10-14 22:56:26,2018-11-13 00:50:03,2018-07-02 11:23:06,2018-08-09 09:29:32 -730,Brana,Cannell,157-563-3935,Female,2,74,73,2019-01-19 15:41:16,2018-04-20 09:34:06,2018-08-02 12:28:32,2018-02-21 06:29:31 -731,Bartram,Praundlin,631-372-3479,Male,2,35,7,2018-10-03 02:00:10,2018-07-31 21:29:22,2019-01-10 21:43:54,2018-08-28 13:29:28 -732,Anthiathia,Goodwins,664-616-3575,Female,7,76,19,2018-04-26 19:57:15,2018-10-28 17:07:05,2018-02-21 16:38:28,2018-04-18 17:58:31 -733,Deborah,Ekell,577-861-9112,Female,5,74,43,2018-10-19 06:10:04,2018-03-12 03:47:48,2018-05-17 13:04:37,2018-02-09 05:48:05 -734,Lauri,Arunowicz,862-427-5257,Female,4,58,81,2018-07-29 04:16:13,2018-04-23 19:30:17,2018-03-19 21:30:18,2018-11-18 20:46:33 -735,Fowler,Markus,496-831-3082,Male,7,18,52,2018-01-26 22:36:43,2019-01-14 00:15:25,2018-03-18 05:45:56,2018-02-27 16:55:19 -736,Klara,Ramme,103-225-9086,Female,7,28,67,2018-05-21 17:32:08,2018-10-05 08:11:16,2018-06-25 15:05:21,2018-03-13 14:44:42 -737,Melisenda,Chitham,158-699-0591,Female,2,49,88,2018-04-16 02:24:00,2018-10-27 14:52:15,2018-12-31 05:39:31,2018-12-09 09:15:25 -738,Hale,Layborn,106-961-8551,Male,3,66,90,2018-04-22 19:39:27,2018-08-12 19:37:50,2018-08-17 10:37:06,2018-09-14 15:17:48 -739,Ferdie,Stubbeley,686-279-8217,Male,7,62,96,2018-09-25 03:29:05,2018-06-27 23:31:12,2018-07-21 18:49:24,2018-06-19 05:08:00 -740,Licha,O' Kelleher,463-395-9023,Female,6,75,16,2018-07-05 08:29:21,2018-09-13 21:32:41,2018-08-26 17:50:16,2018-05-22 11:30:48 -741,Gualterio,Kernar,123-900-7702,Male,2,32,18,2018-12-30 04:11:35,2018-04-15 10:32:33,2018-06-21 01:01:16,2018-11-15 03:34:48 -742,Harley,Lyokhin,664-282-7716,Male,1,42,45,2018-07-26 12:07:21,2018-02-09 02:23:37,2018-05-10 13:39:44,2018-11-25 04:15:16 -743,Kylila,Hukin,726-438-0889,Female,2,2,74,2019-01-02 09:08:44,2018-04-07 07:18:19,2018-04-19 16:12:40,2018-03-03 19:00:47 -744,Natividad,Dahlbom,744-480-5437,Female,5,82,39,2018-12-30 01:10:05,2018-08-01 07:16:39,2018-05-29 02:44:28,2018-11-08 15:02:54 -745,Virgina,Couzens,947-544-5389,Female,6,14,38,2018-11-19 23:03:21,2018-11-21 13:32:21,2018-03-29 02:30:25,2018-12-31 17:15:49 -746,Peyter,Diano,292-294-3875,Male,2,23,76,2018-12-22 18:12:13,2018-09-23 11:29:07,2018-07-12 06:09:06,2018-07-28 01:53:40 -747,Jayme,O'Curneen,225-447-3103,Male,3,10,84,2018-06-20 10:29:48,2018-08-12 10:14:12,2018-04-28 06:15:40,2018-07-19 08:52:24 -748,Frederik,Wilkisson,963-312-1892,Male,3,4,18,2018-09-11 01:05:52,2018-05-17 07:03:54,2018-09-07 08:19:47,2018-12-27 05:51:37 -749,Yankee,Harrower,918-854-5590,Male,7,14,88,2019-01-12 12:01:21,2018-08-24 08:15:58,2018-06-19 00:06:07,2018-06-19 07:16:40 -750,Tamas,MacRinn,856-289-3684,Male,6,83,91,2018-05-18 15:58:10,2018-06-09 14:45:50,2018-06-16 17:21:20,2018-12-18 02:23:35 -751,Valentin,Rawlings,663-758-9646,Male,4,16,34,2018-06-27 02:03:36,2018-12-10 04:32:16,2018-07-07 05:22:18,2018-02-03 06:54:36 -752,Colver,Yarr,382-717-8711,Male,5,23,10,2018-05-13 09:06:22,2018-04-06 13:41:41,2018-05-07 22:03:59,2018-11-12 22:30:08 -753,Alisa,Gaynesford,417-789-3077,Female,2,87,12,2018-07-16 18:03:56,2018-02-06 07:27:34,2018-07-12 08:51:47,2018-02-22 19:25:29 -754,Xavier,Cornwell,777-401-4183,Male,7,12,13,2018-12-03 01:19:40,2018-05-30 23:16:32,2018-10-01 21:33:13,2018-04-13 23:28:08 -755,Hy,Raftery,563-495-4017,Male,7,54,93,2018-03-25 23:10:24,2018-11-20 07:01:06,2018-03-27 13:09:16,2018-08-03 19:07:10 -756,Holt,Rosenfeld,962-871-1674,Male,2,43,35,2018-08-07 04:15:12,2018-05-21 13:42:27,2018-11-13 19:28:52,2018-03-27 10:14:19 -757,Zola,Andreopolos,543-481-8409,Female,4,31,62,2018-02-08 17:26:50,2018-12-12 15:18:24,2018-02-22 22:58:13,2019-01-02 05:55:39 -758,Letty,Scotting,546-656-5808,Female,5,15,94,2018-10-21 18:22:43,2018-05-26 22:09:39,2018-08-04 15:48:15,2018-08-28 06:14:32 -759,Celina,Lauchlan,202-835-6732,Female,7,47,9,2018-02-26 21:58:16,2019-01-10 01:22:46,2018-11-03 06:10:35,2018-04-21 11:00:49 -760,Drusy,Izakov,129-552-5886,Female,1,45,2,2018-10-11 13:12:08,2018-06-26 11:16:28,2018-08-24 23:58:00,2018-09-09 05:46:23 -761,Shana,Ference,915-610-3990,Female,3,1,7,2018-10-31 18:47:12,2018-09-13 14:33:49,2018-10-02 08:57:46,2018-02-18 19:30:28 -762,Colin,Broy,868-631-8529,Male,2,22,32,2018-05-23 19:06:02,2018-09-08 07:49:35,2018-12-13 21:44:07,2018-06-25 07:15:53 -763,Farlay,Cromett,640-335-8081,Male,7,34,25,2018-06-29 00:34:53,2018-12-08 12:49:01,2018-12-03 13:22:54,2018-06-24 16:33:04 -764,Leandra,Hamberstone,786-332-2588,Female,2,37,90,2018-12-22 15:35:04,2018-02-04 16:23:41,2018-01-28 07:51:51,2018-06-01 00:25:34 -765,Gan,McCahey,450-198-7472,Male,2,79,7,2018-06-26 07:22:06,2018-09-27 09:42:20,2018-03-13 20:28:52,2018-02-10 02:05:39 -766,Brose,Gane,302-470-1094,Male,7,27,25,2018-11-05 10:16:11,2018-12-27 12:00:35,2018-12-13 06:00:05,2018-08-30 01:03:46 -767,Mabel,Nurdin,417-183-7374,Female,1,73,62,2018-12-09 01:11:47,2018-06-09 12:03:13,2018-11-30 04:52:49,2018-04-24 11:08:53 -768,Melinda,Belliard,277-126-4396,Female,6,39,83,2018-07-13 11:17:51,2018-08-04 10:46:43,2018-11-19 23:27:57,2018-02-19 10:08:24 -769,Percy,Yakolev,433-703-6347,Male,4,78,23,2018-11-02 23:32:50,2018-12-19 16:21:10,2018-02-17 21:43:15,2018-12-09 00:57:58 -770,Portia,Legonidec,761-180-7070,Female,6,27,1,2018-11-01 18:06:54,2018-05-16 10:56:05,2018-08-06 20:45:16,2018-08-14 23:11:03 -771,Harry,Lapley,950-309-5667,Male,5,8,58,2018-03-01 15:09:46,2018-05-13 05:24:49,2018-03-22 16:01:05,2018-08-18 02:05:37 -772,Cort,Gathwaite,964-902-3053,Male,5,33,89,2018-08-18 20:12:14,2018-01-27 16:39:37,2018-12-26 22:46:04,2018-02-16 22:31:58 -773,Moselle,Davidsson,813-238-6494,Female,4,13,60,2019-01-10 17:47:31,2018-11-04 08:31:17,2018-04-30 12:09:52,2018-04-14 19:47:23 -774,Avril,Britton,340-286-1678,Female,3,4,16,2018-03-18 00:19:38,2018-12-29 06:21:49,2019-01-03 02:03:40,2018-11-29 12:05:59 -775,Linn,Confait,176-807-2635,Female,6,18,70,2018-09-18 15:11:21,2018-05-02 18:32:49,2018-03-25 13:46:21,2018-10-06 04:29:26 -776,Joletta,Fyldes,547-358-7132,Female,3,92,6,2019-01-07 18:53:22,2018-09-07 21:09:08,2018-10-22 08:38:19,2018-07-08 07:01:37 -777,Alvira,Donnersberg,712-756-5926,Female,1,20,77,2018-06-09 12:41:30,2018-12-29 01:15:22,2018-02-11 19:44:50,2018-02-21 21:33:12 -778,Kirbee,Sherer,434-167-9643,Female,4,84,40,2018-10-18 16:54:05,2018-04-02 11:16:17,2018-02-26 17:45:53,2018-10-21 05:24:45 -779,Griffy,Guitton,326-132-8573,Male,4,60,19,2018-06-22 17:59:44,2018-09-11 16:22:32,2018-11-10 19:43:30,2018-02-06 10:06:41 -780,Emmott,Allitt,969-852-2661,Male,2,48,37,2018-04-24 21:17:55,2018-11-01 06:07:42,2018-07-30 22:56:18,2018-11-13 22:12:50 -781,Tailor,Dalman,521-811-9925,Male,5,60,72,2018-12-14 09:37:55,2018-12-26 17:43:11,2018-12-10 03:38:52,2018-04-07 11:21:07 -782,Brennen,Vasilechko,176-109-0551,Male,6,90,55,2018-08-31 12:29:00,2018-05-23 03:06:41,2018-10-10 17:44:50,2018-10-21 00:47:28 -783,Dotty,MacCallam,161-881-1371,Female,1,56,3,2018-03-01 02:18:19,2019-01-06 18:00:59,2018-04-28 10:26:11,2018-02-05 06:43:37 -784,Jedidiah,Guerin,645-152-7671,Male,5,56,83,2018-04-02 15:07:20,2018-08-24 12:42:12,2018-12-21 09:17:44,2018-10-06 00:19:03 -785,Hannie,Danes,716-637-6821,Female,5,40,18,2019-01-08 07:08:18,2019-01-05 20:40:19,2019-01-16 12:16:28,2018-03-23 12:28:41 -786,Galen,Scogin,453-714-4492,Male,6,38,18,2018-10-27 06:54:20,2018-06-19 09:26:07,2019-01-10 20:55:20,2018-10-18 17:04:44 -787,Aleta,Melonby,207-524-3356,Female,3,98,3,2018-04-04 12:13:59,2018-06-06 11:50:34,2018-05-05 17:38:56,2018-03-11 12:56:42 -788,Adlai,Mauchlen,601-977-7616,Male,7,88,64,2018-03-24 04:33:36,2018-03-07 16:46:25,2018-03-16 19:25:21,2018-07-20 14:23:29 -789,Amelie,Le Barre,576-950-1963,Female,5,28,53,2018-08-10 15:52:25,2018-05-07 07:19:32,2018-12-21 21:24:49,2018-07-21 01:11:54 -790,Rodrique,Lestor,723-918-4771,Male,4,26,72,2018-08-29 10:37:42,2018-11-16 09:49:01,2018-08-31 05:08:59,2018-12-18 10:17:32 -791,Gifford,Challoner,411-352-9364,Male,5,63,18,2018-10-16 12:33:24,2018-11-24 23:28:34,2018-05-29 22:33:36,2018-11-06 07:45:09 -792,Dorene,Pogosian,391-363-6103,Female,4,74,78,2018-04-26 20:52:42,2018-08-02 21:57:23,2018-04-29 21:18:02,2018-02-13 20:06:09 -793,Lynnell,De Filippi,418-713-4087,Female,7,78,47,2018-12-03 11:11:47,2019-01-05 12:23:37,2018-05-05 19:10:42,2018-04-22 16:11:38 -794,Tod,Willicott,354-257-4541,Male,5,34,18,2018-07-19 20:11:25,2018-08-12 01:02:55,2018-08-05 23:52:34,2018-02-15 00:20:31 -795,Myrlene,Wornham,331-165-6672,Female,7,51,75,2018-11-24 15:52:43,2018-07-01 06:12:47,2018-08-08 19:45:02,2018-11-19 14:51:56 -796,Sibyl,Burnsyde,981-826-0517,Female,2,24,2,2018-11-01 05:15:20,2018-10-15 22:30:33,2018-05-27 21:38:42,2018-05-08 15:34:52 -797,Barron,Hanrott,700-573-3103,Male,6,81,99,2018-08-12 21:14:38,2018-03-09 17:36:14,2018-06-03 16:23:47,2018-10-13 22:34:58 -798,Marylee,Hunnawill,501-536-2494,Female,7,30,33,2018-10-19 01:54:52,2018-04-12 03:02:28,2018-09-12 02:31:37,2018-06-14 10:58:08 -799,Chip,Hunnaball,249-377-3740,Male,3,98,59,2018-04-25 10:02:32,2019-01-18 16:00:40,2018-02-14 02:06:39,2018-06-17 23:32:24 -800,Major,Milsap,444-230-6774,Male,7,20,23,2018-03-11 15:00:30,2018-01-24 21:48:22,2018-12-27 13:31:21,2018-08-10 23:29:32 -801,Ashli,Romain,886-453-6140,Female,6,12,19,2018-02-24 23:38:53,2018-05-01 04:29:06,2018-06-03 17:41:53,2018-04-21 00:29:25 -802,Keeley,Frankom,894-599-8867,Female,3,30,4,2019-01-05 18:11:47,2018-03-25 21:31:27,2018-05-26 03:52:58,2018-10-23 16:17:28 -803,Curcio,Widmoor,934-987-4248,Male,5,23,84,2018-03-31 07:42:11,2018-10-25 03:00:08,2018-10-18 23:14:42,2018-05-07 19:58:59 -804,Crawford,Ballston,771-623-5016,Male,5,24,48,2018-12-27 07:13:13,2019-01-09 10:21:22,2018-05-20 08:49:26,2018-09-16 08:46:49 -805,Templeton,Snibson,650-275-2922,Male,3,55,83,2018-12-04 05:22:30,2018-09-29 21:23:56,2018-03-08 17:58:24,2018-08-15 02:38:52 -806,Gail,Peachment,906-123-1774,Male,4,59,13,2018-09-21 07:44:03,2018-08-02 22:34:51,2018-03-08 07:11:39,2018-08-25 15:39:59 -807,Adriano,Escale,888-817-1180,Male,3,92,78,2018-07-24 16:32:20,2018-02-22 12:50:50,2018-06-26 12:34:44,2018-06-06 08:04:35 -808,Trista,Tudgay,340-171-5505,Female,5,44,62,2018-09-04 12:09:41,2018-01-31 01:51:09,2018-09-13 08:38:11,2018-06-06 05:49:50 -809,Angie,Carradice,507-239-1908,Female,1,12,69,2018-08-13 18:36:13,2018-11-23 03:57:42,2018-06-17 07:44:13,2018-12-09 16:37:23 -810,Maureen,Perllman,116-299-8383,Female,1,91,1,2018-04-10 06:12:02,2018-08-02 04:31:50,2018-06-18 00:58:20,2018-10-12 02:31:31 -811,Renaud,Roylance,267-492-3743,Male,3,36,85,2018-02-05 00:59:50,2018-11-26 02:06:43,2018-11-16 00:25:18,2018-02-02 08:38:37 -812,Dasi,Rhucroft,505-753-6245,Female,4,96,84,2018-11-10 18:36:26,2018-07-17 05:54:10,2018-07-12 13:34:58,2018-11-10 01:57:49 -813,Arlee,Gerdts,220-186-9711,Female,6,76,30,2018-12-26 11:24:38,2018-11-21 22:09:49,2018-04-16 14:09:09,2018-05-27 06:24:32 -814,Darrel,Maseres,540-324-4576,Male,6,20,52,2018-01-25 13:38:00,2019-01-11 23:26:49,2018-07-10 03:23:20,2018-06-27 20:41:34 -815,Merle,Haggie,867-109-5010,Male,5,96,73,2018-05-11 09:41:28,2018-02-26 23:39:01,2019-01-18 06:20:26,2018-11-24 20:35:34 -816,Jordanna,Slocket,561-552-2274,Female,3,64,28,2018-06-05 00:07:31,2018-10-24 18:30:56,2018-04-11 09:26:10,2018-07-17 15:09:53 -817,Rosa,Naulty,104-742-5724,Female,1,49,36,2018-07-25 05:49:28,2018-12-11 01:12:50,2018-04-02 22:12:09,2019-01-03 01:54:51 -818,Abbott,Nenci,465-121-4813,Male,3,79,57,2018-11-14 21:12:41,2018-03-22 04:16:18,2018-08-26 18:31:33,2018-05-16 10:32:25 -819,Edsel,Brockley,602-592-8501,Male,1,30,96,2018-01-21 00:58:41,2018-12-18 18:52:15,2018-03-18 23:16:05,2018-11-22 00:32:00 -820,Rickie,Tace,237-311-6775,Female,4,14,43,2018-07-28 16:49:11,2018-12-14 07:30:09,2018-02-18 22:51:29,2018-06-05 16:20:34 -821,Shaun,Stagg,356-435-7464,Female,7,54,35,2018-09-08 08:01:19,2018-03-09 16:11:16,2019-01-16 17:00:44,2018-11-30 14:34:15 -822,Alfred,Durden,512-204-4387,Male,2,79,46,2018-12-31 13:42:16,2018-05-24 21:54:26,2018-07-10 23:33:53,2018-08-10 04:33:54 -823,Christoffer,Bolderstone,868-441-3575,Male,6,4,30,2018-11-03 00:46:09,2018-04-30 04:41:20,2018-07-26 23:17:02,2018-04-27 19:17:50 -824,Ellette,Robard,806-623-1247,Female,2,59,70,2018-01-31 22:31:04,2018-01-28 04:26:39,2018-06-10 10:50:30,2018-11-01 17:27:42 -825,Loren,Mitrovic,840-960-0930,Male,7,27,31,2018-11-09 15:53:11,2018-03-25 02:53:57,2018-12-15 15:59:47,2018-06-20 19:00:48 -826,Leigh,Beebee,483-570-2017,Male,5,56,99,2018-03-27 09:56:26,2018-09-05 03:40:42,2018-12-13 03:28:25,2018-11-23 13:45:15 -827,Debby,Beldham,686-330-6591,Female,5,65,17,2018-08-01 18:59:48,2018-03-24 14:20:35,2019-01-10 21:11:42,2018-12-19 08:48:47 -828,Barron,Lowell,115-742-2050,Male,5,85,65,2018-03-03 04:32:02,2018-04-24 11:36:33,2018-09-15 15:08:52,2018-06-25 22:46:54 -829,Randi,Skydall,223-820-2793,Male,2,86,47,2018-07-20 00:15:51,2018-06-26 06:23:43,2018-12-28 12:30:07,2018-08-25 21:27:50 -830,Isabel,Roggerone,927-569-8210,Female,4,85,41,2018-09-23 13:54:09,2018-03-09 05:31:36,2018-06-11 18:42:42,2018-04-13 18:03:27 -831,Alvan,Geake,401-432-6471,Male,5,71,66,2018-03-29 20:49:43,2018-04-25 14:10:14,2018-07-24 01:39:45,2018-12-24 09:39:46 -832,Sophey,Jeandel,338-361-7635,Female,6,60,18,2018-08-05 04:29:15,2018-09-21 05:26:30,2018-06-08 07:30:41,2018-12-27 19:45:07 -833,Howie,Maxsted,197-553-3905,Male,5,94,69,2018-08-25 23:10:38,2019-01-20 02:12:00,2019-01-15 20:11:44,2018-02-13 17:46:32 -834,Padraig,Torr,529-469-0039,Male,1,62,17,2018-03-14 04:21:56,2018-06-08 14:24:59,2018-10-08 09:31:56,2018-08-30 02:59:15 -835,Shirl,Jeratt,713-937-2841,Female,2,18,89,2018-09-25 03:56:45,2018-07-17 02:54:21,2019-01-08 21:13:42,2018-02-20 17:16:17 -836,Durward,Kermott,625-654-9223,Male,6,67,25,2018-02-14 15:04:10,2018-03-23 06:42:12,2018-09-16 13:56:48,2018-03-10 11:02:08 -837,Rici,Francie,992-830-9527,Female,5,75,22,2018-07-21 07:35:59,2018-01-24 21:24:42,2018-12-20 10:46:19,2018-04-27 01:28:33 -838,Vivian,Suddell,715-471-1918,Female,6,81,45,2018-07-29 02:06:46,2018-10-15 14:05:00,2018-06-12 17:01:30,2018-05-12 22:22:36 -839,Eugenia,Tudhope,527-791-1359,Female,2,95,25,2019-01-05 12:54:58,2018-12-12 20:07:15,2018-12-22 12:11:13,2018-12-25 06:49:43 -840,Hamnet,Gateman,792-883-5589,Male,1,84,45,2018-06-26 04:15:53,2018-02-21 14:45:49,2018-08-29 18:01:14,2019-01-15 09:03:43 -841,Laraine,Emma,256-645-5057,Female,3,88,52,2018-05-29 03:26:20,2018-03-10 02:05:24,2018-05-12 21:29:38,2018-12-10 02:39:56 -842,Harley,D'Ruel,359-498-9270,Male,4,16,57,2018-02-15 07:39:22,2018-08-24 22:23:10,2018-07-19 02:07:06,2018-02-13 01:45:52 -843,Theda,Eades,222-998-5683,Female,7,2,71,2018-03-06 07:09:18,2018-09-14 11:46:16,2018-11-23 01:07:59,2018-12-02 03:37:22 -844,Giselbert,Klimentyev,165-127-0115,Male,6,88,93,2018-11-13 03:56:59,2018-04-09 02:33:25,2018-07-04 00:34:57,2018-06-04 05:56:23 -845,Lynnet,Tidd,370-452-0577,Female,6,47,3,2018-08-25 20:45:24,2018-08-27 16:50:01,2018-08-22 21:33:48,2018-06-27 22:32:52 -846,Donetta,Giannassi,913-466-0403,Female,2,39,55,2018-02-26 16:34:20,2018-07-10 03:35:10,2018-09-29 14:23:34,2018-10-10 13:02:02 -847,Conrade,Ruddell,514-722-6544,Male,3,13,100,2018-05-31 18:14:29,2018-10-19 05:51:32,2018-11-22 09:45:08,2018-02-22 05:00:31 -848,Tynan,Ritchie,552-416-9192,Male,4,50,26,2018-02-13 01:36:31,2018-07-24 03:28:00,2018-02-22 16:37:36,2018-02-28 07:16:54 -849,Erv,Huggins,528-946-8385,Male,3,73,82,2018-03-23 14:37:41,2018-08-12 12:26:08,2018-02-09 16:56:21,2018-08-09 06:33:34 -850,Darby,Ambrogini,266-338-3612,Male,6,92,21,2018-04-27 07:57:01,2018-10-19 20:49:49,2018-02-10 16:39:59,2018-09-03 00:53:41 -851,Devondra,Boc,775-193-7341,Female,5,36,51,2018-10-18 04:36:21,2018-10-28 14:06:15,2018-03-25 15:47:47,2018-08-20 22:31:48 -852,Meggy,Paxforde,435-917-5199,Female,2,40,85,2018-08-27 05:39:35,2018-01-23 20:18:58,2018-02-01 16:43:58,2018-08-07 12:15:36 -853,Pattie,Macallam,901-370-6579,Female,1,4,32,2018-07-11 10:30:06,2018-10-01 12:33:55,2018-02-08 02:35:59,2018-11-30 18:29:14 -854,Ray,Thayre,822-459-4971,Male,7,13,79,2018-07-13 03:44:05,2018-07-07 04:47:58,2018-08-28 19:24:34,2018-08-13 10:49:03 -855,Sindee,Gong,919-731-7167,Female,6,23,3,2018-12-08 15:31:48,2018-04-27 17:10:40,2018-07-14 14:10:46,2018-09-23 22:25:52 -856,Giovanni,Elsie,739-171-4273,Male,3,100,20,2018-11-22 21:14:50,2018-09-29 00:12:07,2018-05-17 09:43:48,2018-04-05 15:26:17 -857,Hadley,Davidde,813-908-2619,Male,7,64,65,2018-01-31 19:26:32,2018-11-10 09:08:19,2018-06-20 20:16:01,2018-04-18 19:33:00 -858,Jud,Schleicher,248-874-9513,Male,1,24,8,2018-04-06 16:54:03,2018-12-08 11:46:05,2018-10-02 20:22:44,2018-04-27 09:04:18 -859,Berget,Rasmus,599-370-5265,Female,2,46,8,2018-11-11 16:46:30,2018-11-24 16:42:40,2019-01-05 12:53:51,2018-12-17 18:41:54 -860,Floris,Lelliott,495-754-4852,Female,1,35,72,2019-01-06 22:27:28,2018-06-14 07:45:20,2018-10-25 10:22:56,2018-07-09 00:48:19 -861,Marianna,Huge,136-171-1910,Female,1,92,73,2018-05-04 21:19:28,2018-04-08 18:45:35,2018-02-08 18:06:55,2018-07-12 04:08:00 -862,Federica,Seakings,778-573-1492,Female,5,42,100,2018-02-18 23:40:45,2018-08-29 22:07:35,2018-06-27 21:37:10,2018-06-27 18:13:29 -863,Christophorus,Tett,516-196-0657,Male,3,68,89,2018-09-28 20:37:26,2018-07-03 17:19:03,2018-04-20 09:01:09,2018-06-11 11:31:56 -864,Kathlin,Hubbart,400-384-9734,Female,5,75,62,2018-09-23 11:16:50,2018-11-22 07:00:07,2018-11-12 09:29:23,2018-03-19 17:19:13 -865,Toinette,Christophersen,222-218-6841,Female,4,81,80,2018-06-24 07:27:29,2018-03-08 17:25:42,2018-11-19 23:39:15,2018-04-02 19:04:26 -866,Mei,Dragon,891-366-6658,Female,2,14,22,2018-03-17 07:33:08,2018-06-23 20:11:56,2018-10-30 02:21:14,2018-10-21 08:13:29 -867,Wileen,Guittet,118-965-5819,Female,7,22,73,2018-04-12 00:04:07,2018-08-23 08:56:44,2018-07-09 08:29:36,2018-02-22 06:45:41 -868,Bill,Skechley,531-261-9052,Female,1,93,45,2018-03-25 13:30:53,2018-10-17 03:47:35,2018-10-18 02:26:47,2018-12-08 19:05:40 -869,Chrissy,Rapley,863-731-8995,Female,7,17,8,2018-09-12 01:35:07,2018-07-22 15:02:10,2018-06-18 19:06:47,2018-12-22 20:00:52 -870,Gwynne,Hymers,287-878-7144,Female,4,6,29,2018-08-19 13:41:56,2018-12-10 18:23:35,2018-03-26 01:25:26,2018-07-05 16:38:09 -871,Noland,Hornung,922-794-4200,Male,3,66,82,2018-12-10 23:49:55,2018-09-15 01:16:20,2018-10-24 20:37:00,2018-10-27 07:56:58 -872,Sybila,Caren,883-754-0514,Female,1,40,33,2018-11-01 03:29:07,2018-03-07 23:07:07,2018-09-06 01:46:46,2018-03-17 17:02:04 -873,Arnaldo,Ortelt,648-204-0219,Male,5,24,20,2018-04-19 00:26:30,2018-06-09 12:00:33,2018-09-30 00:21:33,2018-07-12 18:59:39 -874,Sascha,Thurner,504-586-1976,Male,4,9,34,2018-09-03 11:21:47,2018-12-06 09:23:43,2018-11-21 03:43:51,2018-05-28 10:34:36 -875,Janeva,Stallion,168-726-9745,Female,7,66,60,2018-07-05 04:40:09,2018-02-19 12:25:04,2018-05-31 06:47:34,2018-01-24 21:43:59 -876,Imelda,Daintrey,786-279-9676,Female,5,26,12,2018-07-29 01:32:45,2018-05-21 03:09:18,2018-10-03 07:09:16,2018-12-28 16:07:06 -877,Kaia,Pauleit,937-468-0457,Female,5,36,63,2018-08-20 03:23:06,2018-09-20 08:02:05,2018-05-13 23:35:38,2018-03-19 03:48:06 -878,Fons,Coton,673-868-5084,Male,6,51,39,2018-02-28 14:51:40,2018-08-02 02:13:10,2018-02-01 01:38:38,2018-09-22 00:49:46 -879,Amalee,Groneway,336-875-1596,Female,5,19,58,2018-04-12 20:12:37,2018-11-27 06:39:14,2018-09-18 01:05:22,2018-04-22 08:39:02 -880,Paquito,O'Dwyer,324-526-6202,Male,7,99,41,2018-10-12 02:35:53,2018-02-10 00:52:03,2018-02-07 03:12:35,2018-10-18 21:47:13 -881,Shea,Forst,307-995-7972,Female,1,41,41,2018-10-02 02:03:39,2018-10-24 23:10:36,2019-01-09 17:11:05,2018-05-16 22:15:02 -882,Sylvan,McKimm,999-270-7047,Male,1,21,29,2018-04-13 22:42:31,2018-12-10 08:47:39,2018-05-25 01:01:54,2018-04-17 08:03:17 -883,Peyter,Rotte,919-508-2810,Male,3,51,43,2018-05-25 10:20:40,2018-05-07 09:22:17,2018-10-29 16:34:13,2018-05-08 18:00:18 -884,Ernestine,Jankowski,998-337-8068,Female,3,7,44,2018-01-22 22:18:12,2018-11-04 08:03:53,2019-01-14 13:07:45,2018-01-25 10:53:54 -885,Bridget,Pettet,701-799-8814,Female,5,84,73,2018-04-24 13:06:17,2018-09-27 02:37:43,2018-11-23 08:52:31,2018-08-30 18:46:39 -886,Arlana,Wisniowski,321-679-5349,Female,7,1,72,2018-09-20 23:41:45,2018-07-29 00:16:49,2018-02-08 09:55:35,2018-04-07 15:34:38 -887,Darbie,Verzey,936-723-9548,Female,6,95,2,2018-09-15 23:29:11,2018-01-28 09:02:28,2018-12-05 08:05:15,2018-02-08 01:02:29 -888,Quintana,Nutley,896-674-7083,Female,3,38,16,2018-07-22 20:52:42,2018-09-19 19:39:52,2018-04-29 01:58:40,2018-07-30 22:07:46 -889,Padgett,Urwen,141-490-6319,Male,6,32,96,2018-05-09 19:03:45,2018-04-07 12:16:47,2018-07-17 13:53:15,2018-09-19 15:54:14 -890,Beret,Gilchrest,524-146-3660,Female,3,30,45,2018-12-09 18:08:35,2018-02-09 07:44:41,2019-01-09 06:31:54,2018-06-03 05:03:43 -891,Jacquette,McBlain,180-111-2719,Female,5,45,49,2018-08-25 23:50:05,2018-08-14 04:10:24,2018-06-28 01:21:56,2018-05-09 06:07:09 -892,Heriberto,Hardway,934-411-2153,Male,7,100,67,2018-08-12 07:20:08,2018-08-30 23:04:44,2018-08-09 09:18:15,2018-08-21 13:19:44 -893,Charo,Cheeney,934-194-4292,Female,2,79,49,2018-02-19 02:30:34,2018-07-26 21:32:10,2018-03-14 13:44:53,2019-01-02 19:07:53 -894,Barty,Delacour,352-181-7260,Male,7,68,1,2018-02-08 11:54:33,2018-12-22 15:26:11,2018-05-05 05:29:07,2018-01-28 16:34:01 -895,Arel,Qusklay,776-527-2939,Male,6,72,24,2018-02-10 23:05:47,2018-10-31 16:14:34,2018-04-17 06:36:20,2018-09-21 15:13:20 -896,Cleon,Westcarr,735-686-0389,Male,1,56,68,2018-12-14 09:21:13,2018-08-04 15:56:37,2018-09-09 11:38:56,2018-03-19 03:56:38 -897,Nicole,Gorrie,216-361-4858,Female,2,65,77,2018-08-05 12:50:07,2018-03-10 14:07:01,2018-02-15 13:44:04,2019-01-06 01:05:50 -898,Issiah,Patters,901-518-7348,Male,7,40,78,2018-04-27 08:43:08,2018-11-08 01:40:02,2018-02-05 13:31:35,2018-08-05 21:26:55 -899,Kimbell,Torvey,614-432-0846,Male,3,46,34,2018-10-10 17:10:59,2018-04-09 13:30:10,2018-12-26 11:39:55,2018-03-11 23:16:21 -900,Arabel,Reaney,250-158-0650,Female,1,39,42,2018-06-24 20:58:36,2018-06-13 01:05:57,2018-09-21 12:17:09,2018-05-12 01:20:04 -901,Lowrance,Birckmann,707-493-5823,Male,3,40,81,2018-10-30 04:51:25,2018-04-14 15:18:25,2018-11-26 23:12:20,2018-11-19 04:09:43 -902,Sande,Tinson,644-792-0309,Female,1,4,93,2018-06-05 12:30:15,2018-06-05 01:29:00,2018-04-13 08:38:54,2018-12-10 03:36:34 -903,Antonetta,Twelve,506-143-6120,Female,7,95,49,2018-10-15 14:45:58,2018-11-02 11:22:24,2018-02-20 23:03:06,2018-02-13 22:09:09 -904,Marietta,Christensen,356-415-2235,Male,5,80,58,2018-10-22 11:01:49,2018-02-01 17:42:35,2018-11-22 02:54:09,2018-09-30 12:05:18 -905,Jodee,Pietraszek,300-188-3774,Female,4,10,37,2018-10-23 06:33:49,2018-10-21 00:19:46,2018-11-29 18:55:51,2018-11-06 15:41:47 -906,Marthena,Kitson,601-214-9309,Female,4,28,26,2018-07-23 16:23:23,2018-06-22 12:00:30,2018-12-01 12:31:45,2018-12-23 15:09:43 -907,Daron,Mackison,682-377-7219,Female,4,89,96,2018-05-28 03:03:57,2018-03-02 01:25:11,2018-12-01 09:00:59,2018-02-21 02:24:22 -908,Hube,Feldhuhn,942-914-1709,Male,5,24,35,2018-10-02 04:25:27,2018-06-28 02:29:41,2018-02-06 01:40:17,2018-04-23 22:52:35 -909,Loretta,Pritty,613-563-4790,Female,7,75,82,2018-07-08 17:13:07,2018-11-22 22:05:00,2018-10-30 22:21:57,2018-08-13 01:05:15 -910,Cathyleen,McCallion,883-828-7510,Female,2,45,11,2018-09-09 14:13:19,2018-01-31 15:57:37,2018-08-13 04:55:36,2018-09-09 10:40:55 -911,Haleigh,Gleader,682-121-8965,Female,3,8,38,2018-12-20 06:38:29,2019-01-17 01:03:40,2019-01-19 16:23:53,2018-08-17 03:24:51 -912,Charles,Rosengarten,618-810-0078,Male,2,93,36,2018-10-15 16:20:15,2018-12-28 14:31:32,2018-09-12 08:52:44,2018-07-15 21:25:15 -913,Bjorn,Erskine Sandys,529-581-3333,Male,3,75,81,2018-04-14 17:13:49,2018-10-21 15:46:05,2018-05-28 06:44:30,2018-08-10 04:37:46 -914,Darill,Bostock,625-801-8242,Male,2,81,23,2018-10-11 19:47:21,2018-06-12 04:06:41,2019-01-15 07:56:54,2018-04-28 18:50:01 -915,Noellyn,Benwell,722-714-8266,Female,2,11,12,2018-02-15 07:48:35,2018-04-07 17:41:22,2018-05-18 02:39:40,2018-07-22 07:12:38 -916,Dov,Letrange,300-443-5277,Male,5,91,80,2018-12-27 15:44:06,2018-06-01 01:17:13,2018-06-04 08:44:49,2018-05-07 08:43:09 -917,Olympie,Louden,465-432-6397,Female,1,19,13,2018-01-25 05:55:27,2018-06-19 10:44:49,2018-10-06 16:38:12,2018-11-22 20:46:37 -918,Finley,Casbon,425-531-2684,Male,4,85,21,2018-09-04 05:24:44,2018-10-19 21:14:24,2018-09-24 15:11:59,2018-07-02 05:41:48 -919,Dewitt,Krolak,700-648-7734,Male,7,43,3,2018-04-11 09:56:52,2018-07-11 01:42:09,2018-02-28 00:53:56,2018-06-20 15:39:09 -920,Noby,De la Yglesia,405-211-0709,Male,4,1,49,2018-12-05 02:27:53,2018-07-03 10:21:49,2018-09-23 09:16:19,2018-05-12 09:47:56 -921,Aloysius,Baggs,272-379-1280,Male,2,40,53,2018-05-14 22:08:41,2018-12-03 09:03:58,2018-07-15 04:40:33,2018-09-15 06:12:36 -922,Karilynn,Costa,732-871-1192,Female,2,68,76,2018-12-29 05:05:50,2018-12-23 08:00:43,2018-04-13 17:50:47,2018-03-24 11:13:51 -923,Ky,Waggett,413-701-9663,Male,5,7,59,2018-02-05 06:17:54,2018-07-07 03:47:33,2018-09-13 00:11:05,2018-12-21 03:34:37 -924,Leeanne,Neasam,130-573-1360,Female,4,74,77,2018-11-30 04:33:22,2018-03-26 07:40:00,2018-05-03 16:40:09,2018-05-10 20:32:41 -925,Muffin,Eades,789-128-6773,Male,4,84,25,2018-04-19 09:16:22,2018-11-08 03:55:54,2018-02-03 05:36:52,2018-10-21 22:14:13 -926,Iormina,Baudry,644-418-1313,Female,4,72,19,2019-01-16 00:35:47,2018-11-23 14:35:13,2018-04-06 17:59:52,2018-02-24 14:59:31 -927,Fabe,Ziemke,161-651-6080,Male,6,36,12,2019-01-14 08:28:41,2018-10-28 13:42:55,2018-07-07 04:53:18,2018-08-04 15:37:00 -928,Danni,Leese,768-599-1814,Female,7,30,71,2018-11-08 21:26:44,2018-05-01 17:49:56,2018-08-03 00:06:41,2018-10-18 08:20:47 -929,Rycca,Petegre,433-887-8926,Female,4,5,34,2018-07-02 07:56:41,2018-02-10 11:51:30,2018-04-08 10:08:07,2018-06-11 19:43:31 -930,Berkie,Reveland,791-499-2738,Male,1,57,80,2018-07-18 08:14:02,2018-04-15 08:54:18,2018-09-25 23:13:59,2018-08-12 23:49:27 -931,Tommy,Swett,915-667-6497,Male,1,98,11,2018-06-26 21:33:59,2018-07-10 07:15:47,2018-07-15 03:48:37,2018-04-01 11:58:09 -932,Derrek,Perkinson,169-674-1053,Male,4,85,25,2018-08-23 05:51:09,2018-09-17 23:57:57,2018-03-06 01:30:46,2018-05-06 22:10:10 -933,Lonni,Polycote,996-492-4081,Female,2,7,6,2018-06-09 22:12:53,2018-04-09 09:26:53,2018-07-19 03:36:09,2018-12-01 16:50:15 -934,Phyllis,Gallamore,788-489-0287,Female,4,32,71,2018-07-08 11:07:20,2018-05-25 09:24:00,2018-04-23 04:53:35,2019-01-19 16:11:17 -935,Brittne,Caccavari,799-716-9817,Female,2,53,25,2018-12-11 00:47:47,2018-01-22 09:05:30,2018-09-30 14:03:22,2018-08-09 05:13:34 -936,Quinn,Torricina,342-560-9404,Female,3,60,72,2019-01-06 06:26:23,2018-11-21 02:21:54,2018-02-15 20:43:28,2018-08-15 17:59:55 -937,Jacklyn,Bohling,824-878-8873,Female,1,41,34,2018-06-23 18:52:40,2018-05-14 22:58:13,2018-06-08 07:11:42,2018-08-04 15:57:46 -938,Hunfredo,Millam,816-916-1240,Male,1,86,58,2019-01-08 04:02:45,2019-01-12 17:57:33,2019-01-20 14:58:14,2018-12-03 22:29:35 -939,Hymie,Vosse,980-181-0718,Male,4,67,59,2018-12-25 10:58:52,2018-03-09 06:50:03,2018-03-03 04:06:28,2018-07-17 18:26:14 -940,Olia,Wyse,875-970-0069,Female,4,54,96,2018-11-01 03:11:42,2018-12-29 18:01:06,2018-05-01 00:58:58,2018-08-29 17:41:08 -941,Arline,Bierton,582-902-5400,Female,4,36,83,2018-11-19 01:06:41,2018-07-20 08:22:25,2018-02-15 09:56:13,2018-07-07 12:00:06 -942,Nevsa,Jacquot,393-800-6240,Female,3,76,100,2018-12-03 03:10:20,2018-10-05 15:30:34,2018-07-03 08:10:26,2019-01-15 02:21:14 -943,Analise,Bechley,178-276-2761,Female,4,10,4,2018-08-03 05:49:50,2018-12-25 22:04:16,2019-01-18 22:16:01,2018-03-07 14:10:26 -944,Siffre,Cumbridge,484-369-3900,Male,1,30,98,2018-11-08 05:35:17,2018-07-06 03:41:16,2018-03-26 11:58:13,2018-10-05 22:55:01 -945,Berget,Oldred,470-380-7016,Female,2,34,3,2018-12-24 01:06:10,2018-03-01 08:09:07,2018-08-27 19:47:44,2018-07-15 17:16:39 -946,Aaron,Arnison,195-265-7576,Male,4,68,94,2018-06-02 08:58:18,2018-08-03 00:56:00,2018-05-06 14:32:24,2018-02-16 07:54:16 -947,Fay,Sarfas,659-275-5381,Female,6,34,96,2019-01-02 00:06:51,2018-12-05 05:47:36,2018-04-22 03:52:40,2018-09-20 19:16:51 -948,Pennie,Rappaport,851-746-8484,Female,5,74,57,2018-06-13 14:50:19,2018-05-10 00:00:37,2018-05-03 15:48:50,2018-12-06 19:15:10 -949,Ennis,Schindler,685-873-8208,Male,2,9,15,2018-12-06 10:23:57,2018-06-05 08:10:38,2018-08-19 04:20:22,2018-08-31 04:33:19 -950,Sean,Breckwell,511-213-8051,Male,4,65,20,2018-06-20 04:24:36,2018-12-24 06:27:41,2018-07-17 12:13:34,2018-06-02 06:09:01 -951,Carlene,Vials,130-632-1736,Female,2,71,12,2018-03-26 06:16:26,2018-03-25 23:10:14,2018-03-02 15:43:13,2018-06-01 08:30:44 -952,Nerita,Paolinelli,943-836-6191,Female,2,88,24,2018-11-19 20:39:05,2018-09-18 20:22:25,2018-07-16 13:15:28,2018-12-21 02:47:25 -953,Benoite,Gheorghescu,378-772-1101,Female,4,78,44,2018-11-09 02:22:49,2019-01-09 18:23:07,2018-04-05 11:06:02,2018-05-14 05:39:56 -954,Erik,Auchterlonie,766-720-0406,Male,1,17,56,2018-03-01 23:55:26,2018-10-18 17:00:40,2018-07-12 00:30:26,2018-11-30 15:38:30 -955,Jesse,Laurenty,586-274-7629,Female,2,10,63,2018-08-16 12:07:51,2018-05-30 23:14:43,2018-06-19 02:24:42,2018-03-17 09:24:46 -956,Lynnet,Cuel,652-339-4808,Female,1,26,91,2018-11-05 19:14:13,2018-11-22 14:06:17,2018-12-25 13:52:54,2018-10-28 04:14:09 -957,Marge,Adnet,901-394-6344,Female,7,46,51,2018-02-21 02:14:23,2018-12-29 22:39:34,2018-03-27 11:48:32,2019-01-05 10:26:02 -958,Clara,Rangeley,154-876-9501,Female,6,73,50,2018-07-06 13:52:31,2018-05-28 12:09:22,2018-09-08 04:19:54,2018-09-02 19:04:27 -959,Ciel,Ching,205-133-7293,Female,7,26,19,2018-06-13 01:00:22,2018-06-26 05:13:24,2018-03-12 09:15:19,2018-06-29 23:55:03 -960,Phebe,Pentecust,671-551-3717,Female,6,79,26,2018-07-17 05:39:55,2018-05-28 11:52:54,2018-11-17 17:20:32,2018-07-27 07:39:40 -961,Koralle,Doleman,733-411-3555,Female,4,50,86,2018-10-28 12:28:47,2018-04-19 14:24:23,2018-04-19 20:04:57,2018-11-03 19:27:30 -962,Gypsy,Ashard,627-318-6598,Female,4,84,97,2018-10-29 08:41:04,2018-04-12 21:17:30,2019-01-12 05:14:18,2018-08-11 13:20:16 -963,Zebedee,Guilayn,442-936-9333,Male,3,35,49,2018-06-20 19:42:39,2019-01-19 12:44:29,2018-10-03 09:52:26,2018-11-23 22:02:46 -964,Waldemar,Isaak,931-973-9119,Male,4,82,45,2018-04-23 15:37:02,2018-05-09 15:24:30,2018-02-14 08:08:10,2018-07-03 18:15:44 -965,Zackariah,Donaway,407-803-4328,Male,1,89,1,2018-07-08 18:27:27,2018-03-04 22:13:59,2018-12-18 03:57:10,2018-07-07 10:37:23 -966,Amie,Graddon,806-683-2495,Female,7,24,48,2018-08-12 05:59:08,2018-02-02 02:33:10,2018-12-27 15:24:26,2018-09-09 14:21:34 -967,Homere,Hinkes,540-511-8058,Male,2,18,21,2018-02-15 19:40:23,2018-03-12 20:21:06,2018-07-24 20:35:51,2018-11-05 01:00:48 -968,Hildy,Romaint,578-715-3279,Female,1,64,42,2018-08-05 12:04:55,2018-10-30 20:39:13,2018-11-01 10:01:51,2018-10-13 16:01:35 -969,Norbie,Reinhardt,522-463-8856,Male,6,73,39,2018-12-26 16:31:22,2018-05-04 07:05:54,2018-11-01 19:36:06,2018-08-22 23:10:40 -970,Farlee,Robb,921-988-0129,Male,2,92,32,2018-09-25 21:50:48,2018-01-29 06:17:06,2018-12-05 20:31:07,2018-10-13 17:19:53 -971,Husain,Coomes,167-999-0871,Male,7,43,13,2018-06-22 13:30:21,2018-10-26 10:44:10,2019-01-18 20:06:38,2018-12-02 03:52:12 -972,Milo,Ikringill,848-791-7005,Male,6,93,81,2018-04-23 10:40:56,2018-11-16 14:25:18,2018-05-08 11:02:49,2018-09-27 02:14:23 -973,Bendite,Ivan,797-480-5441,Female,4,19,47,2018-03-24 15:48:07,2019-01-18 21:56:06,2018-12-06 11:16:03,2018-03-11 17:19:09 -974,Dall,Hewson,361-271-3138,Male,7,51,12,2018-12-01 16:04:22,2018-07-19 15:52:08,2018-11-26 22:45:09,2018-02-12 13:20:52 -975,Alfonse,Paddell,215-108-6430,Male,3,67,39,2018-07-20 13:46:01,2019-01-09 15:28:08,2018-05-15 18:34:09,2018-09-24 12:02:27 -976,Rachelle,Parysowna,448-408-3939,Female,6,75,37,2019-01-08 01:40:17,2019-01-14 14:50:14,2018-09-08 20:13:56,2018-08-26 17:34:13 -977,Vlad,Massimo,958-382-7108,Male,6,83,50,2019-01-10 14:14:56,2018-04-03 09:05:13,2018-07-12 05:33:43,2018-08-03 07:52:29 -978,Orran,Labarre,603-601-4448,Male,1,62,88,2018-08-02 15:34:45,2018-11-25 10:40:27,2018-02-25 06:26:19,2018-08-02 08:35:57 -979,Goldi,McGaw,418-474-0723,Female,4,92,65,2018-03-02 17:07:20,2018-03-04 17:41:59,2018-08-24 13:07:56,2018-11-04 17:29:39 -980,Ddene,O'Halloran,269-505-5567,Female,5,40,82,2018-07-19 04:42:22,2018-10-21 20:43:40,2018-05-31 18:32:46,2018-05-27 23:48:19 -981,Franciska,Randalston,518-473-9956,Female,2,31,23,2018-08-10 19:43:25,2018-07-27 07:50:34,2018-09-05 22:19:23,2018-07-03 10:32:00 -982,Izak,Aaronson,559-374-9622,Male,3,42,87,2018-08-15 00:25:50,2018-04-15 10:04:12,2018-06-28 14:35:41,2018-01-21 11:06:29 -983,Trey,Battany,836-241-1102,Male,2,15,41,2019-01-10 17:37:08,2018-09-21 17:33:14,2018-10-31 07:41:53,2018-05-02 04:23:23 -984,Monty,Print,851-362-4374,Male,1,72,54,2018-07-29 11:59:40,2018-02-03 04:49:31,2019-01-10 13:05:52,2018-12-15 23:29:32 -985,Ashton,Cunnah,780-629-9147,Male,4,45,20,2018-02-10 13:25:53,2018-12-25 15:32:25,2018-01-23 10:29:44,2018-05-31 16:54:21 -986,Becky,Stavers,700-388-4222,Female,6,10,79,2018-03-04 20:32:59,2018-06-13 23:55:18,2018-06-02 22:41:53,2018-11-04 01:01:48 -987,Udall,Undrell,187-686-5781,Male,3,62,28,2018-07-29 04:00:33,2018-08-10 09:03:52,2018-12-20 19:09:22,2019-01-08 10:29:39 -988,Wait,Kippie,649-986-8035,Male,6,59,99,2018-08-26 01:11:54,2018-11-11 11:43:07,2018-11-26 18:10:23,2018-05-03 06:50:49 -989,Laurence,Dubs,725-348-9456,Male,5,80,78,2018-12-29 16:41:25,2018-03-04 01:25:41,2018-07-24 13:07:42,2018-03-02 01:22:54 -990,Cyrille,Ansley,464-181-4696,Male,7,71,25,2018-10-12 23:36:32,2018-05-18 07:03:48,2018-12-20 18:06:28,2018-09-16 15:37:18 -991,Emory,Manwell,415-640-8797,Male,5,12,56,2018-07-21 03:32:53,2018-11-15 00:05:50,2018-06-11 19:00:20,2018-03-30 06:39:44 -992,Chevalier,Pelosi,210-721-7355,Male,1,3,53,2018-09-10 01:51:52,2018-08-05 09:51:36,2018-07-09 12:50:42,2018-12-20 17:33:50 -993,Vale,Havenhand,885-493-5138,Male,5,37,72,2018-11-01 03:19:32,2018-11-02 06:12:05,2019-01-18 19:09:41,2018-07-29 06:54:36 -994,Shel,Kislingbury,683-829-9112,Female,2,57,75,2018-07-06 02:01:25,2018-11-17 02:11:03,2018-07-20 22:39:14,2018-05-08 16:48:52 -995,Kris,Rodear,296-572-9182,Male,5,24,22,2018-05-21 05:50:41,2018-12-04 14:27:38,2018-09-01 22:26:00,2018-09-05 14:46:56 -996,Jillayne,Mackerel,971-775-5324,Female,4,77,29,2018-08-29 09:36:26,2018-09-18 17:04:42,2018-12-08 03:41:26,2018-11-28 11:52:45 -997,Wilona,Yonnie,985-459-5111,Female,4,36,62,2018-08-07 01:17:54,2018-08-25 03:30:42,2018-02-17 20:26:24,2018-03-09 21:08:39 -998,Herbert,Liver,278-295-4343,Male,1,10,92,2018-04-27 00:14:36,2018-08-27 15:24:57,2018-02-11 18:53:26,2018-05-05 07:57:16 -999,Charmian,Robison,320-515-4401,Female,4,66,52,2018-11-29 19:32:40,2018-09-14 07:10:38,2018-07-04 09:36:16,2018-02-20 20:59:30 -1000,Cad,Alster,344-476-5489,Male,6,50,52,2018-09-12 09:49:44,2018-04-09 17:52:16,2018-12-18 02:15:47,2018-04-22 03:31:11 diff --git a/vitess-mixin/e2e/external_db/mysql/grant.sh b/vitess-mixin/e2e/external_db/mysql/grant.sh deleted file mode 100755 index 9371377d074..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/grant.sh +++ /dev/null @@ -1,7 +0,0 @@ - -echo '**********GRANTING PRIVILEGES START*******************' -echo ${mysql[@]} -# PURGE BINARY LOGS BEFORE DATE(NOW()); -mysql --protocol=socket -uroot -hlocalhost --socket=/var/run/mysqld/mysqld.sock -p$MYSQL_ROOT_PASSWORD -e \ -"GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD'" -echo '*************GRANTING PRIVILEGES END****************' diff --git a/vitess-mixin/e2e/external_db/mysql/mysql56.cnf b/vitess-mixin/e2e/external_db/mysql/mysql56.cnf deleted file mode 100644 index fdd34b1bd2e..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/mysql56.cnf +++ /dev/null @@ -1,41 +0,0 @@ -[mysqld] -# Options for enabling GTID -# https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-howto.html -gtid_mode = ON -log_bin -log_slave_updates -enforce_gtid_consistency - -# Crash-safe replication settings. -master_info_repository = TABLE -relay_log_info_repository = TABLE -relay_log_purge = 1 -relay_log_recovery = 1 - -# Native AIO tends to run into aio-max-nr limit during test startup. -innodb_use_native_aio = 0 - -# Semi-sync replication is required for automated unplanned failover -# (when the master goes away). Here we just load the plugin so it's -# available if desired, but it's disabled at startup. -# -# VTTablet will enable semi-sync at the proper time when replication is set up, -# or when a primary is promoted or demoted based on the durability policy configured. -plugin-load = rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so - -# When semi-sync is enabled, don't allow fallback to async -# if you get no ack, or have no slaves. This is necessary to -# prevent alternate futures when doing a failover in response to -# a master that becomes unresponsive. -rpl_semi_sync_master_timeout = 1000000000000000000 -rpl_semi_sync_master_wait_no_slave = 1 -server-id = 1 -# Remove ONLY_FULL_GROUP_BY until queries are fixed -sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" - -general_log = 1 -general_log_file = /var/log/mysql/query.log - -slow_query_log = 1 -long_query_time = 1 # seconds -slow_query_log_file = /var/log/mysql/slow.log \ No newline at end of file diff --git a/vitess-mixin/e2e/external_db/mysql/mysql57.cnf b/vitess-mixin/e2e/external_db/mysql/mysql57.cnf deleted file mode 100644 index ebf301187eb..00000000000 --- a/vitess-mixin/e2e/external_db/mysql/mysql57.cnf +++ /dev/null @@ -1,43 +0,0 @@ -# This file is auto-included when MySQL 5.7 is detected. - -# MySQL 5.7 does not enable the binary log by default, and -# info repositories default to file -[mysqld] -gtid_mode = ON -log_slave_updates -enforce_gtid_consistency -expire_logs_days = 3 -master_info_repository = TABLE -relay_log_info_repository = TABLE -relay_log_purge = 1 -relay_log_recovery = 1 - -# In MySQL 5.7 the default charset is latin1 - -character_set_server = utf8 -collation_server = utf8_general_ci - -# Semi-sync replication is required for automated unplanned failover -# (when the master goes away). Here we just load the plugin so it's -# available if desired, but it's disabled at startup. -# -# VTTablet will enable semi-sync at the proper time when replication is set up, -# or when a primary is promoted or demoted based on the durability policy configured. -plugin-load = rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so - -# When semi-sync is enabled, don't allow fallback to async -# if you get no ack, or have no slaves. This is necessary to -# prevent alternate futures when doing a failover in response to -# a master that becomes unresponsive. -rpl_semi_sync_master_timeout = 1000000000000000000 -rpl_semi_sync_master_wait_no_slave = 1 - -## Specific edits for this external_db ## -log_bin -server-id = 1 -general_log = 1 -general_log_file = /var/log/mysql/query.log - -slow_query_log = 1 -long_query_time = 1 # seconds -slow_query_log_file = /var/log/mysql/slow.log diff --git a/vitess-mixin/e2e/externaldb_vreplication.sh b/vitess-mixin/e2e/externaldb_vreplication.sh deleted file mode 100755 index 1138909aa13..00000000000 --- a/vitess-mixin/e2e/externaldb_vreplication.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -# Copyright 2020 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -VTCTLD_SERVER=${VTCTLD_SERVER:-'vtctld:15999'} - -# Wait until source and destination primaries are available -until (/vt/bin/vtctlclient --server $VTCTLD_SERVER ListAllTablets | grep "ext_" | grep "primary" ); do - echo 'waiting for external primary..'; - sleep 1; -done - -until (/vt/bin/vtctlclient --server $VTCTLD_SERVER ListAllTablets | grep -v "ext_" | grep "primary" ); do - echo 'waiting for managed primary..'; - sleep 1; -done - - -# Get source and destination tablet and shard information -TABLET_INFO=$(/vt/bin/vtctlclient --server $VTCTLD_SERVER ListAllTablets) -source_alias=$(echo "$TABLET_INFO "| grep "ext_" | grep "primary" | awk '{ print $1 }') -dest_alias=$(echo "$TABLET_INFO "| grep -v "ext_" | grep "primary" | awk '{ print $1 }') -source_keyspace=$(echo "$TABLET_INFO "| grep "ext_" | grep "primary" | awk '{ print $2 }') -dest_keyspace=$(echo "$TABLET_INFO "| grep -v "ext_" | grep "primary" | awk '{ print $2 }') -source_shard=$(echo "$TABLET_INFO "| grep "ext_" | grep "primary" | awk '{ print $3 }') -dest_shard=$(echo "$TABLET_INFO "| grep -v "ext_" | grep "primary" | awk '{ print $3 }') -source_tablet=$(echo "$TABLET_INFO "| grep "ext_" | grep "primary" | awk '{ print $2 "/" $3}') -dest_tablet=$(echo "$TABLET_INFO "| grep -v "ext_" | grep "primary" | awk '{ print $2 "/" $3}') - - -# Disable foreign_key checks on destination -/vt/bin/vtctlclient --server $VTCTLD_SERVER ExecuteFetchAsDba $dest_alias 'SET GLOBAL FOREIGN_KEY_CHECKS=0;' - -# Get source_sql mode -source_sql_mode=$(/vt/bin/vtctlclient --server $VTCTLD_SERVER ExecuteFetchAsDba $source_alias 'SELECT @@GLOBAL.sql_mode' | awk 'NR==4 {print $2}') - -# Apply source sql_mode to destination -# The intention is to avoid replication errors -/vt/bin/vtctlclient --server $VTCTLD_SERVER ExecuteFetchAsDba $dest_alias "SET GLOBAL sql_mode='$source_sql_mode';" - -# Verify sql_mode matches -[ $source_sql_mode == $(/vt/bin/vtctlclient --server $VTCTLD_SERVER ExecuteFetchAsDba $dest_alias 'SELECT @@GLOBAL.sql_mode' | awk 'NR==4 {print $2}') ] && \ -echo "Source and Destination sql_mode Match." || echo "sql_mode MisMatch" - -until /vt/bin/vtctlclient --server $VTCTLD_SERVER GetSchema $dest_alias; do - echo "Waiting for destination schema to be ready.."; - sleep 3; -done - -# Copy schema from source to destination shard -/vt/bin/vtctlclient --server $VTCTLD_SERVER CopySchemaShard $source_tablet $dest_tablet || true - -# Verify schema -/vt/bin/vtctlclient --server $VTCTLD_SERVER GetSchema $dest_alias - -# Start vreplication -/vt/bin/vtctlclient --server $VTCTLD_SERVER VReplicationExec $dest_alias 'insert into _vt.vreplication (db_name, source, pos, max_tps, max_replication_lag, tablet_types, time_updated, transaction_timestamp, state) values('"'"''"$dest_keyspace"''"'"', '"'"'keyspace:\"'"$source_keyspace"'\" shard:\"'"$source_shard"'\" filter: > on_ddl:EXEC_IGNORE '"'"', '"'"''"'"', 9999, 9999, '"'"'primary'"'"', 0, 0, '"'"'Running'"'"')' - -# Check vreplication status -/vt/bin/vtctlclient --server $VTCTLD_SERVER VReplicationExec $dest_alias 'select * from _vt.vreplication' - diff --git a/vitess-mixin/e2e/fix_replication.sh b/vitess-mixin/e2e/fix_replication.sh deleted file mode 100755 index e6a06c71124..00000000000 --- a/vitess-mixin/e2e/fix_replication.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This is a helper script to sync replicas for mysql. -# It handles the special case where the primary has purged bin logs that the replica requires. -# To use it place a mysql dump of the database on the same directory as this script. -# The name of the dump must be $KEYSPACE.sql. The script can also download the mysqldump for you. -# Replication is fixed by restoring the mysqldump and resetting the replica. -# https://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-disable-gtids.html -# https://www.percona.com/blog/2013/02/08/how-to-createrestore-a-slave-using-gtid-replication-in-mysql-5-6/ - -cd "$(dirname "${BASH_SOURCE[0]}")" - -function get_replication_status() { - # Get replica status - STATUS_LINE=$(mysql -u$DB_USER -p$DB_PASS -h 127.0.0.1 -e "SHOW SLAVE STATUS\G") - LAST_ERRNO=$(grep "Last_IO_Errno:" <<< "$STATUS_LINE" | awk '{ print $2 }') - SLAVE_SQL_RUNNING=$(grep "Slave_SQL_Running:" <<< "$STATUS_LINE" | awk '{ print $2 }') - SLAVE_IO_RUNNING=$(grep "Slave_IO_Running:" <<< "$STATUS_LINE" | awk '{ print $2 }') - MASTER_HOST=$(grep "Master_Host:" <<< "$STATUS_LINE" | awk '{ print $2 }') - MASTER_PORT=$(grep "Master_Port:" <<< "$STATUS_LINE" | awk '{ print $2 }') - - echo "Slave_SQL_Running: $SLAVE_SQL_RUNNING" - echo "Slave_IO_Running: $SLAVE_IO_RUNNING" - echo "Last_IO_Errno: $LAST_ERRNO" -} - -function reset_replication() { - # Necessary before sql file can be imported - echo "Importing MysqlDump: $KEYSPACE.sql" - mysql -u$DB_USER -p$DB_PASS -h 127.0.0.1 -e "RESET MASTER;STOP SLAVE;CHANGE MASTER TO MASTER_AUTO_POSITION = 0;source $KEYSPACE.sql;START SLAVE;" - # Restore Master Auto Position - echo "Restoring Master Auto Setting" - mysql -u$DB_USER -p$DB_PASS -h 127.0.0.1 -e "STOP SLAVE;CHANGE MASTER TO MASTER_AUTO_POSITION = 1;START SLAVE;" -} - -# Retrieve replication status -get_replication_status - -# Exit script if called with argument 'status' -[ ${1:-''} != 'status' ] || exit 0; - -# Check if SLAVE_IO is running -if [[ $SLAVE_IO_RUNNING = "No" && $LAST_ERRNO = 1236 ]]; then - - echo "Primary has purged bin logs that replica requires. Sync will require restore from mysqldump" - if [[ -f $KEYSPACE.sql ]] ; then - echo "mysqldump file $KEYSPACE.sql exists, attempting to restore.." - echo "Resetting replication.." - reset_replication - else - echo "Starting mysqldump. This may take a while.." - # Modify flags to user's requirements - if mysqldump -h $MASTER_HOST -P $MASTER_PORT -u$DB_USER -p$DB_PASS --databases $KEYSPACE \ - --triggers --routines --events --hex-blob --master-data=1 --quick --order-by-primary \ - --no-autocommit --skip-comments --skip-add-drop-table --skip-add-locks \ - --skip-disable-keys --single-transaction --set-gtid-purged=on --verbose > $KEYSPACE.sql; then - echo "mysqldump complete for database $KEYSPACE" - echo "Resetting replication.." - reset_replication - else - echo "mysqldump failed for database $KEYSPACE" - fi - fi - -else - - echo "No Actions to perform" - -fi diff --git a/vitess-mixin/e2e/grafana/provisioning/dashboards/dashboard.yml b/vitess-mixin/e2e/grafana/provisioning/dashboards/dashboard.yml deleted file mode 100644 index edfcd4f2271..00000000000 --- a/vitess-mixin/e2e/grafana/provisioning/dashboards/dashboard.yml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: 1 - -providers: -- name: 'Vitess Mixin' - orgId: 1 - folder: '' - type: file - disableDeletion: false - editable: true - options: - path: /etc/grafana/provisioning/dashboards \ No newline at end of file diff --git a/vitess-mixin/e2e/grafana/provisioning/datasources/datasource.yml b/vitess-mixin/e2e/grafana/provisioning/datasources/datasource.yml deleted file mode 100644 index a2140b8834e..00000000000 --- a/vitess-mixin/e2e/grafana/provisioning/datasources/datasource.yml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: 1 - -deleteDatasources: - - name: Prometheus - orgId: 1 - -datasources: - -- name: Prometheus - type: prometheus - access: proxy - orgId: 1 - url: http://prometheus:9090 - user: - database: - basicAuth: false - basicAuthUser: - basicAuthPassword: - withCredentials: - isDefault: true - version: 1 - editable: true \ No newline at end of file diff --git a/vitess-mixin/e2e/lfixrepl.sh b/vitess-mixin/e2e/lfixrepl.sh deleted file mode 100755 index bd3e5646019..00000000000 --- a/vitess-mixin/e2e/lfixrepl.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Enable tty for Windows users using git-bash or cygwin -if [[ "$OSTYPE" == "msys" ]]; then - # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) - tty=winpty - script=//script//fix_replication.sh -fi - -# This is a convenience script to fix replication on replicas. -exec $tty docker-compose exec ${CS:-vttablet2} ${script:-/script/fix_replication.sh} "$@" \ No newline at end of file diff --git a/vitess-mixin/e2e/lmysql.sh b/vitess-mixin/e2e/lmysql.sh deleted file mode 100755 index d735e3783a8..00000000000 --- a/vitess-mixin/e2e/lmysql.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Enable tty for Windows users using git-bash or cygwin -if [[ "$OSTYPE" == "msys" ]]; then - # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) - tty=winpty -fi - -# This is a convenience script to run mysql client against the local example. -exec $tty docker-compose exec ${CS:-vttablet101} mysql "$@" diff --git a/vitess-mixin/e2e/load_test.sql b/vitess-mixin/e2e/load_test.sql deleted file mode 100644 index 71e7d805386..00000000000 --- a/vitess-mixin/e2e/load_test.sql +++ /dev/null @@ -1,46 +0,0 @@ --- INSERT TEST DATA --- mysql --port=15306 --host=127.0.0.1 < load_test.sql --- SIMULATED QUERIES --- mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=test_keyspace:80-@primary --query="SELECT * FROM messages;" --- mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=test_keyspace:80-@replica --query="SELECT * FROM messages;" --- mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=lookup_keyspace:-@primary --query="SELECT * FROM messages_message_lookup;" --- mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=lookup_keyspace:-@replica --query="SELECT * FROM messages_message_lookup;" --- SIMULATED ERRORS --- ╰─$ mysqlslap --port=15306 --host=127.0.0.1 --iterations=10000 --create-schema=test_keyspace:80-@primary --query="SELECT name FROM messages;" --- ╰─$ mysqlslap --port=15306 --host=127.0.0.1 --iterations=10000 --create-schema=lookup_keyspace:-@replica --query="SELECT name FROM messages_message_lookup;" - -USE test_keyspace:80-@primary; -INSERT INTO messages (page,time_created_ns,message) VALUES -(1,1,'test'), -(2,2,'test'), -(3,3,'test'), -(4,4,'test'), -(5,5,'test'), -(6,6,'test'), -(7,7,'test'), -(8,8,'test'), -(9,9,'test'); - -USE test_keyspace:-80@primary; -INSERT INTO messages (page,time_created_ns,message) VALUES -(10,1,'test'), -(11,2,'test'), -(12,3,'test'), -(13,4,'test'), -(14,5,'test'), -(15,6,'test'), -(16,7,'test'), -(17,8,'test'), -(18,9,'test'); - -USE lookup_keyspace:-@primary; -INSERT INTO messages_message_lookup (id,page,message) VALUES -(1,1,'test'), -(2,2,'test'), -(3,3,'test'), -(4,4,'test'), -(5,5,'test'), -(6,6,'test'), -(7,7,'test'), -(8,8,'test'), -(9,9,'test'); diff --git a/vitess-mixin/e2e/lookup_keyspace_vschema.json b/vitess-mixin/e2e/lookup_keyspace_vschema.json deleted file mode 100644 index f67289821fe..00000000000 --- a/vitess-mixin/e2e/lookup_keyspace_vschema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "sharded": true, - "tables": { - "messages_message_lookup": { - "column_vindexes": [ - { - "column": "id", - "name": "hash" - } - ] - }, - "tokens_token_lookup": { - "column_vindexes": [ - { - "column": "id", - "name": "hash" - } - ] - } - }, - "vindexes": { - "hash": { - "type": "hash" - } - } -} \ No newline at end of file diff --git a/vitess-mixin/e2e/lvtctl.sh b/vitess-mixin/e2e/lvtctl.sh deleted file mode 100755 index 64110743073..00000000000 --- a/vitess-mixin/e2e/lvtctl.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Enable tty for Windows users using git-bash or cygwin -if [[ "$OSTYPE" == "msys" ]]; then - # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) - tty=winpty -fi - -# This is a convenience script to run vtctlclient against the local example. -exec $tty docker-compose exec ${CS:-vtctld} vtctlclient -server vtctld:15999 "$@" diff --git a/vitess-mixin/e2e/package-lock.json b/vitess-mixin/e2e/package-lock.json deleted file mode 100644 index d686ef99233..00000000000 --- a/vitess-mixin/e2e/package-lock.json +++ /dev/null @@ -1,1483 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true - }, - "@cypress/request": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", - "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "6.10.4", - "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - } - }, - "@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@types/node": { - "version": "18.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", - "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", - "dev": true - }, - "@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true - }, - "@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cypress": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", - "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", - "dev": true, - "requires": { - "@cypress/request": "^3.0.0", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^18.17.5", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "requires": { - "pify": "^2.2.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "requires": { - "async": "^3.2.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "requires": { - "ci-info": "^3.2.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true - }, - "listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "requires": { - "throttleit": "^1.0.0" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} diff --git a/vitess-mixin/e2e/package.json b/vitess-mixin/e2e/package.json deleted file mode 100644 index ccc95ba93b0..00000000000 --- a/vitess-mixin/e2e/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "license": "Apache-2.0", - "devDependencies": { - "cypress": "^13.2.0" - } -} diff --git a/vitess-mixin/e2e/prometheus/prometheus.yml b/vitess-mixin/e2e/prometheus/prometheus.yml deleted file mode 100644 index bd8fe98dfa7..00000000000 --- a/vitess-mixin/e2e/prometheus/prometheus.yml +++ /dev/null @@ -1,61 +0,0 @@ -global: - scrape_interval: 5s - scrape_timeout: 2s - -rule_files: - - prometheus_rules.yaml - -scrape_configs: - - job_name: vitess-vtctld - metrics_path: /metrics - static_configs: - - targets: - - 'vtctld:8080' - - job_name: vitess-vtgate - metrics_path: /metrics - static_configs: - - targets: - - 'vtgate:8080' - - job_name: vitess-vttablet - metrics_path: /metrics - static_configs: - - targets: - - 'vttablet101:8080' - - 'vttablet102:8080' - - 'vttablet201:8080' - - 'vttablet202:8080' - - 'vttablet301:8080' - - 'vttablet302:8080' - # Mock mysql exporter for vttablet - - job_name: mysql - metrics_path: /metrics - static_configs: - - targets: - - 'mysqld_exporter:9104' - metric_relabel_configs: - - source_labels: [ instance ] - target_label: instance - action: replace - replacement: vttablet101:8080 - # Mock node exporter for vtgate - - job_name: node-exporter-vitess-vtgate - metrics_path: /metrics - static_configs: - - targets: - - 'node-exporter:9100' - metric_relabel_configs: - - source_labels: [ instance ] - target_label: instance - action: replace - replacement: vtgate:8080 - # Mock node exporter for vttablet - - job_name: node-exporter-vitess-vttablet - metrics_path: /metrics - static_configs: - - targets: - - 'node-exporter:9100' - metric_relabel_configs: - - source_labels: [ instance ] - target_label: instance - action: replace - replacement: vttablet101:8080 diff --git a/vitess-mixin/e2e/run-forever.sh b/vitess-mixin/e2e/run-forever.sh deleted file mode 100755 index 51e511be77a..00000000000 --- a/vitess-mixin/e2e/run-forever.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -while true -do - $@ - sleep 2 -done diff --git a/vitess-mixin/e2e/schemaload.sh b/vitess-mixin/e2e/schemaload.sh deleted file mode 100755 index b8f13ee8812..00000000000 --- a/vitess-mixin/e2e/schemaload.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -e - -# Copyright 2020 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -sleeptime=${SLEEPTIME:-0} -targettab=${TARGETTAB:-"${CELL}-0000000101"} -schema_files=${SCHEMA_FILES:-'create_messages.sql create_tokens.sql create'} -vschema_file=${VSCHEMA_FILE:-'default_vschema.json'} -load_file=${POST_LOAD_FILE:-''} -external_db=${EXTERNAL_DB:-'0'} -export PATH=/vt/bin:$PATH - -sleep $sleeptime - -if [ ! -f schema_run ]; then - while true; do - vtctlclient -server vtctld:$GRPC_PORT GetTablet $targettab && break - sleep 1 - done - if [ "$external_db" = "0" ]; then - for schema_file in $schema_files; do - echo "Applying Schema ${schema_file} to ${KEYSPACE}" - vtctlclient -server vtctld:$GRPC_PORT ApplySchema -sql-file /script/tables/${schema_file} $KEYSPACE || \ - vtctlclient -server vtctld:$GRPC_PORT ApplySchema -sql "$(cat /script/tables/${schema_file})" $KEYSPACE || true - done - fi - echo "Applying VSchema ${vschema_file} to ${KEYSPACE}" - - vtctlclient -server vtctld:$GRPC_PORT ApplyVSchema -vschema_file /script/${vschema_file} $KEYSPACE || \ - vtctlclient -server vtctld:$GRPC_PORT ApplyVSchema -vschema "$(cat /script/${vschema_file})" $KEYSPACE - - echo "List All Tablets" - vtctlclient -server vtctld:$GRPC_PORT ListAllTablets - - if [ -n "$load_file" ]; then - # vtgate can take a REALLY long time to come up fully - sleep 60 - mysql --port=15306 --host=vtgate < /script/$load_file - fi - - touch /vt/schema_run - echo "Time: $(date). SchemaLoad completed at $(date "+%FT%T") " >> /vt/schema_run - echo "Done Loading Schema at $(date "+%FT%T")" -fi diff --git a/vitess-mixin/e2e/tables/create_dinosaurs.sql b/vitess-mixin/e2e/tables/create_dinosaurs.sql deleted file mode 100644 index ee9a5b624da..00000000000 --- a/vitess-mixin/e2e/tables/create_dinosaurs.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE dinosaurs ( - id BIGINT UNSIGNED, - time_created_ns BIGINT UNSIGNED, - name VARCHAR(255), - PRIMARY KEY (id) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/create_eggs.sql b/vitess-mixin/e2e/tables/create_eggs.sql deleted file mode 100644 index 7e74c50b5a1..00000000000 --- a/vitess-mixin/e2e/tables/create_eggs.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE eggs ( - id BIGINT UNSIGNED, - time_created_ns BIGINT UNSIGNED, - species VARCHAR(255), - PRIMARY KEY (id) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/create_messages.sql b/vitess-mixin/e2e/tables/create_messages.sql deleted file mode 100644 index 44c4cc16e87..00000000000 --- a/vitess-mixin/e2e/tables/create_messages.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE messages ( - page BIGINT(20) UNSIGNED, - time_created_ns BIGINT(20) UNSIGNED, - message VARCHAR(10000), - PRIMARY KEY (page, time_created_ns) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/create_messages_message_lookup.sql b/vitess-mixin/e2e/tables/create_messages_message_lookup.sql deleted file mode 100644 index 1eb667dac93..00000000000 --- a/vitess-mixin/e2e/tables/create_messages_message_lookup.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE messages_message_lookup ( - id BIGINT NOT NULL AUTO_INCREMENT, - page BIGINT UNSIGNED, - message VARCHAR(1000), - PRIMARY KEY (id), - UNIQUE KEY idx_message_page (`message`, `page`) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/create_tokens.sql b/vitess-mixin/e2e/tables/create_tokens.sql deleted file mode 100644 index 69f1be03dec..00000000000 --- a/vitess-mixin/e2e/tables/create_tokens.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE tokens ( - page BIGINT(20) UNSIGNED, - time_created_ns BIGINT(20) UNSIGNED, - token VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (page, time_created_ns) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/create_tokens_token_lookup.sql b/vitess-mixin/e2e/tables/create_tokens_token_lookup.sql deleted file mode 100644 index d3208fdfc41..00000000000 --- a/vitess-mixin/e2e/tables/create_tokens_token_lookup.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE tokens_token_lookup ( - id BIGINT NOT NULL AUTO_INCREMENT, - page BIGINT UNSIGNED, - token VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (id), - UNIQUE KEY idx_token_page (`token`, `page`) -) ENGINE=InnoDB; \ No newline at end of file diff --git a/vitess-mixin/e2e/tables/lookup_keyspace_schema_file.sql b/vitess-mixin/e2e/tables/lookup_keyspace_schema_file.sql deleted file mode 100644 index e9c66144176..00000000000 --- a/vitess-mixin/e2e/tables/lookup_keyspace_schema_file.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE TABLE tokens_token_lookup ( - id BIGINT NOT NULL AUTO_INCREMENT, - page BIGINT UNSIGNED, - token VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (id), - UNIQUE KEY idx_token_page (`token`, `page`) -) ENGINE=InnoDB; - -CREATE TABLE messages_message_lookup ( - id BIGINT NOT NULL AUTO_INCREMENT, - page BIGINT UNSIGNED, - message VARCHAR(1000), - PRIMARY KEY (id), - UNIQUE KEY idx_message_page (`message`, `page`) -) ENGINE=InnoDB; - diff --git a/vitess-mixin/e2e/tables/test_keyspace_schema_file.sql b/vitess-mixin/e2e/tables/test_keyspace_schema_file.sql deleted file mode 100644 index b049e4ef211..00000000000 --- a/vitess-mixin/e2e/tables/test_keyspace_schema_file.sql +++ /dev/null @@ -1,14 +0,0 @@ -CREATE TABLE messages ( - page BIGINT(20) UNSIGNED, - time_created_ns BIGINT(20) UNSIGNED, - message VARCHAR(10000), - PRIMARY KEY (page, time_created_ns) -) ENGINE=InnoDB; - -CREATE TABLE tokens ( - page BIGINT(20) UNSIGNED, - time_created_ns BIGINT(20) UNSIGNED, - token VARCHAR(255) DEFAULT NULL, - PRIMARY KEY (page, time_created_ns) -) ENGINE=InnoDB; - diff --git a/vitess-mixin/e2e/tablet.yml b/vitess-mixin/e2e/tablet.yml deleted file mode 100644 index 86cc8316a41..00000000000 --- a/vitess-mixin/e2e/tablet.yml +++ /dev/null @@ -1,24 +0,0 @@ -externalConnections: - erpl: - flavor: FilePos - host: external_db_host - port: 3306 - dbName: commerce - app: - user: external_db_user - password: external_db_password - dba: - user: external_db_user - password: external_db_password - filtered: - user: external_db_user - password: external_db_password - repl: - user: external_db_user - password: external_db_password - appdebug: - user: external_db_user - password: external_db_password - allprivs: - user: external_db_user - password: external_db_password \ No newline at end of file diff --git a/vitess-mixin/e2e/test_keyspace_vschema.json b/vitess-mixin/e2e/test_keyspace_vschema.json deleted file mode 100644 index 55d0df96204..00000000000 --- a/vitess-mixin/e2e/test_keyspace_vschema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "sharded": true, - "tables": { - "messages": { - "column_vindexes": [ - { - "column": "page", - "name": "hash" - }, - { - "column": "message", - "name": "messages_message_lookup" - } - ] - }, - "tokens": { - "column_vindexes": [ - { - "column": "page", - "name": "hash" - }, - { - "column": "token", - "name": "tokens_token_lookup" - } - ] - } - }, - "vindexes": { - "hash": { - "type": "hash" - }, - "messages_message_lookup": { - "type": "lookup_hash", - "params": { - "table": "lookup_keyspace.messages_message_lookup", - "from": "message", - "to": "page", - "autocommit": "true" - }, - "owner": "messages" - }, - "tokens_token_lookup": { - "type": "lookup_hash", - "params": { - "table": "lookup_keyspace.tokens_token_lookup", - "from": "token", - "to": "page", - "autocommit": "true" - }, - "owner": "tokens" - } - } -} \ No newline at end of file diff --git a/vitess-mixin/e2e/vtcompose/base_vschema.json b/vitess-mixin/e2e/vtcompose/base_vschema.json deleted file mode 100644 index b867400e5ee..00000000000 --- a/vitess-mixin/e2e/vtcompose/base_vschema.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "sharded": true, - "vindexes": { - "hash": { - "type": "hash" - } - }, - "tables": { - } -} diff --git a/vitess-mixin/e2e/vtcompose/docker-compose.base.yml b/vitess-mixin/e2e/vtcompose/docker-compose.base.yml deleted file mode 100644 index 2f2fbc12c70..00000000000 --- a/vitess-mixin/e2e/vtcompose/docker-compose.base.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: "2.1" -services: - consul1: - image: consul:latest - hostname: "consul1" - ports: - - "8400:8400" - - "8500:8500" - - "8600:8600" - command: "agent -server -bootstrap-expect 3 -ui -disable-host-node-id -client 0.0.0.0" - consul2: - image: consul:latest - hostname: "consul2" - expose: - - "8400" - - "8500" - - "8600" - command: "agent -server -retry-join consul1 -disable-host-node-id" - depends_on: - - consul1 - consul3: - image: consul:latest - hostname: "consul3" - expose: - - "8400" - - "8500" - - "8600" - command: "agent -server -retry-join consul1 -disable-host-node-id" - depends_on: - - consul1 - # This is a convenience container to quickly test vitess against an external database. - # In practice you will point Vitess to your existing database and migrate to a Vitess managed cluster. - external_db_host: - build: - context: ./external_db/mysql - dockerfile: Dockerfile - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-pass} - MYSQL_DATABASE: ${DB:-commerce} - MYSQL_USER: ${DB_USER:-external_db_user} - MYSQL_PASSWORD: ${DB_PASS:-external_db_password} - volumes: - - ./external_db/mysql/:/docker-entrypoint-initdb.d/ - - ./external_db/mysql/log:/var/log/mysql - command: - - --server-id=1 - - --log-bin=mysql-bin - - --gtid_mode=ON - - --enforce_gtid_consistency - - --general_log=1 - - --slow_query_log=1 - healthcheck: - test: "/usr/bin/mysql --user=root --password=$${MYSQL_ROOT_PASSWORD} --execute \"SHOW DATABASES;\"" - timeout: 10s - retries: 10 - ports: - - "3306" \ No newline at end of file diff --git a/vitess-mixin/e2e/vtcompose/docker-compose.test.yml b/vitess-mixin/e2e/vtcompose/docker-compose.test.yml deleted file mode 100644 index e6928d73acc..00000000000 --- a/vitess-mixin/e2e/vtcompose/docker-compose.test.yml +++ /dev/null @@ -1,303 +0,0 @@ -# This file was generated by running `go run vtcompose/vtcompose.go` with no arguments. - -services: - consul1: - command: agent -server -bootstrap-expect 3 -ui -disable-host-node-id -client 0.0.0.0 - hostname: consul1 - image: consul:latest - ports: - - 8400:8400 - - 8500:8500 - - 8600:8600 - consul2: - command: agent -server -retry-join consul1 -disable-host-node-id - depends_on: - - consul1 - expose: - - "8400" - - "8500" - - "8600" - hostname: consul2 - image: consul:latest - consul3: - command: agent -server -retry-join consul1 -disable-host-node-id - depends_on: - - consul1 - expose: - - "8400" - - "8500" - - "8600" - hostname: consul3 - image: consul:latest - schemaload_test_keyspace: - command: - - sh - - -c - - /script/schemaload.sh - depends_on: - vttablet101: - condition: service_healthy - vttablet201: - condition: service_healthy - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - TARGETTAB=test-0000000101 - - SLEEPTIME=15 - - VSCHEMA_FILE=test_keyspace_vschema.json - - SCHEMA_FILES=test_keyspace_schema_file.sql - - POST_LOAD_FILE= - - EXTERNAL_DB=0 - image: vitess/lite - volumes: - - .:/script - schemaload_unsharded_keyspace: - command: - - sh - - -c - - /script/schemaload.sh - depends_on: - vttablet301: - condition: service_healthy - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=unsharded_keyspace - - TARGETTAB=test-0000000301 - - SLEEPTIME=15 - - VSCHEMA_FILE=unsharded_keyspace_vschema.json - - SCHEMA_FILES=unsharded_keyspace_schema_file.sql - - POST_LOAD_FILE= - - EXTERNAL_DB=0 - image: vitess/lite - volumes: - - .:/script - vtctld: - command: - - sh - - -c - - ' $$VTROOT/bin/vtctld -topo_implementation consul -topo_global_server_address - consul1:8500 -topo_global_root vitess/global -cell test ''grpc-vtctl'' -backup_storage_implementation - file -file_backup_storage_root $$VTDATAROOT/backups -logtostderr=true -port - 8080 -grpc_port 15999 -pid_file $$VTDATAROOT/tmp/vtctld.pid ' - depends_on: - - consul1 - - consul2 - - consul3 - image: vitess/lite - ports: - - 15000:8080 - - "15999" - volumes: - - .:/script - vtgate: - command: - - sh - - -c - - '/script/run-forever.sh $$VTROOT/bin/vtgate --topo_implementation consul --topo_global_server_address - consul1:8500 --topo_global_root vitess/global --logtostderr=true --port 8080 --grpc_port - 15999 --mysql_server_port 15306 --mysql_auth_server_impl none --cell test --cells_to_watch - test --tablet_types_to_wait PRIMARY,REPLICA,RDONLY --service_map ''grpc-vtgateservice'' - --pid_file $$VTDATAROOT/tmp/vtgate.pid --normalize_queries=true ' - depends_on: - - vtctld - image: vitess/lite - ports: - - 15099:8080 - - "15999" - - 15306:15306 - volumes: - - .:/script - vttablet101: - command: - - sh - - -c - - /script/vttablet-up.sh 101 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=-80 - - ROLE=primary - - VTHOST=vttablet101 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl localhost:8080/debug/health - timeout: 10s - image: vitess/lite - ports: - - 15101:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet102: - command: - - sh - - -c - - /script/vttablet-up.sh 102 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=-80 - - ROLE=replica - - VTHOST=vttablet102 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl localhost:8080/debug/health - timeout: 10s - image: vitess/lite - ports: - - 15102:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet201: - command: - - sh - - -c - - /script/vttablet-up.sh 201 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=80- - - ROLE=primary - - VTHOST=vttablet201 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl localhost:8080/debug/health - timeout: 10s - image: vitess/lite - ports: - - 15201:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet202: - command: - - sh - - -c - - /script/vttablet-up.sh 202 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=test_keyspace - - SHARD=80- - - ROLE=replica - - VTHOST=vttablet202 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl localhost:8080/debug/health - timeout: 10s - image: vitess/lite - ports: - - 15202:8080 - - "15999" - - "3306" - volumes: - - .:/script - vttablet301: - command: - - sh - - -c - - /script/vttablet-up.sh 301 - depends_on: - - vtctld - environment: - - TOPOLOGY_FLAGS=-topo_implementation consul -topo_global_server_address consul1:8500 - -topo_global_root vitess/global - - WEB_PORT=8080 - - GRPC_PORT=15999 - - CELL=test - - KEYSPACE=unsharded_keyspace - - SHARD=- - - ROLE=primary - - VTHOST=vttablet301 - - EXTERNAL_DB=0 - - DB_PORT= - - DB_HOST= - - DB_USER= - - DB_PASS= - - DB_CHARSET= - healthcheck: - interval: 30s - retries: 15 - test: - - CMD-SHELL - - curl localhost:8080/debug/health - timeout: 10s - image: vitess/lite - ports: - - 15301:8080 - - "15999" - - "3306" - volumes: - - .:/script -version: "2.1" diff --git a/vitess-mixin/e2e/vtcompose/vtcompose.go b/vitess-mixin/e2e/vtcompose/vtcompose.go deleted file mode 100644 index d272c7330ff..00000000000 --- a/vitess-mixin/e2e/vtcompose/vtcompose.go +++ /dev/null @@ -1,857 +0,0 @@ -/* - * Copyright 2020 The Vitess Authors. - - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - - * http://www.apache.org/licenses/LICENSE-2.0 - - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package main - -import ( - "bytes" - "encoding/json" - "flag" - "fmt" - "math" - "os" - "regexp" - "strconv" - "strings" - - jsonpatch "github.com/evanphx/json-patch" - yamlpatch "github.com/krishicks/yaml-patch" - - "vitess.io/vitess/go/vt/log" -) - -const ( - DefaultWebPort = 8080 - webPortUsage = "Web port to be used" - DefaultGrpcPort = 15999 - gRpcPortUsage = "gRPC port to be used" - DefaultMysqlPort = 15306 - mySqlPortUsage = "mySql port to be used" - DefaultKeyspaceData = "test_keyspace:2:1:create_messages.sql,create_tokens.sql;unsharded_keyspace:0:0:create_dinosaurs.sql,create_eggs.sql" - keyspaceDataUsage = "List of keyspace_name/external_db_name:num_of_shards:num_of_replica_tablets:schema_files:lookup_keyspace_name separated by ';'" - DefaultCell = "test" - cellUsage = "Vitess Cell name" - DefaultExternalDbData = "" - externalDbDataUsage = "List of Data corresponding to external DBs. List of ,,,,, separated by ';'" - DefaultTopologyFlags = "-topo_implementation consul -topo_global_server_address consul1:8500 -topo_global_root vitess/global" - topologyFlagsUsage = "Vitess Topology Flags config" -) - -var ( - tabletsUsed = 0 - tablesPath = "tables/" - baseDockerComposeFile = flag.String("base_yaml", "vtcompose/docker-compose.base.yml", "Starting docker-compose yaml") - baseVschemaFile = flag.String("base_vschema", "vtcompose/base_vschema.json", "Starting vschema json") - - topologyFlags = flag.String("topologyFlags", DefaultTopologyFlags, topologyFlagsUsage) - webPort = flag.Int("webPort", DefaultWebPort, webPortUsage) - gRpcPort = flag.Int("gRpcPort", DefaultGrpcPort, gRpcPortUsage) - mySqlPort = flag.Int("mySqlPort", DefaultMysqlPort, mySqlPortUsage) - cell = flag.String("cell", DefaultCell, cellUsage) - keyspaceData = flag.String("keyspaceData", DefaultKeyspaceData, keyspaceDataUsage) - externalDbData = flag.String("externalDbData", DefaultExternalDbData, externalDbDataUsage) -) - -type vtOptions struct { - webPort int - gRpcPort int - mySqlPort int - topologyFlags string - cell string -} - -type keyspaceInfo struct { - keyspace string - shards int - replicaTablets int - lookupKeyspace string - useLookups bool - schemaFile *os.File - schemaFileNames []string -} - -type externalDbInfo struct { - dbName string - dbHost string - dbPort string - dbUser string - dbPass string - dbCharset string -} - -func newKeyspaceInfo( - keyspace string, - shards int, - replicaTablets int, - schemaFiles []string, - lookupKeyspace string, -) keyspaceInfo { - k := keyspaceInfo{ - keyspace: keyspace, - shards: shards, - replicaTablets: replicaTablets, - schemaFileNames: schemaFiles, - lookupKeyspace: lookupKeyspace, - } - if len(strings.TrimSpace(lookupKeyspace)) == 0 { - k.useLookups = false - } else { - k.useLookups = true - } - - k.schemaFile = nil - return k -} - -func newExternalDbInfo(dbName, dbHost, dbPort, dbUser, dbPass, dbCharset string) externalDbInfo { - return externalDbInfo{ - dbName: dbName, - dbHost: dbHost, - dbPort: dbPort, - dbUser: dbUser, - dbPass: dbPass, - dbCharset: dbCharset, - } -} - -func parseKeyspaceInfo(keyspaceData string) map[string]keyspaceInfo { - keyspaceInfoMap := make(map[string]keyspaceInfo) - - for _, v := range strings.Split(keyspaceData, ";") { - tokens := strings.Split(v, ":") - shards, _ := strconv.Atoi(tokens[1]) - replicaTablets, _ := strconv.Atoi(tokens[2]) - schemaFileNames := []string{} - // Make schemafiles argument optional - if len(tokens) > 3 { - f := func(c rune) bool { - return c == ',' - } - schemaFileNames = strings.FieldsFunc(tokens[3], f) - } - - if len(tokens) > 4 { - keyspaceInfoMap[tokens[0]] = newKeyspaceInfo(tokens[0], shards, replicaTablets, schemaFileNames, tokens[4]) - } else { - keyspaceInfoMap[tokens[0]] = newKeyspaceInfo(tokens[0], shards, replicaTablets, schemaFileNames, "") - } - } - - return keyspaceInfoMap -} - -func parseExternalDbData(externalDbData string) map[string]externalDbInfo { - externalDbInfoMap := make(map[string]externalDbInfo) - for _, v := range strings.Split(externalDbData, ";") { - tokens := strings.Split(v, ":") - if len(tokens) > 1 { - externalDbInfoMap[tokens[0]] = - newExternalDbInfo(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5]) - } - } - - return externalDbInfoMap -} - -func main() { - flag.Parse() - keyspaceInfoMap := parseKeyspaceInfo(*keyspaceData) - externalDbInfoMap := parseExternalDbData(*externalDbData) - vtOpts := vtOptions{ - webPort: *webPort, - gRpcPort: *gRpcPort, - mySqlPort: *mySqlPort, - topologyFlags: *topologyFlags, - cell: *cell, - } - - // Write schemaFile. - for k, v := range keyspaceInfoMap { - if _, ok := externalDbInfoMap[k]; !ok { - v.schemaFile = createFile(fmt.Sprintf("%s%s_schema_file.sql", tablesPath, v.keyspace)) - appendToSqlFile(v.schemaFileNames, v.schemaFile) - closeFile(v.schemaFile) - } - } - - // Vschema Patching - for k, keyspaceData := range keyspaceInfoMap { - vSchemaFile := readFile(*baseVschemaFile) - if keyspaceData.shards == 0 { - vSchemaFile = applyJsonInMemoryPatch(vSchemaFile, `[{"op": "replace","path": "/sharded", "value": false}]`) - } - - // Check if it is an external_db - if _, ok := externalDbInfoMap[k]; ok { - //This is no longer necessary, but we'll keep it for reference - //https://github.com/vitessio/vitess/pull/4868, https://github.com/vitessio/vitess/pull/5010 - //vSchemaFile = applyJsonInMemoryPatch(vSchemaFile,`[{"op": "add","path": "/tables/*", "value": {}}]`) - } else { - var primaryTableColumns map[string]string - vSchemaFile, primaryTableColumns = addTablesVschemaPatch(vSchemaFile, keyspaceData.schemaFileNames) - - if keyspaceData.useLookups { - lookup := keyspaceInfoMap[keyspaceData.lookupKeyspace] - vSchemaFile = addLookupDataToVschema(vSchemaFile, lookup.schemaFileNames, primaryTableColumns, lookup.keyspace) - } - } - - writeVschemaFile(vSchemaFile, fmt.Sprintf("%s_vschema.json", keyspaceData.keyspace)) - } - - // Docker Compose File Patches - dockerComposeFile := readFile(*baseDockerComposeFile) - dockerComposeFile = applyDockerComposePatches(dockerComposeFile, keyspaceInfoMap, externalDbInfoMap, vtOpts) - writeFile(dockerComposeFile, "docker-compose.yml") -} - -func applyFilePatch(dockerYaml []byte, patchFile string) []byte { - yamlPatch, err := os.ReadFile(patchFile) - if err != nil { - log.Fatalf("reading yaml patch file %s: %s", patchFile, err) - } - - patch, err := yamlpatch.DecodePatch(yamlPatch) - if err != nil { - log.Fatalf("decoding patch failed: %s", err) - } - - bs, err := patch.Apply(dockerYaml) - if err != nil { - log.Fatalf("applying patch failed: %s", err) - } - return bs -} - -func applyJsonInMemoryPatch(vSchemaFile []byte, patchString string) []byte { - patch, err := jsonpatch.DecodePatch([]byte(patchString)) - if err != nil { - log.Fatalf("decoding vschema patch failed: %s", err) - } - - modified, err := patch.Apply(vSchemaFile) - if err != nil { - log.Fatalf("applying vschema patch failed: %s", err) - } - return modified -} - -func applyInMemoryPatch(dockerYaml []byte, patchString string) []byte { - patch, err := yamlpatch.DecodePatch([]byte(patchString)) - if err != nil { - log.Fatalf("decoding patch failed: %s", err) - } - - bs, err := patch.Apply(dockerYaml) - if err != nil { - log.Fatalf("applying patch failed: %s", err) - } - return bs -} - -func createFile(filePath string) *os.File { - f, err := os.Create(filePath) - if err != nil { - log.Fatalf("creating %s %s", filePath, err) - } - return f -} - -func readFile(filePath string) []byte { - file, err := os.ReadFile(filePath) - - if err != nil { - log.Fatalf("reading %s: %s", filePath, err) - } - - return file -} - -func closeFile(file *os.File) { - err := file.Close() - if err != nil { - log.Fatalf("Closing schema_file.sql %s", err) - } -} - -func handleError(err error) { - if err != nil { - log.Fatalf("Error: %s", err) - } -} - -func appendToSqlFile(schemaFileNames []string, f *os.File) { - for _, file := range schemaFileNames { - data, err := os.ReadFile(tablesPath + file) - if err != nil { - log.Fatalf("reading %s: %s", tablesPath+file, err) - } - - _, err = f.Write(data) - handleError(err) - - _, err = f.WriteString("\n\n") - handleError(err) - - err = f.Sync() - handleError(err) - } -} - -func getTableName(sqlFile string) string { - sqlFileData, err := os.ReadFile(sqlFile) - if err != nil { - log.Fatalf("reading sqlFile file %s: %s", sqlFile, err) - } - - r, _ := regexp.Compile("CREATE TABLE ([a-z_-]*) \\(") - rs := r.FindStringSubmatch(string(sqlFileData)) - // replace all ` from table name if exists - return strings.ReplaceAll(rs[1], "`", "") -} - -func getPrimaryKey(sqlFile string) string { - sqlFileData, err := os.ReadFile(sqlFile) - if err != nil { - log.Fatalf("reading sqlFile file %s: %s", sqlFile, err) - } - - r, _ := regexp.Compile("PRIMARY KEY \\((.*)\\).*") - rs := r.FindStringSubmatch(string(sqlFileData)) - - return rs[1] -} - -func getKeyColumns(sqlFile string) string { - sqlFileData, err := os.ReadFile(sqlFile) - if err != nil { - log.Fatalf("reading sqlFile file %s: %s", sqlFile, err) - } - - r, _ := regexp.Compile("[^PRIMARY] (KEY|UNIQUE KEY) .*\\((.*)\\).*") - rs := r.FindStringSubmatch(string(sqlFileData)) - // replace all ` from column names if exists - return strings.ReplaceAll(rs[2], "`", "") -} - -func addTablesVschemaPatch(vSchemaFile []byte, schemaFileNames []string) ([]byte, map[string]string) { - indexedColumns := "" - primaryTableColumns := make(map[string]string) - for _, fileName := range schemaFileNames { - tableName := getTableName(tablesPath + fileName) - indexedColumns = getPrimaryKey(tablesPath + fileName) - firstColumnName := strings.Split(indexedColumns, ", ")[0] - vSchemaFile = applyJsonInMemoryPatch(vSchemaFile, generatePrimaryVIndex(tableName, firstColumnName, "hash")) - primaryTableColumns[tableName] = firstColumnName - } - - return vSchemaFile, primaryTableColumns -} - -func addLookupDataToVschema( - vSchemaFile []byte, - schemaFileNames []string, - primaryTableColumns map[string]string, - keyspace string, -) []byte { - for _, fileName := range schemaFileNames { - tableName := fileName[7 : len(fileName)-4] - lookupTableOwner := "" - - // Find owner of lookup table - for primaryTableName := range primaryTableColumns { - if strings.HasPrefix(tableName, primaryTableName) && len(primaryTableName) > len(lookupTableOwner) { - lookupTableOwner = primaryTableName - } - } - - indexedColumns := getKeyColumns(tablesPath + fileName) - firstColumnName := strings.Split(indexedColumns, ", ")[0] - - // Lookup patch under "tables" - vSchemaFile = applyJsonInMemoryPatch(vSchemaFile, addToColumnVIndexes(lookupTableOwner, firstColumnName, tableName)) - - // Generate Vschema lookup hash types - lookupHash := generateVschemaLookupHash(tableName, keyspace, firstColumnName, primaryTableColumns[lookupTableOwner], lookupTableOwner) - vSchemaFile = applyJsonInMemoryPatch(vSchemaFile, lookupHash) - } - - return vSchemaFile -} - -func writeVschemaFile(file []byte, fileName string) { - // Format json file - var buf bytes.Buffer - err := json.Indent(&buf, file, "", "\t") - handleError(err) - file = buf.Bytes() - - writeFile(file, fileName) -} - -func writeFile(file []byte, fileName string) { - err := os.WriteFile(fileName, file, 0644) - if err != nil { - log.Fatalf("writing %s %s", fileName, err) - } -} - -func applyKeyspaceDependentPatches( - dockerComposeFile []byte, - keyspaceData keyspaceInfo, - externalDbInfoMap map[string]externalDbInfo, - opts vtOptions, -) []byte { - var externalDbInfo externalDbInfo - if val, ok := externalDbInfoMap[keyspaceData.keyspace]; ok { - externalDbInfo = val - } - tabAlias := 0 + tabletsUsed*100 - shard := "-" - var primaryTablets []string - if tabletsUsed == 0 { - primaryTablets = append(primaryTablets, "101") - } else { - primaryTablets = append(primaryTablets, strconv.Itoa((tabletsUsed+1)*100+1)) - } - interval := int(math.Floor(256 / float64(keyspaceData.shards))) - - for i := 1; i < keyspaceData.shards; i++ { - primaryTablets = append(primaryTablets, strconv.Itoa((i+1)*100+1)) - } - - schemaLoad := generateSchemaload(primaryTablets, "", keyspaceData.keyspace, externalDbInfo, opts) - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, schemaLoad) - - // Append Primary and Replica Tablets - if keyspaceData.shards < 2 { - tabAlias = tabAlias + 100 - dockerComposeFile = applyTabletPatches(dockerComposeFile, tabAlias, shard, keyspaceData, externalDbInfoMap, opts) - dockerComposeFile = applyShardPatches(dockerComposeFile, tabAlias, shard, keyspaceData, externalDbInfoMap, opts) - } else { - // Determine shard range - for i := 0; i < keyspaceData.shards; i++ { - if i == 0 { - shard = fmt.Sprintf("-%x", interval) - } else if i == (keyspaceData.shards - 1) { - shard = fmt.Sprintf("%x-", interval*i) - } else { - shard = fmt.Sprintf("%x-%x", interval*(i), interval*(i+1)) - } - tabAlias = tabAlias + 100 - dockerComposeFile = applyTabletPatches(dockerComposeFile, tabAlias, shard, keyspaceData, externalDbInfoMap, opts) - dockerComposeFile = applyShardPatches(dockerComposeFile, tabAlias, shard, keyspaceData, externalDbInfoMap, opts) - } - } - - tabletsUsed += len(primaryTablets) - return dockerComposeFile -} - -func applyDefaultDockerPatches( - dockerComposeFile []byte, - keyspaceInfoMap map[string]keyspaceInfo, - externalDbInfoMap map[string]externalDbInfo, - opts vtOptions, -) []byte { - - var dbInfo externalDbInfo - // This is a workaround to check if there are any externalDBs defined - for _, keyspaceData := range keyspaceInfoMap { - if val, ok := externalDbInfoMap[keyspaceData.keyspace]; ok { - dbInfo = val - } - } - - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateVtctld(opts)) - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateVtgate(opts)) - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateVreplication(dbInfo, opts)) - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateVTOrc(dbInfo, opts)) - return dockerComposeFile -} - -func applyDockerComposePatches( - dockerComposeFile []byte, - keyspaceInfoMap map[string]keyspaceInfo, - externalDbInfoMap map[string]externalDbInfo, - vtOpts vtOptions, -) []byte { - // Vtctld, vtgate, vtwork patches. - dockerComposeFile = applyDefaultDockerPatches(dockerComposeFile, keyspaceInfoMap, externalDbInfoMap, vtOpts) - for _, keyspaceData := range keyspaceInfoMap { - dockerComposeFile = applyKeyspaceDependentPatches(dockerComposeFile, keyspaceData, externalDbInfoMap, vtOpts) - } - - return dockerComposeFile -} - -func applyShardPatches( - dockerComposeFile []byte, - tabAlias int, - shard string, - keyspaceData keyspaceInfo, - externalDbInfoMap map[string]externalDbInfo, - opts vtOptions, -) []byte { - var dbInfo externalDbInfo - if val, ok := externalDbInfoMap[keyspaceData.keyspace]; ok { - dbInfo = val - } - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateExternalPrimary(tabAlias, shard, keyspaceData, dbInfo, opts)) - return dockerComposeFile -} - -func generateDefaultShard(tabAlias int, shard string, keyspaceData keyspaceInfo, opts vtOptions) string { - aliases := []int{tabAlias + 1} // primary alias, e.g. 201 - for i := 0; i < keyspaceData.replicaTablets; i++ { - aliases = append(aliases, tabAlias+2+i) // replica aliases, e.g. 202, 203, ... - } - tabletDepends := make([]string, len(aliases)) - for i, tabletId := range aliases { - tabletDepends[i] = fmt.Sprintf("vttablet%d: {condition : service_healthy}", tabletId) - } - // Wait on all shard tablets to be healthy - dependsOn := "depends_on: {" + strings.Join(tabletDepends, ", ") + "}" - - return fmt.Sprintf(` -- op: add - path: /services/init_shard_primary%[2]d - value: - image: vitess/lite:${VITESS_TAG:-latest} - command: ["sh", "-c", "/vt/bin/vtctlclient %[5]s InitShardPrimary -force %[4]s/%[3]s %[6]s-%[2]d "] - %[1]s -`, dependsOn, aliases[0], shard, keyspaceData.keyspace, opts.topologyFlags, opts.cell) -} - -func generateExternalPrimary( - tabAlias int, - shard string, - keyspaceData keyspaceInfo, - dbInfo externalDbInfo, - opts vtOptions, -) string { - - aliases := []int{tabAlias + 1} // primary alias, e.g. 201 - for i := 0; i < keyspaceData.replicaTablets; i++ { - aliases = append(aliases, tabAlias+2+i) // replica aliases, e.g. 202, 203, ... - } - - externalPrimaryTab := tabAlias - externalDb := "0" - - if dbInfo.dbName != "" { - externalDb = "1" - } else { - return fmt.Sprintf(``) - } - - return fmt.Sprintf(` -- op: add - path: /services/vttablet%[1]d - value: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15%[1]d:%[3]d" - - "%[4]d" - - "3306" - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS=%[2]s - - WEB_PORT=%[3]d - - GRPC_PORT=%[4]d - - CELL=%[5]s - - SHARD=%[6]s - - KEYSPACE=%[7]s - - ROLE=primary - - VTHOST=vttablet%[1]d - - EXTERNAL_DB=%[8]s - - DB_PORT=%[9]s - - DB_HOST=%[10]s - - DB_USER=%[11]s - - DB_PASS=%[12]s - - DB_CHARSET=%[13]s - command: ["sh", "-c", "[ $$EXTERNAL_DB -eq 1 ] && /script/vttablet-up.sh %[1]d || exit 0"] - depends_on: - - vtctld - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:%[3]d/debug/health"] - interval: 30s - timeout: 10s - retries: 15 -`, externalPrimaryTab, opts.topologyFlags, opts.webPort, opts.gRpcPort, opts.cell, shard, keyspaceData.keyspace, externalDb, dbInfo.dbPort, dbInfo.dbHost, dbInfo.dbUser, dbInfo.dbPass, dbInfo.dbCharset) -} - -func applyTabletPatches( - dockerComposeFile []byte, - tabAlias int, - shard string, - keyspaceData keyspaceInfo, - externalDbInfoMap map[string]externalDbInfo, - opts vtOptions, -) []byte { - var dbInfo externalDbInfo - if val, ok := externalDbInfoMap[keyspaceData.keyspace]; ok { - dbInfo = val - } - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateDefaultTablet(tabAlias+1, shard, "primary", keyspaceData.keyspace, dbInfo, opts)) - for i := 0; i < keyspaceData.replicaTablets; i++ { - dockerComposeFile = applyInMemoryPatch(dockerComposeFile, generateDefaultTablet(tabAlias+2+i, shard, "replica", keyspaceData.keyspace, dbInfo, opts)) - } - return dockerComposeFile -} - -func generateDefaultTablet(tabAlias int, shard, role, keyspace string, dbInfo externalDbInfo, opts vtOptions) string { - externalDb := "0" - if dbInfo.dbName != "" { - externalDb = "1" - } - - return fmt.Sprintf(` -- op: add - path: /services/vttablet%[1]d - value: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15%[1]d:%[4]d" - - "%[5]d" - - "3306" - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS=%[7]s - - WEB_PORT=%[4]d - - GRPC_PORT=%[5]d - - CELL=%[8]s - - KEYSPACE=%[6]s - - SHARD=%[2]s - - ROLE=%[3]s - - VTHOST=vttablet%[1]d - - EXTERNAL_DB=%[9]s - - DB_PORT=%[10]s - - DB_HOST=%[11]s - - DB_USER=%[12]s - - DB_PASS=%[13]s - - DB_CHARSET=%[14]s - command: ["sh", "-c", "/script/vttablet-up.sh %[1]d"] - depends_on: - - vtctld - healthcheck: - test: ["CMD-SHELL","curl -s --fail --show-error localhost:%[4]d/debug/health"] - interval: 30s - timeout: 10s - retries: 15 -`, tabAlias, shard, role, opts.webPort, opts.gRpcPort, keyspace, opts.topologyFlags, opts.cell, externalDb, dbInfo.dbPort, dbInfo.dbHost, dbInfo.dbUser, dbInfo.dbPass, dbInfo.dbCharset) -} - -func generateVtctld(opts vtOptions) string { - return fmt.Sprintf(` -- op: add - path: /services/vtctld - value: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15000:%[1]d" - - "%[2]d" - command: ["sh", "-c", " /vt/bin/vtctld \ - %[3]s \ - -cell %[4]s \ - -service_map 'grpc-vtctl' \ - -backup_storage_implementation file \ - -file_backup_storage_root /vt/vtdataroot/backups \ - -logtostderr=true \ - -port %[1]d \ - -grpc_port %[2]d \ - "] - volumes: - - .:/script - depends_on: - - consul1 - - consul2 - - consul3 - depends_on: - external_db_host: - condition: service_healthy -`, opts.webPort, opts.gRpcPort, opts.topologyFlags, opts.cell) -} - -func generateVtgate(opts vtOptions) string { - return fmt.Sprintf(` -- op: add - path: /services/vtgate - value: - image: vitess/lite:${VITESS_TAG:-latest} - ports: - - "15099:%[1]d" - - "%[2]d" - - "15306:%[3]d" - command: ["sh", "-c", "/script/run-forever.sh /vt/bin/vtgate \ - %[4]s \ - --logtostderr=true \ - --port %[1]d \ - --grpc_port %[2]d \ - --mysql_server_port %[3]d \ - --mysql_auth_server_impl none \ - --cell %[5]s \ - --cells_to_watch %[5]s \ - --tablet_types_to_wait PRIMARY,REPLICA,RDONLY \ - --service_map 'grpc-vtgateservice' \ - --normalize_queries=true \ - "] - volumes: - - .:/script - depends_on: - - vtctld -`, opts.webPort, opts.gRpcPort, opts.mySqlPort, opts.topologyFlags, opts.cell) -} - -func generateVTOrc(dbInfo externalDbInfo, opts vtOptions) string { - externalDb := "0" - if dbInfo.dbName != "" { - externalDb = "1" - } - return fmt.Sprintf(` -- op: add - path: /services/vtorc - value: - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS=%[1]s - - EXTERNAL_DB=%[2]s - - DB_USER=%[3]s - - DB_PASS=%[4]s - ports: - - "13000:3000" - command: ["sh", "-c", "/script/vtorc-up.sh"] - depends_on: - - vtctld -`, opts.topologyFlags, externalDb, dbInfo.dbUser, dbInfo.dbPass) -} - -func generateVreplication(dbInfo externalDbInfo, opts vtOptions) string { - externalDb := "0" - if dbInfo.dbName != "" { - externalDb = "1" - } - return fmt.Sprintf(` -- op: add - path: /services/vreplication - value: - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS=%[1]s - - EXTERNAL_DB=%[2]s - command: ["sh", "-c", "[ $$EXTERNAL_DB -eq 1 ] && /script/externaldb_vreplication.sh || exit 0"] - depends_on: - - vtctld -`, opts.topologyFlags, externalDb) -} - -func generateSchemaload( - tabletAliases []string, - postLoadFile string, - keyspace string, - dbInfo externalDbInfo, - opts vtOptions, -) string { - targetTab := tabletAliases[0] - schemaFileName := fmt.Sprintf("%s_schema_file.sql", keyspace) - externalDb := "0" - - if dbInfo.dbName != "" { - schemaFileName = "" - externalDb = "1" - } - - // Formatting for list in yaml - for i, tabletId := range tabletAliases { - tabletAliases[i] = "vttablet" + tabletId + ": " + "{condition : service_healthy}" - } - dependsOn := "depends_on: {" + strings.Join(tabletAliases, ", ") + "}" - - return fmt.Sprintf(` -- op: add - path: /services/schemaload_%[7]s - value: - image: vitess/lite:${VITESS_TAG:-latest} - volumes: - - ".:/script" - environment: - - TOPOLOGY_FLAGS=%[3]s - - WEB_PORT=%[4]d - - GRPC_PORT=%[5]d - - CELL=%[6]s - - KEYSPACE=%[7]s - - TARGETTAB=%[6]s-0000000%[2]s - - SLEEPTIME=15 - - VSCHEMA_FILE=%[7]s_vschema.json - - SCHEMA_FILES=%[9]s - - POST_LOAD_FILE=%[8]s - - EXTERNAL_DB=%[10]s - command: ["sh", "-c", "/script/schemaload.sh"] - %[1]s -`, dependsOn, targetTab, opts.topologyFlags, opts.webPort, opts.gRpcPort, opts.cell, keyspace, postLoadFile, schemaFileName, externalDb) -} - -func generatePrimaryVIndex(tableName, column, name string) string { - return fmt.Sprintf(` -[{"op": "add", -"path": "/tables/%[1]s", -"value": - {"column_vindexes": [ - { - "column": "%[2]s", - "name": "%[3]s" - } - ]} -}] -`, tableName, column, name) -} - -func generateVschemaLookupHash(tableName, tableKeyspace, from, to, owner string) string { - return fmt.Sprintf(` -[{"op": "add", -"path": "/vindexes/%[1]s", -"value": - {"type": "lookup_hash", - "params": { - "table": "%[2]s.%[1]s", - "from": "%[3]s", - "to": "%[4]s", - "autocommit": "true" - }, - "owner": "%[5]s" - } -}] -`, tableName, tableKeyspace, from, to, owner) -} - -func addToColumnVIndexes(tableName, column, referenceName string) string { - return fmt.Sprintf(` -[{"op": "add", -"path": "/tables/%[1]s/column_vindexes/-", -"value": - { - "column": "%[2]s", - "name": "%[3]s" - } -}] -`, tableName, column, referenceName) -} diff --git a/vitess-mixin/e2e/vtcompose/vtcompose_test.go b/vitess-mixin/e2e/vtcompose/vtcompose_test.go deleted file mode 100644 index 8e5cfaa2b89..00000000000 --- a/vitess-mixin/e2e/vtcompose/vtcompose_test.go +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2019 The Vitess Authors. - - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - - * http://www.apache.org/licenses/LICENSE-2.0 - - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package main - -import ( - "fmt" - "strconv" - "testing" - - "github.com/stretchr/testify/assert" -) - -var ( - referenceYaml = string(readFile("./docker-compose.test.yml")) - testComposeFile = readFile("./docker-compose.base.yml") - testKeyspaceInfoMap = parseKeyspaceInfo(DefaultKeyspaceData) - testExternalDbInfoMap = parseExternalDbData(DefaultExternalDbData) - - testVtOpts = vtOptions{ - webPort: DefaultWebPort, - gRpcPort: DefaultGrpcPort, - mySqlPort: DefaultMysqlPort, - topologyFlags: DefaultTopologyFlags, - cell: DefaultCell, - } -) - -func TestGenerateCorrectFileWithDefaultOpts(t *testing.T) { - baseFile := testComposeFile - finalFile := applyDockerComposePatches(baseFile, testKeyspaceInfoMap, testExternalDbInfoMap, testVtOpts) - - yamlString := string(finalFile) - assert.YAMLEq(t, referenceYaml, yamlString) -} - -func TestOptsAppliedThroughoutGeneratedFile(t *testing.T) { - baseFile := testComposeFile - options := vtOptions{ - webPort: 55_555, - gRpcPort: 66_666, - mySqlPort: 77_777, - topologyFlags: "-custom -flags", - cell: "custom cell", - } - finalFile := applyDockerComposePatches(baseFile, testKeyspaceInfoMap, testExternalDbInfoMap, options) - yamlString := string(finalFile) - - // These asserts are not exhaustive, but should cover most cases. - assert.NotContains(t, yamlString, strconv.Itoa(DefaultWebPort)) - assert.Contains(t, yamlString, strconv.Itoa(options.webPort)) - - assert.NotContains(t, yamlString, strconv.Itoa(DefaultGrpcPort)) - assert.Contains(t, yamlString, strconv.Itoa(options.gRpcPort)) - - assert.NotContains(t, yamlString, ":"+strconv.Itoa(DefaultMysqlPort)) - assert.Contains(t, yamlString, ":"+strconv.Itoa(options.webPort)) - - assert.NotContains(t, yamlString, fmt.Sprintf("-cell %s", DefaultCell)) - assert.Contains(t, yamlString, fmt.Sprintf("-cell %s", options.cell)) - - assert.Contains(t, yamlString, fmt.Sprintf("- TOPOLOGY_FLAGS=%s", options.topologyFlags)) - assert.NotContains(t, yamlString, DefaultTopologyFlags) -} diff --git a/vitess-mixin/e2e/vtorc-up.sh b/vitess-mixin/e2e/vtorc-up.sh deleted file mode 100755 index 9d71831c3ea..00000000000 --- a/vitess-mixin/e2e/vtorc-up.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -# Copyright 2020 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -u - -external=${EXTERNAL_DB:-0} -config=${VTORC_CONFIG:-/vt/vtorc/config.json} -# Copy config directory -cp -R /script/vtorc /vt -# Update credentials -if [ $external = 1 ] ; then - # Terrible substitution but we don't have jq in this image - # This can be overridden by passing VTORC_CONFIG env variable - echo "Updating $config..." - cp /vt/vtorc/default.json /vt/vtorc/tmp.json - sed -i '/MySQLTopologyUser/c\ \"MySQLTopologyUser\" : \"'"$DB_USER"'\",' /vt/vtorc/tmp.json - sed -i '/MySQLTopologyPassword/c\ \"MySQLTopologyPassword\" : \"'"$DB_PASS"'\",' /vt/vtorc/tmp.json - sed -i '/MySQLReplicaUser/c\ \"MySQLReplicaUser\" : \"'"$DB_USER"'\",' /vt/vtorc/tmp.json - sed -i '/MySQLReplicaPassword/c\ \"MySQLReplicaPassword\" : \"'"$DB_PASS"'\",' /vt/vtorc/tmp.json - cat /vt/vtorc/tmp.json - cp /vt/vtorc/tmp.json /vt/vtorc/config.json -else - cp /vt/vtorc/default.json /vt/vtorc/config.json -fi - -echo "Starting vtorc..." -exec /vt/bin/vtorc \ -$TOPOLOGY_FLAGS \ --logtostderr=true \ --config $config diff --git a/vitess-mixin/e2e/vtorc/default.json b/vitess-mixin/e2e/vtorc/default.json deleted file mode 100644 index e0a03884c99..00000000000 --- a/vitess-mixin/e2e/vtorc/default.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Debug": true, - "EnableSyslog": false, - "MySQLTopologyUser": "orc_client_user", - "MySQLTopologyPassword": "orc_client_user_password", - "MySQLReplicaUser": "vt_repl", - "MySQLReplicaPassword": "", - "BackendDB": "sqlite", - "SQLite3DataFile": "/tmp/vtorc.sqlite3", - "RecoverMasterClusterFilters": ["*"], - "RecoveryPeriodBlockSeconds": 5, - "DelayMasterPromotionIfSQLThreadNotUpToDate": true -} diff --git a/vitess-mixin/e2e/vttablet-up.sh b/vitess-mixin/e2e/vttablet-up.sh deleted file mode 100755 index 0bc9d7a629d..00000000000 --- a/vitess-mixin/e2e/vttablet-up.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/bin/bash - -# Copyright 2020 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -u -export VTROOT=/vt -export VTDATAROOT=/vt/vtdataroot - -keyspace=${KEYSPACE:-'test_keyspace'} -shard=${SHARD:-'0'} -grpc_port=${GRPC_PORT:-'15999'} -web_port=${WEB_PORT:-'8080'} -role=${ROLE:-'replica'} -vthost=${VTHOST:-`hostname -i`} -sleeptime=${SLEEPTIME:-'0'} -uid=$1 -external=${EXTERNAL_DB:-0} - -# If DB is not explicitly set, we default to behaviour of prefixing with vt_ -# If there is an external db, the db_nmae will always match the keyspace name -[ $external = 0 ] && db_name=${DB:-"vt_$keyspace"} || db_name=${DB:-"$keyspace"} -db_charset=${DB_CHARSET:-''} -tablet_hostname='' - -# Use IPs to simplify connections when testing in docker. -# Otherwise, blank hostname means the tablet auto-detects FQDN. -# This is now set further up - -printf -v alias '%s-%010d' $CELL $uid -printf -v tablet_dir 'vt_%010d' $uid - -tablet_role=$role -tablet_type='replica' - -# Make every 3rd tablet rdonly -if (( $uid % 100 % 3 == 0 )) ; then - tablet_type='rdonly' -fi - -# Consider every tablet with %d00 as external primary -if [ $external = 1 ] && (( $uid % 100 == 0 )) ; then - tablet_type='replica' - tablet_role='externalprimary' - keyspace="ext_$keyspace" -fi - -# Copy config directory -cp -R /script/config $VTROOT -init_db_sql_file="$VTROOT/config/init_db.sql" -# Clear in-place edits of init_db_sql_file if any exist -sed -i '/##\[CUSTOM_SQL/{:a;N;/END\]##/!ba};//d' $init_db_sql_file - -echo "##[CUSTOM_SQL_START]##" >> $init_db_sql_file - -if [ "$external" = "1" ]; then - # We need a common user for the unmanaged and managed tablets else tools like orchestrator will not function correctly - echo "Creating matching user for managed tablets..." - echo "CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS';" >> $init_db_sql_file - echo "GRANT ALL ON *.* TO '$DB_USER'@'%';" >> $init_db_sql_file -fi -echo "##[CUSTOM_SQL_END]##" >> $init_db_sql_file - -echo "##[CUSTOM_SQL_END]##" >> $init_db_sql_file - -mkdir -p $VTDATAROOT/backups - - -export KEYSPACE=$keyspace -export SHARD=$shard -export TABLET_ID=$alias -export TABLET_DIR=$tablet_dir -export MYSQL_PORT=3306 -export TABLET_ROLE=$tablet_role -export DB_PORT=${DB_PORT:-3306} -export DB_HOST=${DB_HOST:-""} -export DB_NAME=$db_name - -# Delete socket files before running mysqlctld if exists. -# This is the primary reason for unhealthy state on restart. -# https://github.com/vitessio/vitess/pull/5115/files -echo "Removing $VTDATAROOT/$tablet_dir/{mysql.sock,mysql.sock.lock}..." -rm -rf $VTDATAROOT/$tablet_dir/{mysql.sock,mysql.sock.lock} - -# Create mysql instances -# Do not create mysql instance for primary if connecting to external mysql database -if [[ $tablet_role != "externalprimary" ]]; then - echo "Initing mysql for tablet: $uid role: $role external: $external.. " - $VTROOT/bin/mysqlctld \ - --init_db_sql_file=$init_db_sql_file \ - --logtostderr=true \ - --tablet_uid=$uid \ - & -fi - -sleep $sleeptime - -# Create the cell -# https://vitess.io/blog/2020-04-27-life-of-a-cluster/ -$VTROOT/bin/vtctlclient --server vtctld:$GRPC_PORT -- AddCellInfo --root vitess/$CELL --server_address consul1:8500 $CELL || true - -#Populate external db conditional args -if [ $tablet_role = "externalprimary" ]; then - echo "Setting external db args for primary: $DB_NAME" - external_db_args="--db_host $DB_HOST \ - --db_port $DB_PORT \ - --init_db_name_override $DB_NAME \ - --init_tablet_type $tablet_type \ - --mycnf_server_id $uid \ - --db_app_user $DB_USER \ - --db_app_password $DB_PASS \ - --db_allprivs_user $DB_USER \ - --db_allprivs_password $DB_PASS \ - --db_appdebug_user $DB_USER \ - --db_appdebug_password $DB_PASS \ - --db_dba_user $DB_USER \ - --db_dba_password $DB_PASS \ - --db_filtered_user $DB_USER \ - --db_filtered_password $DB_PASS \ - --db_repl_user $DB_USER \ - --db_repl_password $DB_PASS \ - --enable_replication_reporter=false \ - --enforce_strict_trans_tables=false \ - --track_schema_versions=true \ - --watch_replication_stream=true" -else - external_db_args="--init_db_name_override $DB_NAME \ - --init_tablet_type $tablet_type \ - --enable_replication_reporter=true \ - --restore_from_backup" -fi - - -echo "Starting vttablet..." -exec $VTROOT/bin/vttablet \ - $TOPOLOGY_FLAGS \ - --logtostderr=true \ - --tablet-path $alias \ - --tablet_hostname "$vthost" \ - --health_check_interval 5s \ - --disable_active_reparents=true \ - --port $web_port \ - --grpc_port $grpc_port \ - --service_map 'grpc-queryservice,grpc-tabletmanager,grpc-updatestream' \ - --init_keyspace $keyspace \ - --init_shard $shard \ - --backup_storage_implementation file \ - --file_backup_storage_root $VTDATAROOT/backups \ - --queryserver-config-schema-reload-time 60 \ - $external_db_args diff --git a/vitess-mixin/go.mod b/vitess-mixin/go.mod deleted file mode 100644 index 5659ed4be57..00000000000 --- a/vitess-mixin/go.mod +++ /dev/null @@ -1,132 +0,0 @@ -module vitess-mixin - -go 1.23.0 - -require ( - github.com/evanphx/json-patch v5.9.0+incompatible - github.com/google/go-jsonnet v0.16.0 - github.com/jsonnet-bundler/jsonnet-bundler v0.4.0 - github.com/krishicks/yaml-patch v0.0.10 - // Believe it or not, this is actually version 2.13.1 - // See https://github.com/prometheus/prometheus/issues/5590#issuecomment-546368944 - github.com/prometheus/prometheus v1.8.2-0.20191017095924-6f92ce560538 - github.com/stretchr/testify v1.9.0 - vitess.io/vitess v0.19.4 -) - -require ( - cloud.google.com/go/compute v1.25.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - github.com/Azure/azure-sdk-for-go v23.2.0+incompatible // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.1 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect - github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.50.32 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/edsrzf/mmap-go v1.0.0 // indirect - github.com/emicklei/go-restful/v3 v3.10.1 // indirect - github.com/fatih/color v1.16.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-kit/kit v0.9.0 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/glog v1.2.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gophercloud/gophercloud v0.3.0 // indirect - github.com/hashicorp/consul/api v1.28.2 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.6.2 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/golang-lru v1.0.2 // indirect - github.com/hashicorp/serf v0.10.1 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/jpillora/backoff v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.41 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect - github.com/nxadm/tail v1.4.11 // indirect - github.com/oklog/ulid v1.3.1 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.49.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75 // indirect - github.com/spf13/pflag v1.0.5 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.168.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 // indirect - google.golang.org/grpc v1.62.1 // indirect - google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect - gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.26.1 // indirect - k8s.io/apimachinery v0.26.1 // indirect - k8s.io/client-go v0.26.1 // indirect - k8s.io/klog/v2 v2.90.0 // indirect - k8s.io/kube-openapi v0.0.0-20230202010329-39b3636cbaa3 // indirect - k8s.io/utils v0.0.0-20230115233650-391b47cb4029 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) - -replace k8s.io/client-go v2.0.0-alpha.0.0.20181121191925-a47917edff34+incompatible => k8s.io/client-go v2.0.0-alpha.1+incompatible diff --git a/vitess-mixin/go.sum b/vitess-mixin/go.sum deleted file mode 100644 index 73171b17f6a..00000000000 --- a/vitess-mixin/go.sum +++ /dev/null @@ -1,908 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go/compute v1.25.0 h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU= -cloud.google.com/go/compute v1.25.0/go.mod h1:GR7F0ZPZH8EhChlMo9FkLd7eUTwEymjqQagxzilIxIE= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= -github.com/Azure/azure-sdk-for-go v23.2.0+incompatible h1:bch1RS060vGpHpY3zvQDV4rOiRw25J1zmR/B9a76aSA= -github.com/Azure/azure-sdk-for-go v23.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v11.2.8+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.1 h1:eVvIXUKiTgv++6YnWb42DUA1YL7qDugnKP0HljexdnQ= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8= -github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= -github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-sdk-go v1.23.12/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.50.32 h1:POt81DvegnpQKM4DMDLlHz1CO6OBnEoQ1gRhYFd7QRY= -github.com/aws/aws-sdk-go v1.50.32/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= -github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v0.0.0-20181017004759-096ff4a8a059/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= -github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.17.2/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.17.2/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.18.0/go.mod h1:uI6pHuxWYTy94zZxgcwJkUWa9wbIlhteGfloI10GD4U= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.3/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.17.2/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.4/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.17.2/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-jsonnet v0.16.0 h1:Nb4EEOp+rdeGGyB1rQ5eisgSAqrTnhf9ip+X6lzZbY0= -github.com/google/go-jsonnet v0.16.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70 h1:XTnP8fJpa4Kvpw2qARB4KS9izqxPS0Sd92cDlY3uk+w= -github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/gophercloud v0.3.0 h1:6sjpKIpVwRIIwmcEGp+WwNovNsem+c+2vm6oxshRpL8= -github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= -github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= -github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= -github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= -github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= -github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.8.3/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= -github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= -github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/influxdata/influxdb v1.7.7/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= -github.com/jessevdk/go-flags v0.0.0-20180331124232-1c38ed7ad0cc/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= -github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jsonnet-bundler/jsonnet-bundler v0.4.0 h1:4BKZ6LDqPc2wJDmaKnmYD/vDjUptJtnUpai802MibFc= -github.com/jsonnet-bundler/jsonnet-bundler v0.4.0/go.mod h1:/by7P/OoohkI3q4CgSFqcoFsVY+IaNbzOVDknEsKDeU= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/krishicks/yaml-patch v0.0.10 h1:H4FcHpnNwVmw8u0MjPRjWyIXtco6zM2F78t+57oNM3E= -github.com/krishicks/yaml-patch v0.0.10/go.mod h1:Sm5TchwZS6sm7RJoyg87tzxm2ZcKzdRE4Q7TjNhPrME= -github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.6/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= -github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v0.0.0-20170117200651-66bb6560562f/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.4.0 h1:+Ig9nvqgS5OBSACXNk15PLdp0U9XPYROt9CFzVdFGIs= -github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.23.0 h1:/oxKu9c2HVap+F3PfKort2Hw5DEU+HGlW8n+tguWsys= -github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus/alertmanager v0.18.0/go.mod h1:WcxHBl40VSPuOaqWae6l6HpnEOVRIycEJ7i9iYkadEE= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.2.0/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= -github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/prometheus v0.0.0-20180315085919-58e2a31db8de/go.mod h1:oAIUtOny2rjMX0OWN5vPR5/q/twIROJvdqnQKDdil/s= -github.com/prometheus/prometheus v1.8.2-0.20191017095924-6f92ce560538 h1:iyerK9/VU1F02ASqYyIXp60gKxo7ualRoEezXPqbQZE= -github.com/prometheus/prometheus v1.8.2-0.20191017095924-6f92ce560538/go.mod h1:SgN99nHQ/tVJyAuyLKKz6i2j5cJx3eLy9MCRCPOXqUI= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75 h1:cA+Ubq9qEVIQhIWvP2kNuSZ2CmnfBJFSRq+kO1pu2cc= -github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/vfsgen v0.0.0-20180825020608-02ddb050ef6b/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.0.4/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190310054646-10058d7d4faa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180805044716-cb6730876b98/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190918214516-5a1a30219888/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.168.0 h1:MBRe+Ki4mMN93jhDDbpuRLjRddooArz4FeSObvUMmjY= -google.golang.org/api v0.168.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20240304212257-790db918fca8 h1:Fe8QycXyEd9mJgnwB9kmw00WgB43eQ/xYO5C6gceybQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 h1:8eadJkXbwDEMNwcB5O0s5Y5eCfyuCLdvaiOIaGTrWmQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 h1:IR+hp6ypxjH24bkMfEJ0yHR21+gwPWdV+/IBrPQyn3k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/fsnotify/fsnotify.v1 v1.4.7 h1:XNNYLJHt73EyYiCZi6+xjupS9CpvmiDgjPTAjrBlQbo= -gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A= -k8s.io/api v0.0.0-20190813020757-36bff7324fb7/go.mod h1:3Iy+myeAORNCLgjd/Xu9ebwN7Vh59Bw0vh9jhoX+V58= -k8s.io/api v0.26.1 h1:f+SWYiPd/GsiWwVRz+NbFyCgvv75Pk9NK6dlkZgpCRQ= -k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= -k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA= -k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010/go.mod h1:Waf/xTS2FGRrgXCkO5FP3XxTOWh0qLf2QhL1qFZZ/R8= -k8s.io/apimachinery v0.26.1 h1:8EZ/eGJL+hY/MYCNwhmDzVqq2lPl3N3Bo8rvweJwXUQ= -k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= -k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k= -k8s.io/client-go v0.26.1 h1:87CXzYJnAMGaa/IDDfRdhTzxk/wzGZ+/HUQpqgVSZXU= -k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.90.0 h1:VkTxIV/FjRXn1fgNNcKGM8cfmL1Z33ZjXRTVxKCoF5M= -k8s.io/klog/v2 v2.90.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= -k8s.io/kube-openapi v0.0.0-20190722073852-5e22f3d471e6/go.mod h1:RZvgC8MSN6DjiMV6oIfEE9pDL9CYXokkfaCKZeHm3nc= -k8s.io/kube-openapi v0.0.0-20230202010329-39b3636cbaa3 h1:vV3ZKAUX0nMjTflyfVea98dTfROpIxDaEsQws0FT2Ts= -k8s.io/kube-openapi v0.0.0-20230202010329-39b3636cbaa3/go.mod h1:/BYxry62FuDzmI+i9B+X2pqfySRmSOW2ARmj5Zbqhj0= -k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= -k8s.io/utils v0.0.0-20190809000727-6c36bc71fc4a/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20230115233650-391b47cb4029 h1:L8zDtT4jrxj+TaQYD0k8KNlr556WaVQylDXswKmX+dE= -k8s.io/utils v0.0.0-20230115233650-391b47cb4029/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -vitess.io/vitess v0.19.4 h1:fJhZm5RknYbF7YUBXBmcvST/mvA4CeevlI9N0TLlYXA= -vitess.io/vitess v0.19.4/go.mod h1:15uIi9x/Gu+BdDhUR80yP0M1v7aMG2mZQXSd56CE2t0= diff --git a/vitess-mixin/jsonnetfile.json b/vitess-mixin/jsonnetfile.json deleted file mode 100644 index 93f3316ec38..00000000000 --- a/vitess-mixin/jsonnetfile.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "dependencies": [ - { - "source": { - "git": { - "remote": "https://github.com/grafana/grafonnet-lib.git", - "subdir": "grafonnet" - } - }, - "version": "master" - } - ], - "legacyImports": true -} diff --git a/vitess-mixin/lib/alerts.jsonnet b/vitess-mixin/lib/alerts.jsonnet deleted file mode 100644 index d396a38cd71..00000000000 --- a/vitess-mixin/lib/alerts.jsonnet +++ /dev/null @@ -1 +0,0 @@ -std.manifestYamlDoc((import '../mixin.libsonnet').prometheusAlerts) diff --git a/vitess-mixin/lib/dashboards.jsonnet b/vitess-mixin/lib/dashboards.jsonnet deleted file mode 100644 index c260feb80e3..00000000000 --- a/vitess-mixin/lib/dashboards.jsonnet +++ /dev/null @@ -1,10 +0,0 @@ -local dashboards = (import '../mixin.libsonnet').grafanaDashboards; - -local config = (import '../config.libsonnet'); -local deploy_list = config._config.deploy_list; - -{ - [name]: dashboards[name] - for name in std.objectFields(dashboards) - if std.member(dashboards[name].environments, std.extVar('env')) -} diff --git a/vitess-mixin/lib/rules.jsonnet b/vitess-mixin/lib/rules.jsonnet deleted file mode 100644 index 2d7fa91f7ca..00000000000 --- a/vitess-mixin/lib/rules.jsonnet +++ /dev/null @@ -1 +0,0 @@ -std.manifestYamlDoc((import '../mixin.libsonnet').prometheusRules) diff --git a/vitess-mixin/mixin.libsonnet b/vitess-mixin/mixin.libsonnet deleted file mode 100644 index b9831f9380b..00000000000 --- a/vitess-mixin/mixin.libsonnet +++ /dev/null @@ -1,4 +0,0 @@ -(import 'config.libsonnet') + -(import 'alerts/alerts.libsonnet') + -(import 'dashboards/dashboards.libsonnet') + -(import 'rules/rules.libsonnet') diff --git a/vitess-mixin/rules/rules.libsonnet b/vitess-mixin/rules/rules.libsonnet deleted file mode 100644 index 903212ca351..00000000000 --- a/vitess-mixin/rules/rules.libsonnet +++ /dev/null @@ -1,221 +0,0 @@ -// Recording rules can be used to continually evaluate queries and -// store their results as new timeseries. This is commonly used to -// calculate expensive aggregates prior to querying them. You can have -// any number of rules, split across any number of files. -// -// Reference: https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/ -local config = import '../config.libsonnet'; - -{ - prometheusRules+:: { - groups: [ - { - name: 'vitess_mixin_1', - rules: [ - { - record: 'vitess_mixin:vttablet_errors:rate1m', - expr: 'sum (rate(vttablet_errors[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_2', - rules: [ - { - record: 'vitess_mixin:vttablet_query_counts:rate1m', - expr: 'sum (rate(vttablet_query_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_3', - rules: [ - { - record: 'vitess_mixin:mysql_global_status_queries:rate1m', - expr: 'sum (rate(mysql_global_status_queries[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_4', - rules: [ - { - record: 'vitess_mixin:vtgate_api_bucket:rate1m', - expr: 'sum by(le)(rate(vtgate_api_bucket[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_5', - rules: [ - { - record: 'vitess_mixin:vtgate_api_bucket_by_keyspace:rate1m', - expr: 'sum by(le,keyspace)(rate(vtgate_api_bucket[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_6', - rules: [ - { - record: 'vitess_mixin:vtgate_api_error_counts:rate1m', - expr: 'sum (rate(vtgate_api_error_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_7', - rules: [ - { - record: 'vitess_mixin:vtgate_api_count:rate1m', - expr: 'sum (rate(vtgate_api_count[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_8', - rules: [ - { - record: 'vitess_mixin:vtgate_api_error_counts_by_keyspace:rate1m', - expr: 'sum by(keyspace)(rate(vtgate_api_error_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_9', - rules: [ - { - record: 'vitess_mixin:vtgate_api_count_by_keyspace:rate1m', - expr: 'sum by(keyspace)(rate(vtgate_api_count[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_10', - rules: [ - { - record: 'vitess_mixin:vttablet_kills:rate1m', - expr: 'sum by (keyspace,shard)(rate(vttablet_kills[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_11', - rules: [ - { - record: 'vitess_mixin:vtgate_vttablet_call_error_count_byinstance:rate1m', - expr: 'sum by(instance)(rate(vtgate_vttablet_call_error_count[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_12', - rules: [ - { - record: 'vitess_mixin:vtgate_api_error_counts_by_db_type:rate1m', - expr: 'sum by(db_type)(rate(vtgate_api_error_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_13', - rules: [ - { - record: 'vitess_mixin:vtgate_api_count_by_db_type:rate1m', - expr: 'sum by(db_type)(rate(vtgate_api_count[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_14', - rules: [ - { - record: 'vitess_mixin:vtgate_api_bucket_by_db_type:rate1m', - expr: 'sum by(le,db_type)(rate(vtgate_api_bucket[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_15', - rules: [ - { - record: 'vitess_mixin:vtgate_api_error_counts_by_operation:rate1m', - expr: 'sum by(operation)(rate(vtgate_api_error_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_16', - rules: [ - { - record: 'vitess_mixin:vtgate_api_error_counts_by_code:rate1m', - expr: 'sum by(code)(rate(vtgate_api_error_counts[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_17', - rules: [ - { - record: 'vitess_mixin:vttablet_queries_sum_by_keyspace_shard:rate1m', - expr: 'sum by(keyspace,shard)(rate(vttablet_queries_sum[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_18', - rules: [ - { - record: 'vitess_mixin:vttablet_queries_count_by_keyspace_shard:rate1m', - expr: 'sum by(keyspace,shard)(rate(vttablet_queries_count[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_19', - rules: [ - { - record: 'vitess_mixin:vttablet_transactions_bucket_by_keyspace_shard:rate1m', - expr: 'sum by(keyspace,shard,le)(rate(vttablet_transactions_bucket[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_20', - rules: [ - { - record: 'vitess_mixin:process_start_time_seconds_by_instance_job:sum5m', - expr: 'sum by (instance,job) (changes (process_start_time_seconds[5m]))', - }, - ], - }, - { - name: 'vitess_mixin_21', - rules: [ - { - record: 'vitess_mixin:vttablet_kills_by_instance:rate1m', - expr: 'sum by(instance)(rate(vttablet_kills[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_22', - rules: [ - { - record: 'vitess_mixin:vttablet_errors:rate1m', - expr: 'sum by(keyspace,shard,instance,error_code)(rate(vttablet_errors[1m]))', - }, - ], - }, - { - name: 'vitess_mixin_23', - rules: [ - { - record: 'vitess_mixin:vtgate_queries_processed_by_table:rate1m', - expr: 'sum by(keyspace,plan,table) (rate(vtgate_queries_processed_by_table{plan!="Rollback"}[1m]))', - }, - ], - }, - ], - }, -} diff --git a/vitess-mixin/scripts/fmt.sh b/vitess-mixin/scripts/fmt.sh deleted file mode 100755 index e1a5976ee8e..00000000000 --- a/vitess-mixin/scripts/fmt.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash -#/ Usage: fmt [--check] -#/ --check Fail if changed files need changes, do not format in place. - -set -eu - -usage() { - grep '^#/' "$0" | cut -c'4-' >&2 - exit "$1" -} - -if ! [ -x "$(command -v jsonnet)" ] && ! [ -x "$(command -v jsonnetfmt)" ]; then - echo 'jsonnet or jsonnetfmt executable not found' - exit 1 -fi - -if [ -x "$(command -v jsonnetfmt)" ]; then - JSONNET_COMMAND='jsonnetfmt' -else - JSONNET_COMMAND='jsonnet fmt' -fi - -CHECK="false" -EXIT_STATUS=0 -FILES_CHANGED="$(git diff --name-only origin/main --diff-filter=d | grep -E '(jsonnet|TEMPLATE|libsonnet)$' || true)" - -while [ "$#" -gt 0 ]; do - case "$1" in - -c|--check) CHECK="true"; shift;; - *) usage ;; - esac -done - -if [ "${CHECK}" == "true" ]; then - if [ -n "${FILES_CHANGED}" ]; then - for FILE in ${FILES_CHANGED}; do - set +e - echo -n "Checking $FILE: " - ${JSONNET_COMMAND} --test "${FILE}" - EC=$? - if [ ${EC} -ne 0 ]; then - echo "⚠️" - EXIT_STATUS=1 - else - echo "✅" - fi - set -e - done - echo "" - fi - - echo -n "STATUS:" - if [ "$EXIT_STATUS" -eq 0 ]; then - echo "✅" - else - echo "❌" - fi - - exit $EXIT_STATUS - -else - for FILE in $FILES_CHANGED; do - echo -n "Formatting $FILE: " - $JSONNET_COMMAND -n 2 --max-blank-lines 2 --string-style s --comment-style s -i ../$FILE - echo "✅" - done -fi diff --git a/vitess-mixin/scripts/vitess-mixin-plan.sh b/vitess-mixin/scripts/vitess-mixin-plan.sh deleted file mode 100755 index 8c305601956..00000000000 --- a/vitess-mixin/scripts/vitess-mixin-plan.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -if [[ -z "$ENV" || ("${ENV}" != 'dev' && "${ENV}" != 'prod') ]]; then - echo -e "##ERROR\nPlease specify ENV (prod or dev)\nUsage: ENV='prod' ./vitess-mixin-plan.sh" 1>&2 - exit 1 -fi - -export ENVIRONMENT=$ENV - -EXIT_STATUS=0; - -echo "#### Building origin/main" -REPODIR="$(pwd)" -TEMPDIR="$(mktemp -d)" - -cd $TEMPDIR -git clone git@github.com:vitessio/vitess.git > /dev/null 2>&1 -cd vitess/vitess-mixin -jb install > /dev/null 2>&1 -make dashboards_out > /dev/null 2>&1 -make prometheus_rules.yaml > /dev/null 2>&1 -# TODO enalbe when alerts are not empty. -# make prometheus_alerts.yaml > /dev/null 2>&1 - -echo -e "\nDone!\n" - -cd $REPODIR -make dashboards_out > /dev/null 2>&1 -make prometheus_rules.yaml > /dev/null 2>&1 -# TODO enalbe when alerts are not empty. -# make prometheus_alerts.yaml > /dev/null 2>&1 - -branch=$(git rev-parse --abbrev-ref HEAD) -echo -e "#### Diff origin/main with $branch:\n" - -# TODO check prometheus_alerts.yaml - -t="# Checking prometheus_rules.yaml..."; -d=$(diff -urt --label origin/main/prometheus_rules.yaml "$TEMPDIR/vitess/vitess-mixin/prometheus_rules.yaml" --label $branch/prometheus_rules.yaml "prometheus_rules.yaml" 2>/dev/null) -if [ "$?" = "0" ]; -then - echo $t OK -else - echo $t NOK - echo "$d" - EXIT_STATUS=2 -fi - -DASHBOARDS=() -for filename in $(ls dashboards_out) -do - t="# Checking $filename..." - DASHBOARDS+=($filename) - d=$(diff -urt --label origin/main/$filename "$TEMPDIR/vitess/vitess-mixin/dashboards_out/"$filename --label $branch/$filename "dashboards_out/"$filename 2>/dev/null) - if [ "$?" = "0" ]; - then - echo $t OK - else - if [ -e "$TEMPDIR/vitess-mixin/dashboards_out/"$filename ]; - then - echo $t NOK - echo "$d" - else - echo $t "This is a new dashboard not present in origin/main" NOK - fi - EXIT_STATUS=2 - fi -done - -for filename in $(ls $TEMPDIR/vitess/vitess-mixin/dashboards_out) -do - t="# Checking $filename..." - if [[ ! " ${DASHBOARDS[*]} " == *"$filename"* ]]; - then - echo $t This dashboard has been removed NOK ; - EXIT_STATUS=2 - fi -done - -echo -e "\nEXIT STATUS:" -if [ "$EXIT_STATUS" -eq 0 ]; then - echo -e "✅ Your dashboards local version matches the origin/main version" -elif [ "$EXIT_STATUS" -eq 2 ]; then - echo -e "👀 If you are happy with your changes open a PR" -else - echo "❌" - exit 1 -fi - -rm -rf $TEMPDIR diff --git a/vitess-mixin/tools.go b/vitess-mixin/tools.go deleted file mode 100644 index 63cc73e0bbb..00000000000 --- a/vitess-mixin/tools.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:build tools -// +build tools - -package main - -import ( - _ "github.com/google/go-jsonnet/cmd/jsonnet" - _ "github.com/google/go-jsonnet/cmd/jsonnetfmt" - _ "github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb" - _ "github.com/prometheus/prometheus/cmd/promtool" -) diff --git a/vitess-mixin/vitess-mixin-quickstart.md b/vitess-mixin/vitess-mixin-quickstart.md deleted file mode 100644 index e15e6126211..00000000000 --- a/vitess-mixin/vitess-mixin-quickstart.md +++ /dev/null @@ -1,323 +0,0 @@ -# Vitess Mixin QuickStart - -## Table of Contents - -- [Vitess Mixin QuickStart](#vitess-mixin-quickstart) - - [Table of Contents](#table-of-contents) - - [What is the Vitess Mixin](#what-is-the-vitess-mixin) - - [Development](#development) - - [Building](#building) - - [1. Prometheus Recording Rules](#1-prometheus-recording-rules) - - [2. Grafana Dashboards](#2-grafana-dashboards) - - [Formatting](#formatting) - - [Linting](#linting) - - [Cleaning up](#cleaning-up) - - [Define a new Dashboard](#define-a-new-dashboard) - - [Update Existing Dashboards](#update-existing-dashboards) - - [Edit existing resources](#edit-existing-resources) - - [Adding new resources](#adding-new-resources) - - [Test and Deploy](#test-and-deploy) - - [Local Unit Tests with `make all`](#local-unit-tests-with-make-all) - - [Local e2e tests using Cypress (Alpha)](#local-e2e-tests-using-cypress-alpha) - - [Local e2e manual testing using compose (Alpha)](#local-e2e-manual-testing-using-compose-alpha) - -## What is the Vitess Mixin - -Vitess [mixin](https://en.wikipedia.org/wiki/Mixin) is a monitoring mixin defined using [jsonnet](https://jsonnet.org/) data templating language. The grafana `jsonnet` library for creating dashboards is [grafonnet](https://github.com/grafana/grafonnet-lib). While the package manager for easily reusing and extending the mixin is [jsonnet-bundler](https://github.com/jsonnet-bundler/jsonnet-bundler). - -## Development - -If you want to see all available targets run `make help`. - -Choose an IDE of your preference. We use VSCode with `heptio.jsonnet` plugin which includes some nice features like on mouse over documentation and (ctrl+space) autocomplete. - -### Building - -#### 1. Prometheus Recording Rules - - ```shell - $ make prometheus_rules.yaml - # Building 'prometheus_rules.yaml'... - - Done! - ``` - - Once generated the Vitess Mixin Prometheus recording rules are available at `prometheus_rules.yaml`. - - **Note:** The Vitess Mixin only includes recording rules for Prometheus Vitess metrics. Other metric like Prometheus Node are not currently included in the rules. - -#### 2. Grafana Dashboards - -The vitess mixin supports DEV/PROD configurations (Currently it is possible to enable/disable dashboards. And set different alert configurations for DEV/PROD). - - **Prod dashboards**: - - ```shell - $ ENV='prod' make dashboards_out - # Building Grafana dashboards... - - dashboards_out/cluster_overview.json - dashboards_out/vtgate_host_view.json - dashboards_out/vtgate_overview.json - dashboards_out/vttablet_host_view.json - - Done! - ``` - - **Dev dashboards**: - - ```shell - $ ENV=dev make dashboards_out - - # Building Grafana dashboards... - - dashboards_out/cluster_overview.json - dashboards_out/vtgate_host_view.json - dashboards_out/vtgate_overview.json - dashboards_out/vttablet_host_view.json - - Done! - ``` - - Voila!! the generated dashboards definitions in `.json` format are now available under `/dashboards_out`. (**Note**: dev and prod dashboards have the same names and they are stored in the same output folder. It is a good practice to run `make clean` after each build to make sure we are working with a clean `/dashboards_out` folder). - -### Formatting - - ```shell - $ make fmt - # Formatting all .libsonnet and .jsonnet files... - - Formatting dashboards/alerts_memory_events.libsonnet: ✅ - - Done! - ``` - -### Linting - - ```shell - $ make lint - # Linting all .libsonnet and .jsonnet files... - - Checking dashboards/alerts_memory_events.libsonnet: ✅ - - STATUS:✅ - - Done! - - # Linting 'prometheus_rules.yaml' and 'prometheus_alerts.yaml'... - TO BE IMPLEMENTED - Done! - ``` - -### Cleaning up - - ```shell - $ make clean - # Cleaning up all generated files... - - rm -rf dashboards_out prometheus_alerts.yaml prometheus_rules.yaml - - Done! - ``` - -## Define a new Dashboard - - Dashboards are defined in `.libsonnet` format under the `/dashboards` folder. - **Note** Files designed for import by convention end with `.libsonnet`. - - 1. Update the Mixin config to include the new **dashboard metadata** `config.libsonnet`. - The metadata needs to be added under `grafanaDashboardMetadata`. For example for `vtgate-overview dashboard` it looks like this: - - ```bash - vtgateOverview: { - environments: ['dev', 'prod'], - uid: 'vitess-vtgate-overview', - title: 'vtgate - overview %(dashboardNameSuffix)s' % $._config.grafanaDashboardMetadataDefault, - description: 'General vtgate overview', - dashboardTags: $._config.grafanaDashboardMetadataDefault.dashboardTags + ['overview', 'vtgate'], - } - ``` - - **Note**: It is possible to add/remove a dashboard from specific environments using the `environments` array field. - - 2. Define the **dashboard layout**: Create a new `.libsonnet` file following _Naming Convention_ (**TODO** Define a naming convention) in the `/dashboards/layouts` folder. - The dashboard skeleton should look something like this: - - ```js - local helpers = import '../resources/helpers.libsonnet'; - - local config = import '../../config.libsonnet'; - - { - grafanaDashboards+:: { - 'DASHBOARD_NAME.json': - - helpers.dashboard.getDashboard(config._config.grafanaDashboardMetadata.DASHBOARD_NAME) - .addTemplates( - [ - - ] - ).addLink(helpers.default.getDashboardLink(config._config.dashborardLinks)) - .addPanels( - [ - - ], - ), - }, - } - ``` - - 3. Import the new dashboard in the `dashboard.libsonnet` library. - - 4. Add/Edit dashboard resources. - - **Note:** Some of the resources have been grouped in the following categories `vtgate`, `vttablet`, `vtorc`, `webapp`, `os` for convenience. The resources under this categories follow a helper/config pattern. The `.*_helper.libsonnet` libraries within `grafonnet` folder functions to retrieve resources such as `getPanel(panel_name_config)`, reading the configuration by name for the desired resource from the corresponding `.*_config.libsonnet` library . - - **Note:** To isolate **PROD** and **DEV** the configuration files have a section for each environment where we can define specific `notifications`(ex: pagerduty, vitess-alerts...) and `conditions` (alert thresholds). - - In this example the alert has a different notification config. For **PROD** it pages and **DEV** it doesn't: - - ```js - alert: { - name: 'vitess-mixin - # of tablets with MySQL replication lag > 300s', - frequency: '1m', - forDuration: '3m', - noDataState: 'ok', - executionErrorState: 'keep_state', - message: ||| - The number of tablets with MySQL replication lag > 300s is above the threshold. - This usually indicate that replicas are not able to keep up with the write loads on the primary. Please take a look. - |||, - - prod+: { - notifications: [ - { uid: 'alerts-vitess' }, - { uid: 'pagerduty-vitess' }, - ], - conditions: [ - alert_condition.new( - evaluatorParams=[1], - evaluatorType='gt', - operatorType='and', - queryRefId='A', - queryTimeStart='1m', - reducerType='max'), - ], - }, - //override PROD notifications. - dev+: self.prod { - notifications: [ - { uid: 'alerts-vitess' }, - ], - }, - }, - ``` - - **Warning:** Editing existing resources can change other dashboards behavior. Since basic resources like `panels`, `rows`, `texts`... can be shared across dashboards. This can be easily checked running `make all` as explained bellow. - -## Update Existing Dashboards - - Same steps as **Define a new Dashboard** starting from step `.4`. - -### Edit existing resources - - 1. Look for the dashboard you want to edit in the `dashboards/layouts` folder. - 2. Find the resource you want to update in the `dashboards/resources` folder. - -### Adding new resources - - 1. Create the resource in the corresponding location under `dashboards/resources` folder. - 2. Add the resource to the desired layout in `dashboards/layouts`. - -## Test and Deploy - -### Local Unit Tests with `make all` - -These tests attempt to assert truth to the following: - -- Does this mixin generate valid dashboard JSON? -- Does this mixin generate valid recording rules YAML? -- Do the configured elements do what they are expected to do? - -This make target will format, lint, build all generated dashboards and recording rules using `origin/main` and diff with them your `local branch`. Printing a report to the `stdout`. - -```shell - $ pwd - /manfontan/vitess-mixin - $ ENV='prod' make all - #### Building origin/main - - Done! - - #### Diff origin/main with main: - - # Checking prometheus_rules.yaml... OK - # Checking cluster_overview.json... OK - # Checking vtgate_host_view.json... OK - # Checking vtgate_overview.json... OK - # Checking vttablet_host_view.json... OK - - EXIT STATUS: - ✅ Your dashboards local version matches the origin/main version -``` - -The above execution shows the report for a `local branch` matching `origin/main`. Any changes will be reported as **NOK** along with the diff report. This doesn't mean something is wrong it just points that there are changes in your local branch compared to `origin/main` which is expected. Review the diff report and once you are happy with your changes create a PR. - -### Local e2e tests using Cypress (Alpha) - -These tests attempt to assert truth to the following: - -- Are dashboard elements displayed as expected? - -The spec for each dashboard can be found at `/e2e/cypress/integration`. - -`docker-compose` is used to run Cypress and Grafana. There are two targets in -[Makefile](../Makefile) to help run it. - -- `make e2e`: runs tests headless and exits. - -- `make e2e-dev`: opens the [the test -runner](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview) -and exposes Grafana to the host machine - http://localhost:3030. This requires -an X11 server to work. [This -post](https://www.cypress.io/blog/2019/05/02/run-cypress-with-a-single-docker-command/#Interactive-mode) -describes how to set this up with [XQuartz](https://www.xquartz.org/). - -**Note** The dummy Grafana server is not connected to a Prometheus Backend for this reason dashboards will not display any data, templates will fail to load etc... If you don't have a Dev Prometheus server. Replacing prometheus datasources(`Prometheus_Vitess`, `Prometheus_Node` ...) with an empty string in the generated JSON file will default to the dummy datasource displaying dummy data. This is useful when testing using interactive mode `make e2e-dev`. - -### Local e2e manual testing using compose (Alpha) - -**Note**: This targets have been tested using docker for Mac. You may need to change the IPs and configurations for your specific setup. - -Before we run the local environment using compose it is necessary to generate the dashboards and recording rules using `ENV=dev make all` (Note: choose the environment you want to test). - -Once our dashboards are available simply run: - -- `make e2e-compose-up`: spin up the cluster - -Changes to the dashboards are not dynamically loaded so you will need to bring down the cluster and initialized it again to load your changes. - -If you are done testing or the cluster gets in a bad state quit and clean up using: - -- `make e2e-compose-down`: cleanup compose resources - -In order to generate some metrics we can use the following commands: - -```shell -## INSERT TEST DATA -mysql --port=15306 --host=127.0.0.1 < load_test.sql -## SIMULATED QUERIES -mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=test_keyspace:80-@primary --query="SELECT * FROM messages;" -mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=test_keyspace:80-@replica --query="SELECT * FROM messages;" -mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=lookup_keyspace:-@primary --query="SELECT * FROM messages_message_lookup;" -mysqlslap -c 5 --port=15306 --host=127.0.0.1 --iterations=1000 --create-schema=lookup_keyspace:-@replica --query="SELECT * FROM messages_message_lookup;" -## SIMULATED ERRORS -mysqlslap --port=15306 --host=127.0.0.1 --iterations=10000 --create-schema=test_keyspace:80-@primary --query="SELECT name FROM messages;" -mysqlslap --port=15306 --host=127.0.0.1 --iterations=10000 --create-schema=lookup_keyspace:-@replica --query="SELECT name FROM messages_message_lookup;" -``` - -Once the cluster is up and running you should be able to access: - -- grafana (default credentials > admin/admin) http://localhost:3030/ -- prometheus http://localhost:9000/ -- vitess control panel http://localhost:15000/