Scott Baker | 2f8fe3a | 2022-05-09 10:48:16 -0700 | [diff] [blame] | 1 | # SPDX-FileCopyrightText: 2022-present Intel Corporation |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 2 | # SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org> |
| 3 | # |
Sean Condon | 160ec1d | 2022-02-08 12:58:25 +0000 | [diff] [blame] | 4 | # SPDX-License-Identifier: Apache-2.0 |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 5 | |
| 6 | # Default values for all Aether Helm charts. |
| 7 | # This is a YAML-formatted file. |
| 8 | # Declare variables to be passed into your templates. |
| 9 | |
| 10 | global: |
| 11 | fullnameOverride: "onos" |
| 12 | nameOverride: "" |
| 13 | image: |
| 14 | registry: "" |
| 15 | tag: "" |
| 16 | store: |
| 17 | consensus: |
| 18 | enabled: true |
| 19 | name: "" |
| 20 | image: |
| 21 | registry: "" |
| 22 | repository: atomix/atomix-raft-storage-node |
| 23 | tag: "" |
| 24 | pullPolicy: IfNotPresent |
| 25 | pullSecrets: [] |
| 26 | clusters: 1 |
| 27 | replicas: 1 |
| 28 | partitions: 1 |
| 29 | raft: {} |
| 30 | persistence: |
| 31 | storageClass: "" |
| 32 | storageSize: 1Gi |
| 33 | |
| 34 | import: |
| 35 | onos-topo: |
| 36 | enabled: true |
| 37 | onos-config: |
| 38 | enabled: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 39 | onos-cli: |
| 40 | enabled: true |
| 41 | aether-roc-api: |
| 42 | enabled: true |
Sean Condon | d7d1834 | 2021-10-11 14:25:27 +0100 | [diff] [blame] | 43 | aether-roc-websocket: |
| 44 | enabled: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 45 | aether-roc-gui: |
SeanCondon | 2c1412a | 2022-04-26 11:50:05 +0100 | [diff] [blame] | 46 | v2-0: |
Sean Condon | fd3c9a4 | 2022-02-16 21:07:06 +0000 | [diff] [blame] | 47 | enabled: false |
SeanCondon | 2c1412a | 2022-04-26 11:50:05 +0100 | [diff] [blame] | 48 | v2-1: |
| 49 | enabled: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 50 | sdcore-adapter: |
Scott Baker | 4bc8624 | 2022-04-19 15:45:51 -0700 | [diff] [blame] | 51 | v2-0: |
Scott Baker | e35e683 | 2022-01-10 15:48:08 -0800 | [diff] [blame] | 52 | enabled: false |
Scott Baker | aefb927 | 2022-04-18 09:47:47 -0700 | [diff] [blame] | 53 | v2-1: |
| 54 | enabled: true |
Scott Baker | 2f8fe3a | 2022-05-09 10:48:16 -0700 | [diff] [blame] | 55 | sdcore-prom-kafka: |
| 56 | enabled: false |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 57 | subscriber-proxy: |
| 58 | enabled: true |
| 59 | sdcore-test-dummy: |
| 60 | enabled: true |
| 61 | grafana: |
| 62 | enabled: true #also enable the proxy below |
| 63 | prometheus: |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 64 | acc: |
| 65 | enabled: true # controls its plproxy too |
| 66 | amp: |
| 67 | enabled: true # controls its plproxy too |
| 68 | ace: |
| 69 | enabled: true |
Sean Condon | 98fde36 | 2021-11-04 15:58:35 +0000 | [diff] [blame] | 70 | prom-label-proxy: |
| 71 | acc: |
| 72 | enabled: true |
| 73 | amp: |
| 74 | enabled: true |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 75 | aether-mock-exporter: |
Sean Condon | 25c7bf5 | 2021-11-06 11:53:59 +0000 | [diff] [blame] | 76 | enabled: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 77 | |
| 78 | # ONOS-TOPO |
| 79 | onos-topo: |
| 80 | store: |
| 81 | consensus: |
| 82 | enabled: false |
| 83 | |
| 84 | # ONOS-GUI |
| 85 | onos-gui: {} |
| 86 | |
| 87 | # ONOS-CLI |
| 88 | onos-cli: {} |
| 89 | |
| 90 | # Aether ROC API |
| 91 | aether-roc-api: {} |
| 92 | |
| 93 | # Aether ROC GUI |
Sean Condon | 44c78b9 | 2022-02-18 13:12:12 +0000 | [diff] [blame] | 94 | aether-roc-gui-v2: |
| 95 | nameOverride: aether-roc-gui-v2 |
| 96 | fullnameOverride: aether-roc-gui-v2 |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 97 | websocket: |
| 98 | proxyEnabled: true |
| 99 | grafana: |
| 100 | proxyEnabled: true |
| 101 | service: aether-roc-umbrella-grafana # the grafana hostname - use FQDN for other namespaces |
| 102 | prometheus: |
Sean Condon | 44c78b9 | 2022-02-18 13:12:12 +0000 | [diff] [blame] | 103 | acc: |
| 104 | proxyEnabled: true |
| 105 | service: prom-label-proxy-acc |
| 106 | protocol: http |
| 107 | port: 8080 |
| 108 | amp: |
| 109 | proxyEnabled: true |
| 110 | service: prom-label-proxy-amp |
| 111 | protocol: http |
| 112 | port: 8080 |
| 113 | site: |
| 114 | - name: ace1 |
| 115 | service: aether-roc-umbrella-prometheus-ace-server |
| 116 | protocol: http |
| 117 | port: 80 |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 118 | |
Sean Condon | b44c6ce | 2021-10-01 15:29:32 +0100 | [diff] [blame] | 119 | aether-roc-gui-v4: |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 120 | nameOverride: aether-roc-gui-v4 |
| 121 | fullnameOverride: aether-roc-gui-v4 |
Sean Condon | b44c6ce | 2021-10-01 15:29:32 +0100 | [diff] [blame] | 122 | websocket: |
| 123 | proxyEnabled: true |
| 124 | grafana: |
| 125 | proxyEnabled: true |
| 126 | service: aether-roc-umbrella-grafana # the grafana hostname - use FQDN for other namespaces |
| 127 | prometheus: |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 128 | acc: |
| 129 | proxyEnabled: true |
| 130 | service: prom-label-proxy-acc |
| 131 | protocol: http |
| 132 | port: 8080 |
| 133 | amp: |
| 134 | proxyEnabled: true |
| 135 | service: prom-label-proxy-amp |
| 136 | protocol: http |
| 137 | port: 8080 |
| 138 | site: |
| 139 | - name: ace1 |
| 140 | service: aether-roc-umbrella-prometheus-ace-server |
| 141 | protocol: http |
| 142 | port: 80 |
Sean Condon | b44c6ce | 2021-10-01 15:29:32 +0100 | [diff] [blame] | 143 | |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 144 | # SD-Core Adapter |
Scott Baker | 4bc8624 | 2022-04-19 15:45:51 -0700 | [diff] [blame] | 145 | sdcore-adapter-v2-0: |
| 146 | fullnameOverride: sdcore-adapter-v2-0 |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 147 | prometheusEnabled: false |
Scott Baker | b59cc80 | 2022-03-04 15:17:33 -0800 | [diff] [blame] | 148 | partialUpdateEnabled: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 149 | |
Scott Baker | aefb927 | 2022-04-18 09:47:47 -0700 | [diff] [blame] | 150 | sdcore-adapter-v2-1: |
Scott Baker | 4bc8624 | 2022-04-19 15:45:51 -0700 | [diff] [blame] | 151 | fullnameOverride: sdcore-adapter-v2-1 |
Scott Baker | ed05fb5 | 2021-10-13 09:21:47 -0700 | [diff] [blame] | 152 | prometheusEnabled: false |
Scott Baker | aefb927 | 2022-04-18 09:47:47 -0700 | [diff] [blame] | 153 | partialUpdateEnabled: true |
Scott Baker | ed05fb5 | 2021-10-13 09:21:47 -0700 | [diff] [blame] | 154 | |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 155 | # Subscriber Proxy |
| 156 | subscriber-proxy: |
| 157 | nameOverride: subscriber-proxy |
| 158 | fullnameOverride: subscriber-proxy |
| 159 | prometheusEnabled: false |
| 160 | |
Amit Wankhede | 3d0bc58 | 2021-10-18 22:28:50 +0530 | [diff] [blame] | 161 | # Prom label Proxy |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 162 | prom-label-proxy-amp: |
| 163 | nameOverride: prom-label-proxy-amp |
| 164 | fullnameOverride: prom-label-proxy-amp |
Amit Wankhede | 3d0bc58 | 2021-10-18 22:28:50 +0530 | [diff] [blame] | 165 | prometheusEnabled: false |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 166 | config: |
| 167 | upstream: http://aether-roc-umbrella-prometheus-amp-server |
| 168 | |
| 169 | prom-label-proxy-acc: |
| 170 | nameOverride: prom-label-proxy-acc |
| 171 | fullnameOverride: prom-label-proxy-acc |
| 172 | prometheusEnabled: false |
| 173 | config: |
| 174 | upstream: http://aether-roc-umbrella-prometheus-acc-server |
Amit Wankhede | 3d0bc58 | 2021-10-18 22:28:50 +0530 | [diff] [blame] | 175 | |
Prateek Sarda | 2cf72f6 | 2021-10-26 13:43:10 +0000 | [diff] [blame] | 176 | grafana: |
| 177 | sidecar: |
| 178 | dashboards: |
| 179 | enabled: true |
| 180 | label: grafana_dashboard |
Prateek Sarda | a775b67 | 2021-11-01 11:19:18 +0000 | [diff] [blame] | 181 | labelValue: aether-roc-gui |
| 182 | datasources: |
| 183 | enabled: true |
| 184 | label: grafana_datasource |
| 185 | labelValue: aether-roc-gui |
| 186 | source: |
| 187 | - name: acc |
| 188 | protocol: http |
| 189 | service: aether-roc-umbrella-prometheus-acc-server |
| 190 | port: 80 |
| 191 | - name: amp |
| 192 | protocol: http |
| 193 | service: aether-roc-umbrella-prometheus-amp-server |
| 194 | port: 80 |
| 195 | - name: acme-chicago |
| 196 | protocol: http |
| 197 | service: aether-roc-umbrella-prometheus-ace-server |
| 198 | port: 80 |
| 199 | - name: starbucks-newyork |
| 200 | protocol: http |
| 201 | service: aether-roc-umbrella-prometheus-ace-server |
| 202 | port: 80 |
| 203 | - name: starbucks-seattle |
| 204 | protocol: http |
| 205 | service: aether-roc-umbrella-prometheus-ace-server |
| 206 | port: 80 |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 207 | grafana.ini: |
| 208 | log: |
| 209 | level: debug |
| 210 | server: |
Prateek Sarda | c3a50d3 | 2021-11-10 12:40:17 +0000 | [diff] [blame] | 211 | domain: aether-roc-gui:8183 |
| 212 | root_url: "%(protocol)s://%(domain)s/grafana/" |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 213 | serve_from_sub_path: true |
Prateek Sarda | c3a50d3 | 2021-11-10 12:40:17 +0000 | [diff] [blame] | 214 | security: |
| 215 | allow_embedding: true |
| 216 | auth: |
| 217 | disable_login_form: true |
| 218 | oauth_auto_login: true |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 219 | auth.anonymous: |
Prateek Sarda | c3a50d3 | 2021-11-10 12:40:17 +0000 | [diff] [blame] | 220 | enabled: false |
| 221 | hide_version: false |
| 222 | # Disabled other auth types for the moment - see aether-roc-gui/docs/grafana.md |
| 223 | auth.proxy: |
| 224 | enabled: false |
| 225 | header_name: X-WEBAUTH-USER |
| 226 | header_property: username |
| 227 | auto_sign_up: true |
| 228 | enable_login_token: true |
| 229 | auth.jwt: |
| 230 | enabled: false |
| 231 | header_name: X-JWT-Assertion |
| 232 | username_claim: name |
| 233 | email_claim: email |
| 234 | jwk_set_url: "https://keycloak.opennetworking.org/auth/realms/master/protocol/openid-connect/certs" |
Sean Condon | 65dbad9 | 2022-02-04 13:36:47 +0000 | [diff] [blame] | 235 | cache_ttl: 60m |
Prateek Sarda | c3a50d3 | 2021-11-10 12:40:17 +0000 | [diff] [blame] | 236 | auth.generic_oauth: |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 237 | enabled: true |
Prateek Sarda | c3a50d3 | 2021-11-10 12:40:17 +0000 | [diff] [blame] | 238 | client_id: aether-roc-gui |
| 239 | # client_secret: YWV0aGVyLXJvYy1ndWkK |
| 240 | scopes: "openid profile email groups" |
| 241 | empty_scopes: false |
| 242 | auth_url: "http://k3u-keycloak:5557/auth/realms/master/protocol/openid-connect/auth" |
| 243 | token_url: "http://k3u-keycloak:5557/auth/realms/master/protocol/openid-connect/token" |
| 244 | api_url: "http://k3u-keycloak:5557/auth/realms/master/protocol/openid-connect/userinfo" |
| 245 | allowed_domains: opennetworking.org |
| 246 | allow_sign_up: true |
| 247 | name: KeyCloak |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 248 | |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 249 | prometheus-acc: |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 250 | pushgateway: |
| 251 | enabled: false |
| 252 | nodeExporter: |
| 253 | enabled: false |
| 254 | kubeStateMetrics: |
| 255 | enabled: false |
| 256 | alertmanager: |
| 257 | configMapOverrideName: alertmanager |
Sean Condon | d7d1834 | 2021-10-11 14:25:27 +0100 | [diff] [blame] | 258 | webhook_url: "http://aether-roc-websocket/webhook" |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 259 | serverFiles: |
| 260 | alerting_rules.yml: |
| 261 | groups: |
| 262 | - name: UeAlerts |
| 263 | rules: |
| 264 | - alert: UeThroughputLow |
| 265 | expr: ue_throughput < 9000 |
| 266 | for: 1m |
| 267 | labels: |
| 268 | severity: info |
| 269 | annotations: |
| 270 | description: 'UE {{ $labels.id }} on VCS {{ $labels.slice }} throughput has been low for more than 1 minutes.' |
| 271 | summary: 'UE {{ $labels.id }} on VCS {{ $labels.slice }} throughput low' |
| 272 | - alert: UeLatencyHigh |
| 273 | expr: ue_latency > 8 |
| 274 | for: 1m |
| 275 | labels: |
| 276 | severity: info |
| 277 | annotations: |
| 278 | description: 'UE {{ $labels.id }} on VCS {{ $labels.slice }} latency has been high for more than 1 minutes.' |
| 279 | summary: 'UE {{ $labels.id }} on VCS {{ $labels.slice }} latency high' |
| 280 | - name: VcsAlerts |
| 281 | rules: |
| 282 | - alert: VcsThroughputLow |
| 283 | expr: vcs_throughput < 9000 |
| 284 | for: 1m |
| 285 | labels: |
| 286 | severity: info |
| 287 | annotations: |
| 288 | description: 'VCS {{ $labels.vcs_id }} throughput has been low for more than 1 minutes.' |
| 289 | summary: 'VCS {{ $labels.vcs_id }} throughput low' |
| 290 | - alert: VcsLatencyHigh |
| 291 | expr: vcs_latency > 30 |
| 292 | for: 1m |
| 293 | labels: |
| 294 | severity: warn |
| 295 | annotations: |
| 296 | description: 'VCS {{ $labels.vcs_id }} latency has been high for more than 1 minutes.' |
| 297 | summary: 'VCS {{ $labels.vcs_id }} latency high' |
| 298 | - alert: VcsJitterHigh |
| 299 | expr: vcs_jitter > 8 |
| 300 | for: 1m |
| 301 | labels: |
| 302 | severity: page |
| 303 | annotations: |
| 304 | description: 'VCS {{ $labels.vcs_id }} jitter has been high for more than 1 minutes.' |
| 305 | summary: 'VCS {{ $labels.vcs_id }} jitter high' |
| 306 | prometheus.yml: |
| 307 | scrape_configs: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 308 | - job_name: aether-mock-exporter |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 309 | scrape_interval: 2s |
| 310 | static_configs: |
| 311 | - targets: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 312 | - aether-mock-exporter:2112 |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 313 | |
| 314 | prometheus-amp: |
| 315 | pushgateway: |
| 316 | enabled: false |
| 317 | nodeExporter: |
| 318 | enabled: false |
| 319 | kubeStateMetrics: |
| 320 | enabled: false |
| 321 | alertmanager: |
| 322 | enabled: false |
| 323 | serverFiles: |
| 324 | prometheus.yml: |
| 325 | scrape_configs: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 326 | - job_name: aether-mock-exporter |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 327 | scrape_interval: 2s |
| 328 | static_configs: |
| 329 | - targets: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 330 | - aether-mock-exporter:2112 |
Sean Condon | 65dbad9 | 2022-02-04 13:36:47 +0000 | [diff] [blame] | 331 | |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 332 | prometheus-ace: |
| 333 | pushgateway: |
| 334 | enabled: false |
| 335 | nodeExporter: |
| 336 | enabled: false |
| 337 | kubeStateMetrics: |
Prateek Sarda | a775b67 | 2021-11-01 11:19:18 +0000 | [diff] [blame] | 338 | enabled: true |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 339 | alertmanager: |
| 340 | enabled: false |
| 341 | serverFiles: |
| 342 | prometheus.yml: |
| 343 | scrape_configs: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 344 | - job_name: aether-mock-exporter |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 345 | scrape_interval: 2s |
| 346 | static_configs: |
| 347 | - targets: |
Scott Baker | aac30df | 2022-04-29 13:53:17 -0700 | [diff] [blame] | 348 | - aether-mock-exporter:2112 |
Prateek Sarda | a775b67 | 2021-11-01 11:19:18 +0000 | [diff] [blame] | 349 | - job_name: kube-state-metrics |
| 350 | scrape_interval: 2s |
| 351 | static_configs: |
| 352 | - targets: |
| 353 | - aether-roc-umbrella-kube-state-metrics:8080 |
Sean Condon | 0246661 | 2021-10-22 17:08:25 +0100 | [diff] [blame] | 354 | |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 355 | # SD-Core Test Dummy |
| 356 | # proxy_pass has to be added or nginx will not log the $request_body |
| 357 | sdcore-test-dummy: |
| 358 | service: |
| 359 | type: ClusterIP |
| 360 | existingServerBlockConfigmap: aether-roc-umbrella-sdcore-test-dummy |
| 361 | |
| 362 | # ONOS-CONFIG |
| 363 | onos-config: |
| 364 | store: |
| 365 | consensus: |
| 366 | enabled: false |
Sean Condon | 65dbad9 | 2022-02-04 13:36:47 +0000 | [diff] [blame] | 367 | modelPlugins: |
| 368 | - name: aether-2 |
Sean Condon | 74e8d94 | 2022-03-16 19:20:08 +0000 | [diff] [blame] | 369 | image: onosproject/aether-2.0.x:2.0.3-aether-2.0.x |
Sean Condon | 65dbad9 | 2022-02-04 13:36:47 +0000 | [diff] [blame] | 370 | endpoint: localhost |
| 371 | port: 5152 |
Sean Condon | 74e8d94 | 2022-03-16 19:20:08 +0000 | [diff] [blame] | 372 | - name: aether-2-1 |
SeanCondon | e155baf | 2022-04-11 18:55:55 +0100 | [diff] [blame] | 373 | image: onosproject/aether-2.1.x:2.1.3-aether-2.1.x |
Sean Condon | 65dbad9 | 2022-02-04 13:36:47 +0000 | [diff] [blame] | 374 | endpoint: localhost |
| 375 | port: 5153 |
| 376 | |
Scott Baker | 6965439 | 2021-09-17 13:50:16 -0700 | [diff] [blame] | 377 | openpolicyagent: |
| 378 | enabled: true |
| 379 | regoConfigMap: aether-roc-umbrella-opa-rbac |
Andy Bavier | 955301e | 2022-04-22 14:34:54 -0700 | [diff] [blame] | 380 | |
| 381 | enterprises: |
| 382 | - id: starbucks |
| 383 | name: Starbucks Enterprise |
SeanCondon | f49d7fb | 2022-05-04 18:13:26 +0100 | [diff] [blame] | 384 | lat: 47.581115 |
| 385 | long: -122.335692 |
Andy Bavier | 955301e | 2022-04-22 14:34:54 -0700 | [diff] [blame] | 386 | - id: acme |
| 387 | name: ACME Enterprise |
SeanCondon | f49d7fb | 2022-05-04 18:13:26 +0100 | [diff] [blame] | 388 | lat: 41.974568 |
| 389 | long: -87.782062 |
Andy Bavier | 955301e | 2022-04-22 14:34:54 -0700 | [diff] [blame] | 390 | - id: defaultent |
| 391 | name: Default Enterprise |
SeanCondon | f49d7fb | 2022-05-04 18:13:26 +0100 | [diff] [blame] | 392 | lat: 37.453017 |
| 393 | long: -122.180708 |