blob: bd866d01f2dacb61d070225eaed595a9ebe7d09f [file] [log] [blame]
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02001
OlgaGusarenko8c33bca2018-07-30 18:33:34 +03002=====
3Usage
4=====
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02005
OlgaGusarenko8c33bca2018-07-30 18:33:34 +03006Horizon is the canonical implementation of OpenStack Dashboard, which
7provides a web-based user interface to OpenStack services including Nova,
Ales Komarek231eb652017-04-11 16:01:19 +02008Swift, Keystone, etc.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02009
Ales Komarek231eb652017-04-11 16:01:19 +020010Sample Pillars
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020011==============
12
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030013Simplest Horizon setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020014
Adam Tenglerdbd1f052016-01-25 21:12:26 +010015.. code-block:: yaml
16
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020017 horizon:
18 server:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020019 enabled: true
Ales Komarek2e7d83b2016-11-22 22:58:12 +010020 secret_key: secret
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020021 host:
22 name: cloud.lab.cz
23 cache:
24 engine: 'memcached'
25 host: '127.0.0.1'
26 port: 11211
27 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +020028 api_versions:
29 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020030 identity:
31 engine: 'keystone'
32 host: '127.0.0.1'
33 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020034 mail:
35 host: '127.0.0.1'
36
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030037Multidomain setup for Horizon:
Dmitry Stremkovskiy381e5602017-07-18 18:50:13 +030038
39.. code-block:: yaml
40
41 horizon:
42 server:
43 enabled: true
44 default_domain: MYDOMAIN
45 multidomain: True
46
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030047Simple branded Horizon:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020048
Adam Tenglerdbd1f052016-01-25 21:12:26 +010049.. code-block:: yaml
50
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020051 horizon:
52 server:
53 enabled: true
54 branding: 'OpenStack Company Dashboard'
55 default_dashboard: 'admin'
56 help_url: 'http://doc.domain.com'
57
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030058Horizon with policy files metadata. With source mine you can obtain real
59time policy file state from targeted node (OpenStack control node),
60provided you have policy file published to specified grain key. Source
61file will obtain static policy definition from formula files directory.
Adam Tengler08874e32017-05-05 17:24:29 +000062
63.. code-block:: yaml
64
65 horizon:
66 server:
67 enabled: true
68 policy:
69 identity:
70 source: mine
71 host: ctl01.my-domain.local
72 name: keystone_policy.json
73 grain_name: keystone_policy
74 enabled: true
75 compute:
76 source: file
77 name: nova_policy.json
78 enabled: true
79 network:
80 source: file
81 name: neutron_policy.json
82 enabled: true
83 image:
84 source: file
85 name: glance_policy.json
86 enabled: true
87 volume:
88 source: file
89 name: cinder_policy.json
90 enabled: true
91 telemetry:
92 source: file
93 name: ceilometer_policy.json
94 enabled: true
95 orchestration:
96 source: file
97 name: heat_policy.json
98 enabled: true
Ales Komarek231eb652017-04-11 16:01:19 +020099
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300100Horizon with enabled SSL security (when SSL is realised by proxy):
Ales Komarek231eb652017-04-11 16:01:19 +0200101
102.. code-block:: yaml
103
104 horizon:
105 server:
106 enabled: True
107 secure: True
108
109
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300110Horizon package setup with SSL:
Adam Tengler250e9b32018-06-26 14:39:31 +0000111
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300112.. important:: For the sake of backwards compatibility, the ``ssl_no_verify``
113 attribute defaults to ``true`` when
114 ``horizon:server:identity:encryption`` is set to ``'ssl'``.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200115
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100116.. code-block:: yaml
117
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200118 horizon:
119 server:
120 enabled: true
121 secret_key: MEGASECRET
122 version: juno
Adam Tengler250e9b32018-06-26 14:39:31 +0000123 ssl_no_verify: false
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200124 ssl:
125 enabled: true
126 authority: CA_Authority
127 host:
128 name: cloud.lab.cz
129 cache:
130 engine: 'memcached'
131 host: '127.0.0.1'
132 port: 11211
133 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200134 api_versions:
135 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200136 identity:
137 engine: 'keystone'
138 host: '127.0.0.1'
139 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200140 mail:
141 host: '127.0.0.1'
142
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300143Horizon with custom ``SESSION_ENGINE`` (default is
144``signed_cookies``, valid options are: ``signed_cookies``,
145``cache``, ``file``) and ``SESSION_TIMEOUT``:
Adam Tenglerddef0502017-05-04 11:36:54 +0000146
147.. code-block:: yaml
148
149 horizon:
150 server:
151 enabled: True
152 secure: True
153 session:
154 engine: 'cache'
155 timeout: 43200
156
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300157Multi-regional Horizon setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200158
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100159.. code-block:: yaml
160
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200161 horizon:
162 server:
163 enabled: true
164 version: juno
165 secret_key: MEGASECRET
166 cache:
167 engine: 'memcached'
168 host: '127.0.0.1'
169 port: 11211
170 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200171 api_versions:
172 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200173 identity:
174 engine: 'keystone'
175 host: '127.0.0.1'
176 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200177 mail:
178 host: '127.0.0.1'
179 regions:
180 - name: cluster1
181 address: http://cluster1.example.com:5000/v2.0
182 - name: cluster2
183 address: http://cluster2.example.com:5000/v2.0
184
Pavel Cizinsky4c773642018-08-21 15:28:57 +0200185Configuration of LAUNCH_INSTANCE_DEFAULTS parameter:
186
187.. code-block:: yaml
188
189 horizon:
190 server:
191 launch_instance_defaults:
192 config_drive: False
193 enable_scheduler_hints: True
194 disable_image: False
195 disable_instance_snapshot: False
196 disable_volume: False
197 disable_volume_snapshot: False
198 create_volume: False
199
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300200Horizon setup with sensu plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200201
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100202.. code-block:: yaml
203
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200204 horizon:
205 server:
206 enabled: true
207 version: juno
208 sensu_api:
209 host: localhost
210 port: 4567
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100211 plugin:
212 monitoring:
213 app: horizon_monitoring
214 source:
215 type: git
216 address: git@repo1.robotice.cz:django/horizon-monitoring.git
217 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200218
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300219Sensu multi API:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200220
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100221.. code-block:: yaml
222
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200223 horizon:
224 server:
225 enabled: true
226 version: juno
227 sensu_api:
228 dc1:
229 host: localhost
230 port: 4567
231 dc2:
232 host: anotherhost
233 port: 4567
234
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300235Horizon setup with jenkins plugin:
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100236
237.. code-block:: yaml
238
239 horizon:
240 server:
241 enabled: true
242 version: juno
243 jenkins_api:
244 url: https://localhost:8080
245 user: admin
246 password: pwd
247 plugin:
248 jenkins:
249 app: horizon_jenkins
250 source:
251 type: pkg
252
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300253Horizon setup with billometer plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200254
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100255.. code-block:: yaml
256
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200257 horizon:
258 server:
259 enabled: true
260 version: juno
261 billometer_api:
262 host: localhost
263 port: 9753
264 api_version: 1
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100265 plugin:
266 billing:
267 app: horizon_billing
268 source:
269 type: git
270 address: git@repo1.robotice.cz:django/horizon-billing.git
271 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200272
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300273Horizon setup with Contrail plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200274
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100275.. code-block:: yaml
276
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200277 horizon:
278 server:
279 enabled: true
280 version: icehouse
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100281 plugin:
282 contrail:
283 app: contrail_openstack_dashboard
284 override: true
285 source:
286 type: git
287 address: git@repo1.robotice.cz:django/horizon-contrail.git
288 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200289
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300290Horizon setup with sentry log handler:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200291
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100292.. code-block:: yaml
293
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200294 horizon:
295 server:
296 enabled: true
297 version: juno
298 ...
299 logging:
300 engine: raven
301 dsn: http://pub:private@sentry1.test.cz/2
302
303Multisite with Git source
304-------------------------
305
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300306Simple Horizon setup from Git repository:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200307
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100308.. code-block:: yaml
309
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200310 horizon:
311 server:
312 enabled: true
313 app:
314 default:
315 secret_key: MEGASECRET
316 source:
317 engine: git
318 address: https://github.com/openstack/horizon.git
319 rev: stable/havana
320 cache:
321 engine: 'memcached'
322 host: '127.0.0.1'
323 port: 11211
324 prefix: 'CACHE_DEFAULT'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200325 api_versions:
326 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200327 identity:
328 engine: 'keystone'
329 host: '127.0.0.1'
330 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200331 mail:
332 host: '127.0.0.1'
333
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300334Themed multisite setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200335
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100336.. code-block:: yaml
337
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200338 horizon:
339 server:
340 enabled: true
341 app:
342 openstack1c:
343 secret_key: MEGASECRET1
344 source:
345 engine: git
346 address: https://github.com/openstack/horizon.git
347 rev: stable/havana
348 plugin:
349 contrail:
350 app: contrail_openstack_dashboard
351 override: true
352 source:
353 type: git
354 address: git@repo1.robotice.cz:django/horizon-contrail.git
355 rev: develop
356 theme:
357 app: site1_theme
358 source:
359 type: git
360 address: git@repo1.domain.com:django/horizon-site1-theme.git
361 cache:
362 engine: 'memcached'
363 host: '127.0.0.1'
364 port: 11211
365 prefix: 'CACHE_SITE1'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200366 api_versions:
367 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200368 identity:
369 engine: 'keystone'
370 host: '127.0.0.1'
371 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200372 mail:
373 host: '127.0.0.1'
374 openstack2:
375 secret_key: MEGASECRET2
376 source:
377 engine: git
378 address: https://repo1.domain.com/openstack/horizon.git
379 rev: stable/icehouse
380 plugin:
381 contrail:
382 app: contrail_openstack_dashboard
383 override: true
384 source:
385 type: git
386 address: git@repo1.domain.com:django/horizon-contrail.git
387 rev: develop
388 monitoring:
389 app: horizon_monitoring
390 source:
391 type: git
392 address: git@domain.com:django/horizon-monitoring.git
393 rev: develop
394 theme:
395 app: bootswatch_theme
396 source:
397 type: git
398 address: git@repo1.robotice.cz:django/horizon-bootswatch-theme.git
399 rev: develop
400 cache:
401 engine: 'memcached'
402 host: '127.0.0.1'
403 port: 11211
404 prefix: 'CACHE_SITE2'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200405 api_versions:
406 identity: 3
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200407 identity:
408 engine: 'keystone'
409 host: '127.0.0.1'
410 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200411 mail:
412 host: '127.0.0.1'
413
Adam Tengler383e5712018-06-26 20:09:54 +0000414Set advanced theme options (for Horizon version Mitaka and newer).
415
416Full example:
417
418.. code-block:: yaml
419
420 horizon:
421 server:
422 themes:
423 default: default # optional, default: "default"
424 directory: themes # optional, default: "themes"
425 cookie_name: theme # optional, default: "theme"
426 available:
427 default: # slug
428 name: "Default" # display name
429 description: "Default style theme"
430 path: "themes/default" # optional, default: "<directory>/<slug>", e.g. "themes/default"
431 enabled: True
432 material:
433 name: "Material"
434 description: "Google's Material Design style theme"
435 path: "themes/material"
436 enabled: True
437
438Minimal example:
439
440.. code-block:: yaml
441
442 horizon:
443 server:
444 theme:
445 available:
446 default: # slug
447 name: "Default" # display name
448 description: "Default style theme"
449 material:
450 name: "Material"
451 description: "Google's Material Design style theme"
452
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300453API versions override:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200454
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100455.. code-block:: yaml
456
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200457 horizon:
458 server:
459 enabled: true
460 app:
461 openstack_api_overrride:
462 secret_key: MEGASECRET1
463 api_versions:
464 identity: 3
465 volume: 2
466 source:
467 engine: git
468 address: https://github.com/openstack/horizon.git
469 rev: stable/havana
470
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300471Control dashboard behavior:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200472
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100473.. code-block:: yaml
474
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200475 horizon:
476 server:
477 enabled: true
478 app:
479 openstack_dashboard_overrride:
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100480 secret_key: password
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200481 dashboards:
482 settings:
483 enabled: true
484 project:
485 enabled: false
486 order: 10
487 admin:
488 enabled: false
489 order: 20
490 source:
491 engine: git
492 address: https://github.com/openstack/horizon.git
493 rev: stable/juno
494
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300495Enable WebSSO feature. Define a list of choices
496[supported choices: oidc, saml2], ``credentials`` choice
497will be automatically appended and choice description is
498predefined. DEPRECATED
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700499
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300500WebSSO with credentials and saml2:
Alexander Noskov787a8122016-12-07 13:00:49 +0400501
502.. code-block:: yaml
503
504 horizon:
505 server:
506 enabled: true
507 websso:
508 login_url: "WEBROOT + 'auth/login/'"
509 logout_url: "WEBROOT + 'auth/logout/'"
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700510 login_redirect_url: "WEBROOT + 'project/'"
Alexander Noskov787a8122016-12-07 13:00:49 +0400511 websso_choices:
512 - saml2
Alexander Noskov787a8122016-12-07 13:00:49 +0400513
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300514Enable WebSSO feature. Define a map of choices in the following
515format: ``{"<choice_name>": {"description": "<choice_description>"}``.
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700516
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300517WebSSO with saml2 and credentials:
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700518
519.. code-block:: yaml
520
521 horizon:
522 server:
523 enabled: true
524 websso:
525 login_url: "WEBROOT + 'auth/login/'"
526 logout_url: "WEBROOT + 'auth/logout/'"
527 login_redirect_url: "WEBROOT + 'project/'"
528 websso_choices:
529 saml2:
530 description: "Security Assertion Markup Language"
531 credentials:
532 description: "Keystone Credentials"
533
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300534WebSSO with IDP mapping:
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700535
536.. code-block:: yaml
537
538 horizon:
539 server:
540 enabled: true
541 websso:
542 login_url: "WEBROOT + 'auth/login/'"
543 logout_url: "WEBROOT + 'auth/logout/'"
544 login_redirect_url: "WEBROOT + 'project/'"
545 websso_choices:
546 credentials:
547 description: "Keystone Credentials"
548 saml2:
549 description: "Security Assertion Markup Language"
550 oidc:
551 description: "OpenID Connect"
552 myidp_oidc:
553 description: "Acme Corporation - OpenID Connect"
554 myidp_saml2:
555 description: "Acme Corporation - SAML2"
556 idp_mapping:
557 myidp_oidc:
558 id: myidp
559 protocol: oidc
560 myidp_saml2:
561 id: myidp
562 protocol: saml2
Ales Komarek231eb652017-04-11 16:01:19 +0200563
Vasyl Saienkoc9cfd1f2018-09-10 13:47:12 +0000564
565Upgrades
566========
567
568Each openstack formula provide set of phases (logical bloks) that will help to
569build flexible upgrade orchestration logic for particular components. The list
570of phases and theirs descriptions are listed in table below:
571
572+-------------------------------+------------------------------------------------------+
573| State | Description |
574+===============================+======================================================+
575| <app>.upgrade.service_running | Ensure that all services for particular application |
576| | are enabled for autostart and running |
577+-------------------------------+------------------------------------------------------+
578| <app>.upgrade.service_stopped | Ensure that all services for particular application |
579| | disabled for autostart and dead |
580+-------------------------------+------------------------------------------------------+
581| <app>.upgrade.pkgs_latest | Ensure that packages used by particular application |
582| | are installed to latest available version. |
583| | This will not upgrade data plane packages like qemu |
584| | and openvswitch as usually minimal required version |
585| | in openstack services is really old. The data plane |
586| | packages should be upgraded separately by `apt-get |
587| | upgrade` or `apt-get dist-upgrade` |
588| | Applying this state will not autostart service. |
589+-------------------------------+------------------------------------------------------+
590| <app>.upgrade.render_config | Ensure configuration is rendered actual version. +
591+-------------------------------+------------------------------------------------------+
592| <app>.upgrade.pre | We assume this state is applied on all nodes in the |
593| | cloud before running upgrade. |
594| | Only non destructive actions will be applied during |
595| | this phase. Perform service built in service check |
596| | like (keystone-manage doctor and nova-status upgrade)|
597+-------------------------------+------------------------------------------------------+
598| <app>.upgrade.upgrade.pre | Mostly applicable for data plane nodes. During this |
599| | phase resources will be gracefully removed from |
600| | current node if it is allowed. Services for upgraded |
601| | application will be set to admin disabled state to |
602| | make sure node will not participate in resources |
603| | scheduling. For example on gtw nodes this will set |
604| | all agents to admin disable state and will move all |
605| | routers to other agents. |
606+-------------------------------+------------------------------------------------------+
607| <app>.upgrade.upgrade | This state will basically upgrade application on |
608| | particular target. Stop services, render |
609| | configuration, install new packages, run offline |
610| | dbsync (for ctl), start services. Data plane should |
611| | not be affected, only OpenStack python services. |
612+-------------------------------+------------------------------------------------------+
613| <app>.upgrade.upgrade.post | Add services back to scheduling. |
614+-------------------------------+------------------------------------------------------+
615| <app>.upgrade.post | This phase should be launched only when upgrade of |
616| | the cloud is completed. Cleanup temporary files, |
617| | perform other post upgrade tasks. |
618+-------------------------------+------------------------------------------------------+
619| <app>.upgrade.verify | Here we will do basic health checks (API CRUD |
620| | operations, verify do not have dead network |
621| | agents/compute services) |
622+-------------------------------+------------------------------------------------------+
623
624
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300625Read more
626=========
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200627
628* https://github.com/openstack/horizon
629* http://dijks.wordpress.com/2012/07/06/how-to-change-screen-resolution-of-novnc-client-in-openstack-essex-dashboard-nova-horizon/
Filip Pytloun219343c2017-02-02 13:02:03 +0100630
Ales Komarek231eb652017-04-11 16:01:19 +0200631
Filip Pytloun219343c2017-02-02 13:02:03 +0100632Documentation and Bugs
633======================
634
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300635* http://salt-formulas.readthedocs.io/
636 Learn how to install and update salt-formulas
Filip Pytloun219343c2017-02-02 13:02:03 +0100637
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300638* https://github.com/salt-formulas/salt-formula-horizon/issues
639 In the unfortunate event that bugs are discovered, report the issue to the
640 appropriate issue tracker. Use the Github issue tracker for a specific salt
641 formula
Filip Pytloun219343c2017-02-02 13:02:03 +0100642
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300643* https://launchpad.net/salt-formulas
644 For feature requests, bug reports, or blueprints affecting the entire
645 ecosystem, use the Launchpad salt-formulas project
Filip Pytloun219343c2017-02-02 13:02:03 +0100646
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300647* https://launchpad.net/~salt-formulas-users
648 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytloun219343c2017-02-02 13:02:03 +0100649
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300650* https://github.com/salt-formulas/salt-formula-horizon
651 Develop the salt-formulas projects in the master branch and then submit pull
652 requests against a specific formula
Filip Pytloun219343c2017-02-02 13:02:03 +0100653
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300654* #salt-formulas @ irc.freenode.net
655 Use this IRC channel in case of any questions or feedback which is always
656 welcome