From 03154fe8a41d521902bc305cea1531772fd2a881 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 23 Oct 2017 11:09:03 +0200 Subject: Add zuul v3 presentty talk --- src/zuulv3/cp437utf8.py | 69 ++ src/zuulv3/images/01-gerrit.png | Bin 0 -> 126754 bytes src/zuulv3/images/02-status1.png | Bin 0 -> 169213 bytes src/zuulv3/images/03-status2.png | Bin 0 -> 58075 bytes src/zuulv3/images/04-health.png | Bin 0 -> 40296 bytes src/zuulv3/images/ansible.ans | 49 ++ src/zuulv3/images/architecture.ans | 45 ++ src/zuulv3/images/circle.ans | 49 ++ src/zuulv3/images/color-gertty.ans | 57 ++ src/zuulv3/images/convert.sh | 4 + src/zuulv3/images/crd.ans | 29 + src/zuulv3/images/cursor.ans | 47 ++ src/zuulv3/images/cursor2.ans | 47 ++ src/zuulv3/images/openstack.ans | 51 ++ src/zuulv3/images/orig/ansible.ans | 49 ++ src/zuulv3/images/orig/architecture.ans | 45 ++ src/zuulv3/images/orig/circle.ans | 49 ++ src/zuulv3/images/orig/color-gertty.ans | 57 ++ src/zuulv3/images/orig/crd.ans | 29 + src/zuulv3/images/orig/cursor.ans | 47 ++ src/zuulv3/images/orig/cursor2.ans | 47 ++ src/zuulv3/images/orig/openstack.ans | 51 ++ src/zuulv3/images/orig/questions.ans | 27 + src/zuulv3/images/orig/redhat.ans | 49 ++ src/zuulv3/images/orig/startup1.ans | 39 + src/zuulv3/images/orig/startup2.ans | 39 + src/zuulv3/images/orig/td.ans | Bin 0 -> 2433 bytes src/zuulv3/images/orig/testslide.ans | 49 ++ src/zuulv3/images/orig/title.ans | 45 ++ src/zuulv3/images/orig/workflow.ans | 29 + src/zuulv3/images/orig/zsim-00.ans | 43 + src/zuulv3/images/orig/zsim-01.ans | 43 + src/zuulv3/images/orig/zsim-02.ans | 43 + src/zuulv3/images/orig/zsim-03.ans | 43 + src/zuulv3/images/orig/zsim-04.ans | 43 + src/zuulv3/images/orig/zsim-05.ans | 43 + src/zuulv3/images/orig/zsim-06.ans | 43 + src/zuulv3/images/orig/zsim-07.ans | 43 + src/zuulv3/images/orig/zsim-08.ans | 43 + src/zuulv3/images/orig/zsim-09.ans | 43 + src/zuulv3/images/orig/zsim-10.ans | 43 + src/zuulv3/images/orig/zsim-11.ans | 43 + src/zuulv3/images/orig/zsim-12.ans | 43 + src/zuulv3/images/orig/zsim-13.ans | 43 + src/zuulv3/images/orig/zsim-14.ans | 43 + src/zuulv3/images/orig/zsim-15.ans | 43 + src/zuulv3/images/orig/zsim-16.ans | 43 + src/zuulv3/images/orig/zsim-17.ans | 43 + src/zuulv3/images/orig/zsim-18.ans | 43 + src/zuulv3/images/orig/zsim-19.ans | 43 + src/zuulv3/images/orig/zsim-20.ans | 43 + src/zuulv3/images/orig/zsim-21.ans | 43 + src/zuulv3/images/orig/zsim-22.ans | 43 + src/zuulv3/images/orig/zsim-keyline.ans | 45 ++ src/zuulv3/images/orig/zuul-status.ans | 49 ++ src/zuulv3/images/orig/zuul.ans | 43 + src/zuulv3/images/questions.ans | 27 + src/zuulv3/images/redhat.ans | 49 ++ src/zuulv3/images/startup1.ans | 39 + src/zuulv3/images/startup2.ans | 39 + src/zuulv3/images/td.ans | Bin 0 -> 2737 bytes src/zuulv3/images/testslide.ans | 49 ++ src/zuulv3/images/title.ans | 45 ++ src/zuulv3/images/workflow.ans | 29 + src/zuulv3/images/zsim-00.ans | 43 + src/zuulv3/images/zsim-01.ans | 43 + src/zuulv3/images/zsim-02.ans | 43 + src/zuulv3/images/zsim-03.ans | 43 + src/zuulv3/images/zsim-04.ans | 43 + src/zuulv3/images/zsim-05.ans | 43 + src/zuulv3/images/zsim-06.ans | 43 + src/zuulv3/images/zsim-07.ans | 43 + src/zuulv3/images/zsim-08.ans | 43 + src/zuulv3/images/zsim-09.ans | 43 + src/zuulv3/images/zsim-10.ans | 43 + src/zuulv3/images/zsim-11.ans | 43 + src/zuulv3/images/zsim-12.ans | 43 + src/zuulv3/images/zsim-13.ans | 43 + src/zuulv3/images/zsim-14.ans | 43 + src/zuulv3/images/zsim-15.ans | 43 + src/zuulv3/images/zsim-16.ans | 43 + src/zuulv3/images/zsim-17.ans | 43 + src/zuulv3/images/zsim-18.ans | 43 + src/zuulv3/images/zsim-19.ans | 43 + src/zuulv3/images/zsim-20.ans | 43 + src/zuulv3/images/zsim-21.ans | 43 + src/zuulv3/images/zsim-22.ans | 43 + src/zuulv3/images/zsim-keyline.ans | 45 ++ src/zuulv3/images/zuul-status.ans | 49 ++ src/zuulv3/images/zuul.ans | 43 + src/zuulv3/start.sh | 8 + src/zuulv3/zuul.rst | 1326 +++++++++++++++++++++++++++++++ 92 files changed, 4961 insertions(+) create mode 100644 src/zuulv3/cp437utf8.py create mode 100644 src/zuulv3/images/01-gerrit.png create mode 100644 src/zuulv3/images/02-status1.png create mode 100644 src/zuulv3/images/03-status2.png create mode 100644 src/zuulv3/images/04-health.png create mode 100644 src/zuulv3/images/ansible.ans create mode 100644 src/zuulv3/images/architecture.ans create mode 100644 src/zuulv3/images/circle.ans create mode 100644 src/zuulv3/images/color-gertty.ans create mode 100755 src/zuulv3/images/convert.sh create mode 100644 src/zuulv3/images/crd.ans create mode 100644 src/zuulv3/images/cursor.ans create mode 100644 src/zuulv3/images/cursor2.ans create mode 100644 src/zuulv3/images/openstack.ans create mode 100644 src/zuulv3/images/orig/ansible.ans create mode 100644 src/zuulv3/images/orig/architecture.ans create mode 100644 src/zuulv3/images/orig/circle.ans create mode 100644 src/zuulv3/images/orig/color-gertty.ans create mode 100644 src/zuulv3/images/orig/crd.ans create mode 100644 src/zuulv3/images/orig/cursor.ans create mode 100644 src/zuulv3/images/orig/cursor2.ans create mode 100644 src/zuulv3/images/orig/openstack.ans create mode 100644 src/zuulv3/images/orig/questions.ans create mode 100644 src/zuulv3/images/orig/redhat.ans create mode 100644 src/zuulv3/images/orig/startup1.ans create mode 100644 src/zuulv3/images/orig/startup2.ans create mode 100644 src/zuulv3/images/orig/td.ans create mode 100644 src/zuulv3/images/orig/testslide.ans create mode 100644 src/zuulv3/images/orig/title.ans create mode 100644 src/zuulv3/images/orig/workflow.ans create mode 100644 src/zuulv3/images/orig/zsim-00.ans create mode 100644 src/zuulv3/images/orig/zsim-01.ans create mode 100644 src/zuulv3/images/orig/zsim-02.ans create mode 100644 src/zuulv3/images/orig/zsim-03.ans create mode 100644 src/zuulv3/images/orig/zsim-04.ans create mode 100644 src/zuulv3/images/orig/zsim-05.ans create mode 100644 src/zuulv3/images/orig/zsim-06.ans create mode 100644 src/zuulv3/images/orig/zsim-07.ans create mode 100644 src/zuulv3/images/orig/zsim-08.ans create mode 100644 src/zuulv3/images/orig/zsim-09.ans create mode 100644 src/zuulv3/images/orig/zsim-10.ans create mode 100644 src/zuulv3/images/orig/zsim-11.ans create mode 100644 src/zuulv3/images/orig/zsim-12.ans create mode 100644 src/zuulv3/images/orig/zsim-13.ans create mode 100644 src/zuulv3/images/orig/zsim-14.ans create mode 100644 src/zuulv3/images/orig/zsim-15.ans create mode 100644 src/zuulv3/images/orig/zsim-16.ans create mode 100644 src/zuulv3/images/orig/zsim-17.ans create mode 100644 src/zuulv3/images/orig/zsim-18.ans create mode 100644 src/zuulv3/images/orig/zsim-19.ans create mode 100644 src/zuulv3/images/orig/zsim-20.ans create mode 100644 src/zuulv3/images/orig/zsim-21.ans create mode 100644 src/zuulv3/images/orig/zsim-22.ans create mode 100644 src/zuulv3/images/orig/zsim-keyline.ans create mode 100644 src/zuulv3/images/orig/zuul-status.ans create mode 100644 src/zuulv3/images/orig/zuul.ans create mode 100644 src/zuulv3/images/questions.ans create mode 100644 src/zuulv3/images/redhat.ans create mode 100644 src/zuulv3/images/startup1.ans create mode 100644 src/zuulv3/images/startup2.ans create mode 100644 src/zuulv3/images/td.ans create mode 100644 src/zuulv3/images/testslide.ans create mode 100644 src/zuulv3/images/title.ans create mode 100644 src/zuulv3/images/workflow.ans create mode 100644 src/zuulv3/images/zsim-00.ans create mode 100644 src/zuulv3/images/zsim-01.ans create mode 100644 src/zuulv3/images/zsim-02.ans create mode 100644 src/zuulv3/images/zsim-03.ans create mode 100644 src/zuulv3/images/zsim-04.ans create mode 100644 src/zuulv3/images/zsim-05.ans create mode 100644 src/zuulv3/images/zsim-06.ans create mode 100644 src/zuulv3/images/zsim-07.ans create mode 100644 src/zuulv3/images/zsim-08.ans create mode 100644 src/zuulv3/images/zsim-09.ans create mode 100644 src/zuulv3/images/zsim-10.ans create mode 100644 src/zuulv3/images/zsim-11.ans create mode 100644 src/zuulv3/images/zsim-12.ans create mode 100644 src/zuulv3/images/zsim-13.ans create mode 100644 src/zuulv3/images/zsim-14.ans create mode 100644 src/zuulv3/images/zsim-15.ans create mode 100644 src/zuulv3/images/zsim-16.ans create mode 100644 src/zuulv3/images/zsim-17.ans create mode 100644 src/zuulv3/images/zsim-18.ans create mode 100644 src/zuulv3/images/zsim-19.ans create mode 100644 src/zuulv3/images/zsim-20.ans create mode 100644 src/zuulv3/images/zsim-21.ans create mode 100644 src/zuulv3/images/zsim-22.ans create mode 100644 src/zuulv3/images/zsim-keyline.ans create mode 100644 src/zuulv3/images/zuul-status.ans create mode 100644 src/zuulv3/images/zuul.ans create mode 100755 src/zuulv3/start.sh create mode 100644 src/zuulv3/zuul.rst diff --git a/src/zuulv3/cp437utf8.py b/src/zuulv3/cp437utf8.py new file mode 100644 index 0000000..9b1b629 --- /dev/null +++ b/src/zuulv3/cp437utf8.py @@ -0,0 +1,69 @@ +# _______ +# ____________ _______ _\__ /_________ ___ _____ +# | _ _ \ _ | ____\ _ / | |/ _ \ +# | / / / / | | | /___/ _ | | / / +# |___/___/ /___/____|________|___ | |_| |___|_____/ +# \__/ |___| +# +# +# (c) 2009-2012 Wijnand Modderman-Lenstra +# MIT License +# + +CP437 = ( + u'\u0000', u'\u0001', u'\u0002', u'\u0003', u'\u0004', u'\u0005', + u'\u0006', u'\u0007', u'\u0008', u'\u0009', u'\u000A', u'\u000B', + u'\u000C', u'\u000D', u'\u000E', u'\u000F', u'\u0010', u'\u0011', + u'\u0012', u'\u0013', u'\u0014', u'\u0015', u'\u0016', u'\u0017', + u'\u0018', u'\u0019', u'\u001A', u'\u001B', u'\u001C', u'\u001D', + u'\u001E', u'\u001F', u'\u0020', u'\u0021', u'\u0022', u'\u0023', + u'\u0024', u'\u0025', u'\u0026', u'\u0027', u'\u0028', u'\u0029', + u'\u002A', u'\u002B', u'\u002C', u'\u002D', u'\u002E', u'\u002F', + u'\u0030', u'\u0031', u'\u0032', u'\u0033', u'\u0034', u'\u0035', + u'\u0036', u'\u0037', u'\u0038', u'\u0039', u'\u003A', u'\u003B', + u'\u003C', u'\u003D', u'\u003E', u'\u003F', u'\u0040', u'\u0041', + u'\u0042', u'\u0043', u'\u0044', u'\u0045', u'\u0046', u'\u0047', + u'\u0048', u'\u0049', u'\u004A', u'\u004B', u'\u004C', u'\u004D', + u'\u004E', u'\u004F', u'\u0050', u'\u0051', u'\u0052', u'\u0053', + u'\u0054', u'\u0055', u'\u0056', u'\u0057', u'\u0058', u'\u0059', + u'\u005A', u'\u005B', u'\u005C', u'\u005D', u'\u005E', u'\u005F', + u'\u0060', u'\u0061', u'\u0062', u'\u0063', u'\u0064', u'\u0065', + u'\u0066', u'\u0067', u'\u0068', u'\u0069', u'\u006A', u'\u006B', + u'\u006C', u'\u006D', u'\u006E', u'\u006F', u'\u0070', u'\u0071', + u'\u0072', u'\u0073', u'\u0074', u'\u0075', u'\u0076', u'\u0077', + u'\u0078', u'\u0079', u'\u007A', u'\u007B', u'\u007C', u'\u007D', + u'\u007E', u'\u007F', u'\u00C7', u'\u00FC', u'\u00E9', u'\u00E2', + u'\u00E4', u'\u00E0', u'\u00E5', u'\u00E7', u'\u00EA', u'\u00EB', + u'\u00E8', u'\u00EF', u'\u00EE', u'\u00EC', u'\u00C4', u'\u00C5', + u'\u00C9', u'\u00E6', u'\u00C6', u'\u00F4', u'\u00F6', u'\u00F2', + u'\u00FB', u'\u00F9', u'\u00FF', u'\u00D6', u'\u00DC', u'\u00A2', + u'\u00A3', u'\u00A5', u'\u20A7', u'\u0192', u'\u00E1', u'\u00ED', + u'\u00F3', u'\u00FA', u'\u00F1', u'\u00D1', u'\u00AA', u'\u00BA', + u'\u00BF', u'\u2310', u'\u00AC', u'\u00BD', u'\u00BC', u'\u00A1', + u'\u00AB', u'\u00BB', u'\u2591', u'\u2592', u'\u2593', u'\u2502', + u'\u2524', u'\u2561', u'\u2562', u'\u2556', u'\u2555', u'\u2563', + u'\u2551', u'\u2557', u'\u255D', u'\u255C', u'\u255B', u'\u2510', + u'\u2514', u'\u2534', u'\u252C', u'\u251C', u'\u2500', u'\u253C', + u'\u255E', u'\u255F', u'\u255A', u'\u2554', u'\u2569', u'\u2566', + u'\u2560', u'\u2550', u'\u256C', u'\u2567', u'\u2568', u'\u2564', + u'\u2565', u'\u2559', u'\u2558', u'\u2552', u'\u2553', u'\u256B', + u'\u256A', u'\u2518', u'\u250C', u'\u2588', u'\u2584', u'\u258C', + u'\u2590', u'\u2580', u'\u03B1', u'\u00DF', u'\u0393', u'\u03C0', + u'\u03A3', u'\u03C3', u'\u00B5', u'\u03C4', u'\u03A6', u'\u0398', + u'\u03A9', u'\u03B4', u'\u221E', u'\u03C6', u'\u03B5', u'\u2229', + u'\u2261', u'\u00B1', u'\u2265', u'\u2264', u'\u2320', u'\u2321', + u'\u00F7', u'\u2248', u'\u00B0', u'\u2219', u'\u00B7', u'\u221A', + u'\u207F', u'\u00B2', u'\u25A0', u'\u00A0', +) + +def convert(text): + return u''.join([CP437[ord(char)] for char in text]) + +if __name__ == '__main__': + import sys + if len(sys.argv) < 2: + print >>sys.stderr, '%s ' % (sys.argv[0],) + sys.exit(1) + d = file(sys.argv[1]).read() + out = open(sys.argv[2], 'w') + out.write(convert(d).encode('utf8')) diff --git a/src/zuulv3/images/01-gerrit.png b/src/zuulv3/images/01-gerrit.png new file mode 100644 index 0000000..2c8a2c4 Binary files /dev/null and b/src/zuulv3/images/01-gerrit.png differ diff --git a/src/zuulv3/images/02-status1.png b/src/zuulv3/images/02-status1.png new file mode 100644 index 0000000..7b350a8 Binary files /dev/null and b/src/zuulv3/images/02-status1.png differ diff --git a/src/zuulv3/images/03-status2.png b/src/zuulv3/images/03-status2.png new file mode 100644 index 0000000..0b2607d Binary files /dev/null and b/src/zuulv3/images/03-status2.png differ diff --git a/src/zuulv3/images/04-health.png b/src/zuulv3/images/04-health.png new file mode 100644 index 0000000..750d32c Binary files /dev/null and b/src/zuulv3/images/04-health.png differ diff --git a/src/zuulv3/images/ansible.ans b/src/zuulv3/images/ansible.ans new file mode 100644 index 0000000..0cadddf --- /dev/null +++ b/src/zuulv3/images/ansible.ans @@ -0,0 +1,49 @@ + + + ▄▄▄▄██████▄▄▄▄ + + ▄▄██████████████████▄▄ + + ▄██████████████████████████▄ + + ▄██████████████████████████████▄ + + ▄██████████████████████████████████▄ + + ▄██████████████████ █████████████████▄ + + ▐██████████████████ █████████████████▌ + + ██████████████████ ▄ █████████████████ + + ▐█████████████████ █ ████████████████▌ + + █████████████████ ███ ████████████████ + + ▐████████████████ █████ ███████████████▌ + + ▐███████████████ ▀▀███ ██████████████▌ + + ██████████████ ▄ ▀▀█ █████████████ + + ▐████████████ ████▄▄ ███████████▌ + + ███████████ ████████▄▄ ██████████ + + ▐█████████ █████████████▄ ████████▌ + + ▀███████ ████████████████▄▄▄████████▀ + + ▀██████████████████████████████████▀ + + ▀██████████████████████████████▀ + + ▀██████████████████████████▀ + + ▀▀██████████████████▀▀ + + ▀▀▀▀██████▀▀▀▀ + + + + \ No newline at end of file diff --git a/src/zuulv3/images/architecture.ans b/src/zuulv3/images/architecture.ans new file mode 100644 index 0000000..0698ccc --- /dev/null +++ b/src/zuulv3/images/architecture.ans @@ -0,0 +1,45 @@ + + + + + + + ┌─────────────┐ + + ┌───────┤ Zuul Merger │ + + │ └──────┬──────┘ + + │ │ + + │ │ + +  ┌────┴───┐ ┌──┴───┐ ┌───────────────┐ + + ┌───────┤ Gerrit ├───────┤ Zuul ├─────┤ Zuul Executor │ + + ____ └────────┘ └──┬───┘ │ ┌───────┐ │ + + |... | │ │  │Ansible│ │  + + |... | │ └───┴───┬───┴───┘ + +/______\ ┌────┴─────┐ │ + + o │ Nodepool │ │ + + -|-   └────┬─────┘ │ + + / \ │ │ + + Dev Cloud │  │ + +  Node 1 ─────────────┤ + +  ...  │ + +  Node 2 ─────────────┘ + +(Not to scale)   + + \ No newline at end of file diff --git a/src/zuulv3/images/circle.ans b/src/zuulv3/images/circle.ans new file mode 100644 index 0000000..291eb33 --- /dev/null +++ b/src/zuulv3/images/circle.ans @@ -0,0 +1,49 @@ + ▄▄▄▀▀▀▀▄▄▄ + + ▄▄▀▀▀ ▀▀▀▄▄ + + ▄▀▀ ▀▀▄ + + ▄▀ ▀▄ + + ▄▀ ▀▄ + + ▄▀ ▀▄ + + ▄▀ ▀▄ + + █ █ + + █ █ + +▄▀ ▀▄ + +█ █ + +▀▄ ▄▀ + + █ █ + + █ █ + + ▀▄ ▄▀ + + ▀▄ ▄▀ + + ▀▄ ▄▀ + + ▀▄ ▄▀ + + ▀▄▄ ▄▄▀ + + ▀▀▄▄▄ ▄▄▄▀▀ + + ▀▀▀▄▄▄▄▀▀▀ + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/color-gertty.ans b/src/zuulv3/images/color-gertty.ans new file mode 100644 index 0000000..7530e70 --- /dev/null +++ b/src/zuulv3/images/color-gertty.ans @@ -0,0 +1,57 @@ +Change 31337 + +Owner Carol + +Project hello-world + +Branch master + + + +Name Verified Code-Review + +Alice -1  + +Bob   -1  + +Zuul +1 + + + +docs SUCCESS in 2m 37s + +python27 SUCCESS in 13m 21s + + + +Patch Set 1 4f0a5acfb3752dd1d2fb9153e0f3277c9bcc35ad  + +README.txt +2,-0 + +src/hello.py +28,-4 + + + +< Review > < Diff > < Local Checkout > < Local Cherry-Pick > + + + +Alice + + This change seems gratuitous. I like it! + +Bob + + This is a really good start but i have serious concerns about the + + whitespace choices you have made. + + + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/convert.sh b/src/zuulv3/images/convert.sh new file mode 100755 index 0000000..9acce64 --- /dev/null +++ b/src/zuulv3/images/convert.sh @@ -0,0 +1,4 @@ +#!/bin/sh -x + +cd orig +find . -type f -name \*.ans -exec python ../../cp437utf8.py {} ../{} \; diff --git a/src/zuulv3/images/crd.ans b/src/zuulv3/images/crd.ans new file mode 100644 index 0000000..4b4436d --- /dev/null +++ b/src/zuulv3/images/crd.ans @@ -0,0 +1,29 @@ +* nova 1001,12 Add SSH host keys to intance metadata + + Change-ID: I0ac10 + +* devstack 1020,6 Configure nova to return host keys + + Change-ID: I0bc10 + + Depends-On: I0ac10 + +* novaclient 1030,3 Add test that host keys are returned + + Change-ID: I0dc10 + + Depends-On: I0bc10 + +* shade 1040,1 Return host keys on instance creation + + Change-ID: I0ec10 + + Depends-On: I0dc10 + +* nodepool 1050,5 Verify host keys when booting nodes + + Change-ID: I0fc10 + + Depends-On: I0ec10 + + \ No newline at end of file diff --git a/src/zuulv3/images/cursor.ans b/src/zuulv3/images/cursor.ans new file mode 100644 index 0000000..6d4d108 --- /dev/null +++ b/src/zuulv3/images/cursor.ans @@ -0,0 +1,47 @@ +█ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + █ + + \ No newline at end of file diff --git a/src/zuulv3/images/cursor2.ans b/src/zuulv3/images/cursor2.ans new file mode 100644 index 0000000..a9fe285 --- /dev/null +++ b/src/zuulv3/images/cursor2.ans @@ -0,0 +1,47 @@ +█ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + █ + + \ No newline at end of file diff --git a/src/zuulv3/images/openstack.ans b/src/zuulv3/images/openstack.ans new file mode 100644 index 0000000..e7a66f4 --- /dev/null +++ b/src/zuulv3/images/openstack.ans @@ -0,0 +1,51 @@ +  ▄▄▄▄▄▄▄▄▄▄▄  + + ▄▄▄▄▄▄▄▄▄▄▄▄█████████████████████████▄▄ + + █████████████████████████████████████████▄ + +▐█████████████████▄▄▄▄▄▄▄▄▄▄▄▄▄██████████▄█▌ + +▐██████▄███████████████████████████████████▌ + +▐█████▐████████████████████████████████████▌ + +▐██████████████████████████████████████████▌ + + ▀███████████▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█..██▐███████▌ + + ▄▄..████████▌  ▐ ..█▀▀▀████▌ + +▐███..▀▀▀▀▀██▌ ▐██ █▄▄▄████▌ + +▐█████▄▄▄▄▄██▌ ▐████▐███████▌ + +▐████████████▌ ▐████▐███████▌ + +▐████████████▌ ▐████▐███████▌ + +▐████████████▌ ▐████▐███████▌ + + ▀███████████▌ ▐.. █▐███████▌ + + ▄▄██████████▌  ▄▄▄▄▄████.. ▀▀▀████▌ + +▐██..█████▀▀▀███████████████████████▄▄▄████▌ + +▐███..████▄▄▄██████████████████████████████▌ + +▐████████████▄██████████████▄▄▄▄▄██████████▌ + + █████████████████████████████████████████▀▌ + + ▐██████████████████████████████████████▀▀▀  + + ▐████████████████████████████▀▀▀▀▀▀▀▀▀  + + ▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/ansible.ans b/src/zuulv3/images/orig/ansible.ans new file mode 100644 index 0000000..8605d51 --- /dev/null +++ b/src/zuulv3/images/orig/ansible.ans @@ -0,0 +1,49 @@ + + +  + +  + +  + +  + +  + +   + +   + +   + +   + +   + +   + +   + +   + +   + +    + +    + +   + +  + +  + +  + +  + +  + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/architecture.ans b/src/zuulv3/images/orig/architecture.ans new file mode 100644 index 0000000..94b0720 --- /dev/null +++ b/src/zuulv3/images/orig/architecture.ans @@ -0,0 +1,45 @@ + + + + + + + Ŀ + + Ĵ Zuul Merger  + +   + +   + +   + +  Ŀ Ŀ Ŀ + + Ĵ Gerrit Ĵ Zuul Ĵ Zuul Launcher  + + ____    Ŀ  + + |... |    Ansible  + + |... |   + +/______\ Ŀ  + + o  Nodepool   + + -|-     + + / \   + + Dev Cloud   + +  Node 1 Ĵ + +  ...   + +  Node 2  + +(Not to scale)   + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/circle.ans b/src/zuulv3/images/orig/circle.ans new file mode 100644 index 0000000..d21b2bb --- /dev/null +++ b/src/zuulv3/images/orig/circle.ans @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/color-gertty.ans b/src/zuulv3/images/orig/color-gertty.ans new file mode 100644 index 0000000..7530e70 --- /dev/null +++ b/src/zuulv3/images/orig/color-gertty.ans @@ -0,0 +1,57 @@ +Change 31337 + +Owner Carol + +Project hello-world + +Branch master + + + +Name Verified Code-Review + +Alice -1  + +Bob   -1  + +Zuul +1 + + + +docs SUCCESS in 2m 37s + +python27 SUCCESS in 13m 21s + + + +Patch Set 1 4f0a5acfb3752dd1d2fb9153e0f3277c9bcc35ad  + +README.txt +2,-0 + +src/hello.py +28,-4 + + + +< Review > < Diff > < Local Checkout > < Local Cherry-Pick > + + + +Alice + + This change seems gratuitous. I like it! + +Bob + + This is a really good start but i have serious concerns about the + + whitespace choices you have made. + + + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/crd.ans b/src/zuulv3/images/orig/crd.ans new file mode 100644 index 0000000..4b4436d --- /dev/null +++ b/src/zuulv3/images/orig/crd.ans @@ -0,0 +1,29 @@ +* nova 1001,12 Add SSH host keys to intance metadata + + Change-ID: I0ac10 + +* devstack 1020,6 Configure nova to return host keys + + Change-ID: I0bc10 + + Depends-On: I0ac10 + +* novaclient 1030,3 Add test that host keys are returned + + Change-ID: I0dc10 + + Depends-On: I0bc10 + +* shade 1040,1 Return host keys on instance creation + + Change-ID: I0ec10 + + Depends-On: I0dc10 + +* nodepool 1050,5 Verify host keys when booting nodes + + Change-ID: I0fc10 + + Depends-On: I0ec10 + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/cursor.ans b/src/zuulv3/images/orig/cursor.ans new file mode 100644 index 0000000..d9f6da9 --- /dev/null +++ b/src/zuulv3/images/orig/cursor.ans @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/cursor2.ans b/src/zuulv3/images/orig/cursor2.ans new file mode 100644 index 0000000..93d8570 --- /dev/null +++ b/src/zuulv3/images/orig/cursor2.ans @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/openstack.ans b/src/zuulv3/images/orig/openstack.ans new file mode 100644 index 0000000..4f689c7 --- /dev/null +++ b/src/zuulv3/images/orig/openstack.ans @@ -0,0 +1,51 @@ +   + +  + +  + + + + + + + + + + .. + + ..   .. + +..   + +  + +  + +  + +  + +  ..  + +   ..  + +.. + +.. + + + +  + +   + +   + +   + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/questions.ans b/src/zuulv3/images/orig/questions.ans new file mode 100644 index 0000000..ae2e90a --- /dev/null +++ b/src/zuulv3/images/orig/questions.ans @@ -0,0 +1,27 @@ + + + + + + + + +  + +     + +    + +      + +     + +   + +    + +   + +  + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/redhat.ans b/src/zuulv3/images/orig/redhat.ans new file mode 100644 index 0000000..f297fd0 --- /dev/null +++ b/src/zuulv3/images/orig/redhat.ans @@ -0,0 +1,49 @@ + + +   + +    + +    + +    + +      + +       + +      + +       + +   + +  + +      + +      + +  + +  + +  + +  + +   + +    + +  + +  + +  + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/startup1.ans b/src/zuulv3/images/orig/startup1.ans new file mode 100644 index 0000000..3510a93 --- /dev/null +++ b/src/zuulv3/images/orig/startup1.ans @@ -0,0 +1,39 @@ + Ŀ + + Zuul + + + + + + Ŀ + + + +Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ + +zm1 zm2 zm3 zm4 zm5 zm6 zm7 zm8 + + + +nova keyst swift devst tmpst glanc dg projc + + + + + + + + + + + + + + + + + +   + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/startup2.ans b/src/zuulv3/images/orig/startup2.ans new file mode 100644 index 0000000..3093800 --- /dev/null +++ b/src/zuulv3/images/orig/startup2.ans @@ -0,0 +1,39 @@ + Ŀ + + Zuul + + + + + + Ŀ + + + +Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ Ŀ + +zm1 zm2 zm3 zm4 zm5 zm6 zm7 zm8 + + + +nova keyst swift devst tmpst glanc dg projc + +mastr newt mitak mastr mastr diabl mastr mastr + + + + + + + + + + + + + + + +   + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/td.ans b/src/zuulv3/images/orig/td.ans new file mode 100644 index 0000000..c0c5cd6 Binary files /dev/null and b/src/zuulv3/images/orig/td.ans differ diff --git a/src/zuulv3/images/orig/testslide.ans b/src/zuulv3/images/orig/testslide.ans new file mode 100644 index 0000000..5505907 --- /dev/null +++ b/src/zuulv3/images/orig/testslide.ans @@ -0,0 +1,49 @@ +ͻ + + Ŀ  + +    + +    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +  Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +   Test Slide  Test Slide    + +    + +    + +  + +ͼ + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/title.ans b/src/zuulv3/images/orig/title.ans new file mode 100644 index 0000000..82ef305 --- /dev/null +++ b/src/zuulv3/images/orig/title.ans @@ -0,0 +1,45 @@ + ______________ .. .. ______________ + +( (  \ \_____)____(_____/ /  ) ) + + \ ) `'   `' ( / + + )/   \( + + /'  REST APIs and the Return of the  `\  + +O   ___ ___ _ _ ___ ___ _ ___   O + +  / __/ _ \| \| / __|/ _ \| | | __|  + + | (_| (_) | .` \__ \ (_) | |__| _|   + +  \___\___/|_|\_|___/\___/|____|___|  + +  + + Application  + +  + +O  James E. Blair   O + + \. ./  + + )\  ,____ ____,  /( + + / ) / ____\ ____ /____ \ ( \ + +( (_________/_/ ) ( \_\_________) ) + + ~-'  `' `'  `-~  + + + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/workflow.ans b/src/zuulv3/images/orig/workflow.ans new file mode 100644 index 0000000..067cc56 --- /dev/null +++ b/src/zuulv3/images/orig/workflow.ans @@ -0,0 +1,29 @@ + Hack Review Test + + ========= ========== ========== + + + + push approve + + +-------------+ +-------------+ + + | | | | + + +------+--+ +--v----+--+ +--v-------+ + + | | | | | | + + | $EDITOR | | Gerrit | | Zuul | + + | | | | | | + + +------^--+ +--+----^--+ +--+-------+ + + | | | | + + +-------------+ +-------------+ + + clone merge + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-00.ans b/src/zuulv3/images/orig/zsim-00.ans new file mode 100644 index 0000000..4f9ed82 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-00.ans @@ -0,0 +1,43 @@ +00 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-01.ans b/src/zuulv3/images/orig/zsim-01.ans new file mode 100644 index 0000000..a087092 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-01.ans @@ -0,0 +1,43 @@ +01 Zuul Git + + Ŀ + +  Nova #1 Nova Keystone + + badbeef beefcab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-02.ans b/src/zuulv3/images/orig/zsim-02.ans new file mode 100644 index 0000000..8f2938c --- /dev/null +++ b/src/zuulv3/images/orig/zsim-02.ans @@ -0,0 +1,43 @@ +02 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-03.ans b/src/zuulv3/images/orig/zsim-03.ans new file mode 100644 index 0000000..1186441 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-03.ans @@ -0,0 +1,43 @@ +03 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2 + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-04.ans b/src/zuulv3/images/orig/zsim-04.ans new file mode 100644 index 0000000..8344a58 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-04.ans @@ -0,0 +1,43 @@ +04 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2  + +  + +  + +  + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-05.ans b/src/zuulv3/images/orig/zsim-05.ans new file mode 100644 index 0000000..948d831 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-05.ans @@ -0,0 +1,43 @@ +05 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2  + +  + +  + +  + + Ŀ + +  Nova #3 + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-06.ans b/src/zuulv3/images/orig/zsim-06.ans new file mode 100644 index 0000000..be6cf1b --- /dev/null +++ b/src/zuulv3/images/orig/zsim-06.ans @@ -0,0 +1,43 @@ +06 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2  + +  + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-07.ans b/src/zuulv3/images/orig/zsim-07.ans new file mode 100644 index 0000000..e827b4f --- /dev/null +++ b/src/zuulv3/images/orig/zsim-07.ans @@ -0,0 +1,43 @@ +07 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2  + +  + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4 + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-08.ans b/src/zuulv3/images/orig/zsim-08.ans new file mode 100644 index 0000000..e7d5ca5 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-08.ans @@ -0,0 +1,43 @@ +08 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2  + +  + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-09.ans b/src/zuulv3/images/orig/zsim-09.ans new file mode 100644 index 0000000..c5a6f3a --- /dev/null +++ b/src/zuulv3/images/orig/zsim-09.ans @@ -0,0 +1,43 @@ +09 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2 FAILURE + +  + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-10.ans b/src/zuulv3/images/orig/zsim-10.ans new file mode 100644 index 0000000..85e80a2 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-10.ans @@ -0,0 +1,43 @@ +10 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + +  + +  + + Ŀ + +  Keystone #2 FAILURE + +  + +  + +  + + Ŀ + +  Nova #3 CANCELED + + CANCELED + + CANCELED + + CANCELED + + Ŀ + +  Nova #4 CANCELED + + CANCELED + + CANCELED + + CANCELED . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-11.ans b/src/zuulv3/images/orig/zsim-11.ans new file mode 100644 index 0000000..0a7b7e2 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-11.ans @@ -0,0 +1,43 @@ +11 Zuul Git + + Ŀ + +  Nova #1  Nova Keystone + +  badbeef beefcab + + Ŀ  + +  + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + +  + +  + + Ŀ + +  Nova #3 + + + + + + + + Ŀ + +  Nova #4 + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-12.ans b/src/zuulv3/images/orig/zsim-12.ans new file mode 100644 index 0000000..072d29b --- /dev/null +++ b/src/zuulv3/images/orig/zsim-12.ans @@ -0,0 +1,43 @@ +12 Zuul Git + + Ŀ + +  Nova #1 SUCCESS Nova Keystone + + SUCCESS badbeef beefcab + + Ŀ  + +  + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4 + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-13.ans b/src/zuulv3/images/orig/zsim-13.ans new file mode 100644 index 0000000..cf656e3 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-13.ans @@ -0,0 +1,43 @@ +13 Zuul Git + + Ŀ + +  Nova #1 SUCCESS Nova Keystone + + SUCCESS badbeef beefcab + + Ŀ  + + SUCCESS + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-14.ans b/src/zuulv3/images/orig/zsim-14.ans new file mode 100644 index 0000000..0151210 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-14.ans @@ -0,0 +1,43 @@ +14 Zuul Git + + Ŀ + +  Nova #1 SUCCESS Nova Keystone + + SUCCESS badbeef beefcab + + Ŀ SUCCESS + + SUCCESS + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-15.ans b/src/zuulv3/images/orig/zsim-15.ans new file mode 100644 index 0000000..eb63977 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-15.ans @@ -0,0 +1,43 @@ +15 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + +  + +  + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-16.ans b/src/zuulv3/images/orig/zsim-16.ans new file mode 100644 index 0000000..d007060 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-16.ans @@ -0,0 +1,43 @@ +16 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + + + Ŀ + +  Keystone #2 FAILURE + + SUCCESS + + SUCCESS + + SUCCESS + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-17.ans b/src/zuulv3/images/orig/zsim-17.ans new file mode 100644 index 0000000..14c9258 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-17.ans @@ -0,0 +1,43 @@ +17 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + + + + + + + + + + + + + Ŀ + +  Nova #3  + +  + +  + +  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-18.ans b/src/zuulv3/images/orig/zsim-18.ans new file mode 100644 index 0000000..ed780ea --- /dev/null +++ b/src/zuulv3/images/orig/zsim-18.ans @@ -0,0 +1,43 @@ +18 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + + + + + + + + + + + + + Ŀ + +  Nova #3  SUCCESS  + +  SUCCESS  + +  SUCCESS  + +  SUCCESS  + + Ŀ + +  Nova #4  + +  + +  + +  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-19.ans b/src/zuulv3/images/orig/zsim-19.ans new file mode 100644 index 0000000..c82b91c --- /dev/null +++ b/src/zuulv3/images/orig/zsim-19.ans @@ -0,0 +1,43 @@ +19 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + #3 + + + + + + + + + + + + + + + + + + + + + + Ŀ + +  Nova #4  SUCCESS  + +  SUCCESS  + +  + +  SUCCESS  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-20.ans b/src/zuulv3/images/orig/zsim-20.ans new file mode 100644 index 0000000..4d75d8b --- /dev/null +++ b/src/zuulv3/images/orig/zsim-20.ans @@ -0,0 +1,43 @@ +20 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + #3 + + + + + + + + + + + + + + + + + + + + + + Ŀ + +  Nova #4  SUCCESS  + +  SUCCESS  + +  SUCCESS  + +  SUCCESS  . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-21.ans b/src/zuulv3/images/orig/zsim-21.ans new file mode 100644 index 0000000..5847053 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-21.ans @@ -0,0 +1,43 @@ +21 Zuul Git + + + + Nova Keystone + + badbeef beefcab + + #1 + + #3 + + #4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-22.ans b/src/zuulv3/images/orig/zsim-22.ans new file mode 100644 index 0000000..3ad7700 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-22.ans @@ -0,0 +1,43 @@ +22 Zuul Git + + + + Nova Keystone + + badbeef :( + + #1 + + #3 + + #4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zsim-keyline.ans b/src/zuulv3/images/orig/zsim-keyline.ans new file mode 100644 index 0000000..a2c3fb5 --- /dev/null +++ b/src/zuulv3/images/orig/zsim-keyline.ans @@ -0,0 +1,45 @@ + Zuul Git + + + + [X] Nova #1 SUCCESS Nova Keystone + + | SUCCESS * HEAD * HEAD + + |--+ OOOOOOOOO.. + + | | SUCCESS + + | | + + | [X] Keystone #2 FAILURE + + | SUCCESS + + | OOOOOOO.... + + | OOOOOOOOO.. + + | + + [X] Nova #3 OOOOOOO.... + + | OOOOOOO.... + + | OOOOO...... + + | OOOOOO..... + + | + + [X] Nova #4 OOOO....... + + OOOO....... + + OO......... + + OOO........ + + + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zuul-status.ans b/src/zuulv3/images/orig/zuul-status.ans new file mode 100644 index 0000000..d21c0ca --- /dev/null +++ b/src/zuulv3/images/orig/zuul-status.ans @@ -0,0 +1,49 @@ +  + +  Check   Gate  Post  + +[ ]+-----------------+ [ ]+-----------------+ [ ]+-----------------+ + +   |nova 45:20 | | |nova 45:20 |   |nova 45:20 | + +   |321465 13:37 | | |321465 13:37 |   |321465 13:37 | + + +-----------------+ | +-----------------+ +-----------------+ + + | pep8 SUCCESS| | | pep8 SUCCESS| | pep8 SUCCESS| + + | docs  xx  | | | docs  xx  | | docs  xx  | + + | python27 x  | | | python27 x  | | python27 x  | + + | tempest x  | | | tempest x  | | tempest x  | + + +-----------------+ | +-----------------+ +-----------------+ + + |  Release   + +[ ]+-----------------+  +[ ]+---------------+  + +   |nova 45:20 |  |   |nova 45:20 |  + +   |321465 13:37 |  |   |321465 13:37 |  + + +-----------------+  | +---------------+  + + | pep8 FAILURE|  |    + + | docs  xx  | [ ]+-----------------+   + + | python27 x  |   |nova 45:20 |   + + | tempest x  |   |321465 13:37 |   + + +-----------------+   +-----------------+   + +    + +  + +  + + \ No newline at end of file diff --git a/src/zuulv3/images/orig/zuul.ans b/src/zuulv3/images/orig/zuul.ans new file mode 100644 index 0000000..8442c58 --- /dev/null +++ b/src/zuulv3/images/orig/zuul.ans @@ -0,0 +1,43 @@ +͵ + + Ĵ + +  + + + + + + + +  _____ _ + + |__ / _ _ _| | + + / / | | | | | | | + + / /| |_| | |_| | | + + /____\__,_|\__,_|_| + + + + + + + + + + + +  + + Ĵ + +͵ + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/questions.ans b/src/zuulv3/images/questions.ans new file mode 100644 index 0000000..450e9ac --- /dev/null +++ b/src/zuulv3/images/questions.ans @@ -0,0 +1,27 @@ + + + + + + + + + ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + + █ ▄ ▄▄▄▄▄  ▄ █ + + █ ███▀▀██▄ █ + + █ ▀▀  ▄███ █ + + █  ███▀▀ █ + + █ ▀▀ █ + + █ ██▄ █ + + █ ▀ ▀▀▀ ▀ █ + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + + \ No newline at end of file diff --git a/src/zuulv3/images/redhat.ans b/src/zuulv3/images/redhat.ans new file mode 100644 index 0000000..ca7597e --- /dev/null +++ b/src/zuulv3/images/redhat.ans @@ -0,0 +1,49 @@ + + +  ▄████▄▄▄▄███▄▄▄▄ + +  █▀██████████▄ █▄  + + ▐█▄ ▀▀ ▄██████████▄ + + ███ ▄███████████████  + +  ▄▄███   ▀▀██████████████████▄ + +  ██████▄    ▀▀███████████████▌ + +  ▐███████▄   ▀██████████▀ ██▄▄ + + ▐█████████▄▄    █████████▄██████▌  + + ▀████████████▄▄ ███████████████▌ + + ▀▀████████████████████████████▀ + + ▐██▄   ▀▀█████████████████████▀  + +  ▀███▄██▄  ▀▀▀▀████████▀▀▀▀  + + ▄▄██▄ █████▄ ▄▄ ▄▄ ▄▄▄  + + ████████▄▄▄███████▄▄███████████  + + █████████████████████▄▄▀▀▄███▌ ▄▄  + + ▀███████████████████████████ █████  + + ▀███████████████████████▀ ▄▄████▀   + + ▀████████████████████▀ ▄█████▀    + + ▀██████████████████████▀  + + ▀███████████████▀▀  + + ▀▀▀█████▀▀▀  + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/startup1.ans b/src/zuulv3/images/startup1.ans new file mode 100644 index 0000000..c657cdb --- /dev/null +++ b/src/zuulv3/images/startup1.ans @@ -0,0 +1,39 @@ + ┌──────┐ + + │ Zuul │ + + └──┬───┘ + + │ + + ┌─────┬─────┬─────┬──┴──┬─────┬─────┬─────┐ + + │ │ │ │ │ │ │ │ + +┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ + +│zm1│ │zm2│ │zm3│ │zm4│ │zm5│ │zm6│ │zm7│ │zm8│ + +└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ + +nova keyst swift devst tmpst glanc dg projc + + + + + + + + + + + + + + + + + +   + + \ No newline at end of file diff --git a/src/zuulv3/images/startup2.ans b/src/zuulv3/images/startup2.ans new file mode 100644 index 0000000..65e44fb --- /dev/null +++ b/src/zuulv3/images/startup2.ans @@ -0,0 +1,39 @@ + ┌──────┐ + + │ Zuul │ + + └──┬───┘ + + │ + + ┌─────┬─────┬─────┬──┴──┬─────┬─────┬─────┐ + + │ │ │ │ │ │ │ │ + +┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ + +│zm1│ │zm2│ │zm3│ │zm4│ │zm5│ │zm6│ │zm7│ │zm8│ + +└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ + +nova keyst swift devst tmpst glanc dg projc + +mastr newt mitak mastr mastr diabl mastr mastr + + + + + + + + + + + + + + + +   + + \ No newline at end of file diff --git a/src/zuulv3/images/td.ans b/src/zuulv3/images/td.ans new file mode 100644 index 0000000..dcbf243 Binary files /dev/null and b/src/zuulv3/images/td.ans differ diff --git a/src/zuulv3/images/testslide.ans b/src/zuulv3/images/testslide.ans new file mode 100644 index 0000000..f2feea4 --- /dev/null +++ b/src/zuulv3/images/testslide.ans @@ -0,0 +1,49 @@ +╔══════════════════════════════════════════════════════════════════╗ + +║ ┌──────────────────────────────────────────────────────────────┐ ║ + +║ │ │ ║ + +║ │ │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │ Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │  Test Slide  Test Slide  │ ║ + +║ │ │ ║ + +║ │ │ ║ + +║ └──────────────────────────────────────────────────────────────┘ ║ + +╚══════════════════════════════════════════════════════════════════╝ + + \ No newline at end of file diff --git a/src/zuulv3/images/title.ans b/src/zuulv3/images/title.ans new file mode 100644 index 0000000..c784327 --- /dev/null +++ b/src/zuulv3/images/title.ans @@ -0,0 +1,45 @@ + ______________ .──. .──. ______________ + +( (  \ \_____)____(_____/ /  ) ) + + \ ) `─────'   `─────' ( / + + )/   \( + + /'  REST APIs and the Return of the  `\  + +O   ___ ___ _ _ ___ ___ _ ___   O + +│  / __/ _ \| \| / __|/ _ \| | | __| │ + +│ | (_| (_) | .` \__ \ (_) | |__| _|  │ + +│  \___\___/|_|\_|___/\___/|____|___| │ + +│ │ + +│ Application │ + +│ │ + +O  James E. Blair   O + + \. ./  + + )\  ,____ ____,  /( + + / ) / ____\ ____ /____ \ ( \ + +( (_________/_/ ) ( \_\_________) ) + + ~-'  `──' `──'  `-~  + + + + + + + + + + \ No newline at end of file diff --git a/src/zuulv3/images/workflow.ans b/src/zuulv3/images/workflow.ans new file mode 100644 index 0000000..067cc56 --- /dev/null +++ b/src/zuulv3/images/workflow.ans @@ -0,0 +1,29 @@ + Hack Review Test + + ========= ========== ========== + + + + push approve + + +-------------+ +-------------+ + + | | | | + + +------+--+ +--v----+--+ +--v-------+ + + | | | | | | + + | $EDITOR | | Gerrit | | Zuul | + + | | | | | | + + +------^--+ +--+----^--+ +--+-------+ + + | | | | + + +-------------+ +-------------+ + + clone merge + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-00.ans b/src/zuulv3/images/zsim-00.ans new file mode 100644 index 0000000..bbfdc82 --- /dev/null +++ b/src/zuulv3/images/zsim-00.ans @@ -0,0 +1,43 @@ +00 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-01.ans b/src/zuulv3/images/zsim-01.ans new file mode 100644 index 0000000..742a968 --- /dev/null +++ b/src/zuulv3/images/zsim-01.ans @@ -0,0 +1,43 @@ +01 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 Nova Keystone + + └───┘ ■badbeef ■beefcab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-02.ans b/src/zuulv3/images/zsim-02.ans new file mode 100644 index 0000000..28809c2 --- /dev/null +++ b/src/zuulv3/images/zsim-02.ans @@ -0,0 +1,43 @@ +02 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └───┘ █████████ ■badbeef ■beefcab + + █████████ + + █████████ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-03.ans b/src/zuulv3/images/zsim-03.ans new file mode 100644 index 0000000..c6a2bfd --- /dev/null +++ b/src/zuulv3/images/zsim-03.ans @@ -0,0 +1,43 @@ +03 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 + + └───┘ + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-04.ans b/src/zuulv3/images/zsim-04.ans new file mode 100644 index 0000000..8893ed8 --- /dev/null +++ b/src/zuulv3/images/zsim-04.ans @@ -0,0 +1,43 @@ +04 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 █████████ + + └───┘ █████████ + + █████████ + + █████████ + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-05.ans b/src/zuulv3/images/zsim-05.ans new file mode 100644 index 0000000..be3cd9e --- /dev/null +++ b/src/zuulv3/images/zsim-05.ans @@ -0,0 +1,43 @@ +05 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 + + └───┘ + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-06.ans b/src/zuulv3/images/zsim-06.ans new file mode 100644 index 0000000..64de1d6 --- /dev/null +++ b/src/zuulv3/images/zsim-06.ans @@ -0,0 +1,43 @@ +06 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └───┘ █████████ + + █████████ + + █████████ + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-07.ans b/src/zuulv3/images/zsim-07.ans new file mode 100644 index 0000000..6a34279 --- /dev/null +++ b/src/zuulv3/images/zsim-07.ans @@ -0,0 +1,43 @@ +07 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 + + └───┘ + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-08.ans b/src/zuulv3/images/zsim-08.ans new file mode 100644 index 0000000..318c67b --- /dev/null +++ b/src/zuulv3/images/zsim-08.ans @@ -0,0 +1,43 @@ +08 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-09.ans b/src/zuulv3/images/zsim-09.ans new file mode 100644 index 0000000..441979f --- /dev/null +++ b/src/zuulv3/images/zsim-09.ans @@ -0,0 +1,43 @@ +09 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 FAILURE + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-10.ans b/src/zuulv3/images/zsim-10.ans new file mode 100644 index 0000000..818789e --- /dev/null +++ b/src/zuulv3/images/zsim-10.ans @@ -0,0 +1,43 @@ +10 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 FAILURE + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 CANCELED + + └─┬─┘ CANCELED + + │ CANCELED + + │ CANCELED + + ┌─┴─┐ + + │▐█▌│ Nova #4 CANCELED + + └───┘ CANCELED + + CANCELED + + CANCELED . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-11.ans b/src/zuulv3/images/zsim-11.ans new file mode 100644 index 0000000..ddb8bde --- /dev/null +++ b/src/zuulv3/images/zsim-11.ans @@ -0,0 +1,43 @@ +11 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 █████████ Nova Keystone + + └─┬─┘ █████████ ■badbeef ■beefcab + + └──┐ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Keystone #2 FAILURE + + └───┘ SUCCESS + + █████████ + + █████████ + + ┌───┐ + + │▐█▌│ Nova #3 + + └─┬─┘ + + │ + + │ + + ┌─┴─┐ + + │▐█▌│ Nova #4 + + └───┘ + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-12.ans b/src/zuulv3/images/zsim-12.ans new file mode 100644 index 0000000..69eef26 --- /dev/null +++ b/src/zuulv3/images/zsim-12.ans @@ -0,0 +1,43 @@ +12 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 SUCCESS Nova Keystone + + └─┬─┘ SUCCESS ■badbeef ■beefcab + + ├──┐ █████████ + + │ │ █████████ + + │┌─┴─┐ + + ││▐█▌│ Keystone #2 FAILURE + + │└───┘ SUCCESS + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 + + └───┘ + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-13.ans b/src/zuulv3/images/zsim-13.ans new file mode 100644 index 0000000..5b8b54b --- /dev/null +++ b/src/zuulv3/images/zsim-13.ans @@ -0,0 +1,43 @@ +13 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 SUCCESS Nova Keystone + + └─┬─┘ SUCCESS ■badbeef ■beefcab + + ├──┐ █████████ + + │ │ SUCCESS + + │┌─┴─┐ + + ││▐█▌│ Keystone #2 FAILURE + + │└───┘ SUCCESS + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-14.ans b/src/zuulv3/images/zsim-14.ans new file mode 100644 index 0000000..f0ec335 --- /dev/null +++ b/src/zuulv3/images/zsim-14.ans @@ -0,0 +1,43 @@ +14 Zuul Git + + ┌───┐ + + │▐█▌│ Nova #1 SUCCESS Nova Keystone + + └─┬─┘ SUCCESS ■badbeef ■beefcab + + ├──┐ SUCCESS + + │ │ SUCCESS + + │┌─┴─┐ + + ││▐█▌│ Keystone #2 FAILURE + + │└───┘ SUCCESS + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-15.ans b/src/zuulv3/images/zsim-15.ans new file mode 100644 index 0000000..5ea15df --- /dev/null +++ b/src/zuulv3/images/zsim-15.ans @@ -0,0 +1,43 @@ +15 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + + + │┌───┐ + + ││▐█▌│ Keystone #2 FAILURE + + │└───┘ SUCCESS + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-16.ans b/src/zuulv3/images/zsim-16.ans new file mode 100644 index 0000000..0d18c1b --- /dev/null +++ b/src/zuulv3/images/zsim-16.ans @@ -0,0 +1,43 @@ +16 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + + + │┌───┐ + + ││▐█▌│ Keystone #2 FAILURE + + │└───┘ SUCCESS + + │ SUCCESS + + │ SUCCESS + + ┌─┴─┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-17.ans b/src/zuulv3/images/zsim-17.ans new file mode 100644 index 0000000..b301dc8 --- /dev/null +++ b/src/zuulv3/images/zsim-17.ans @@ -0,0 +1,43 @@ +17 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + + + + + + + + + + + + + ┌───┐ + + │▐█▌│ Nova #3 █████████ + + └─┬─┘ █████████ + + │ █████████ + + │ █████████ + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-18.ans b/src/zuulv3/images/zsim-18.ans new file mode 100644 index 0000000..da25c2e --- /dev/null +++ b/src/zuulv3/images/zsim-18.ans @@ -0,0 +1,43 @@ +18 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + + + + + + + + + + + + + ┌───┐ + + │▐█▌│ Nova #3  SUCCESS  + + └─┬─┘  SUCCESS  + + │  SUCCESS  + + │  SUCCESS  + + ┌─┴─┐ + + │▐█▌│ Nova #4 █████████ + + └───┘ █████████ + + █████████ + + █████████ . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-19.ans b/src/zuulv3/images/zsim-19.ans new file mode 100644 index 0000000..14b9e51 --- /dev/null +++ b/src/zuulv3/images/zsim-19.ans @@ -0,0 +1,43 @@ +19 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + ■#3 + + + + + + + + + + + + + + + + + + + + + + ┌───┐ + + │▐█▌│ Nova #4  SUCCESS  + + └───┘  SUCCESS  + + █████████ + +  SUCCESS  . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-20.ans b/src/zuulv3/images/zsim-20.ans new file mode 100644 index 0000000..e1a3b8c --- /dev/null +++ b/src/zuulv3/images/zsim-20.ans @@ -0,0 +1,43 @@ +20 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + ■#3 + + + + + + + + + + + + + + + + + + + + + + ┌───┐ + + │▐█▌│ Nova #4  SUCCESS  + + └───┘  SUCCESS  + +  SUCCESS  + +  SUCCESS  . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-21.ans b/src/zuulv3/images/zsim-21.ans new file mode 100644 index 0000000..ccfeef2 --- /dev/null +++ b/src/zuulv3/images/zsim-21.ans @@ -0,0 +1,43 @@ +21 Zuul Git + + + + Nova Keystone + + ■badbeef ■beefcab + + ■#1 + + ■#3 + + ■#4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-22.ans b/src/zuulv3/images/zsim-22.ans new file mode 100644 index 0000000..8be6db5 --- /dev/null +++ b/src/zuulv3/images/zsim-22.ans @@ -0,0 +1,43 @@ +22 Zuul Git + + + + Nova Keystone + + ■badbeef :( + + ■#1 + + ■#3 + + ■#4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + \ No newline at end of file diff --git a/src/zuulv3/images/zsim-keyline.ans b/src/zuulv3/images/zsim-keyline.ans new file mode 100644 index 0000000..a2c3fb5 --- /dev/null +++ b/src/zuulv3/images/zsim-keyline.ans @@ -0,0 +1,45 @@ + Zuul Git + + + + [X] Nova #1 SUCCESS Nova Keystone + + | SUCCESS * HEAD * HEAD + + |--+ OOOOOOOOO.. + + | | SUCCESS + + | | + + | [X] Keystone #2 FAILURE + + | SUCCESS + + | OOOOOOO.... + + | OOOOOOOOO.. + + | + + [X] Nova #3 OOOOOOO.... + + | OOOOOOO.... + + | OOOOO...... + + | OOOOOO..... + + | + + [X] Nova #4 OOOO....... + + OOOO....... + + OO......... + + OOO........ + + + + \ No newline at end of file diff --git a/src/zuulv3/images/zuul-status.ans b/src/zuulv3/images/zuul-status.ans new file mode 100644 index 0000000..d21c0ca --- /dev/null +++ b/src/zuulv3/images/zuul-status.ans @@ -0,0 +1,49 @@ +  + +  Check   Gate  Post  + +[ ]+-----------------+ [ ]+-----------------+ [ ]+-----------------+ + +   |nova 45:20 | | |nova 45:20 |   |nova 45:20 | + +   |321465 13:37 | | |321465 13:37 |   |321465 13:37 | + + +-----------------+ | +-----------------+ +-----------------+ + + | pep8 SUCCESS| | | pep8 SUCCESS| | pep8 SUCCESS| + + | docs  xx  | | | docs  xx  | | docs  xx  | + + | python27 x  | | | python27 x  | | python27 x  | + + | tempest x  | | | tempest x  | | tempest x  | + + +-----------------+ | +-----------------+ +-----------------+ + + |  Release   + +[ ]+-----------------+  +[ ]+---------------+  + +   |nova 45:20 |  |   |nova 45:20 |  + +   |321465 13:37 |  |   |321465 13:37 |  + + +-----------------+  | +---------------+  + + | pep8 FAILURE|  |    + + | docs  xx  | [ ]+-----------------+   + + | python27 x  |   |nova 45:20 |   + + | tempest x  |   |321465 13:37 |   + + +-----------------+   +-----------------+   + +    + +  + +  + + \ No newline at end of file diff --git a/src/zuulv3/images/zuul.ans b/src/zuulv3/images/zuul.ans new file mode 100644 index 0000000..6369083 --- /dev/null +++ b/src/zuulv3/images/zuul.ans @@ -0,0 +1,43 @@ +══════════════════════╡│││╞═════════════════════ + + ────────────────────┤│├─────────────────── + + ──────────────────│───────────────── + + + + + + + +  _____ _ + + |__ / _ _ _| | + + / / | | | | | | | + + / /| |_| | |_| | | + + /____\__,_|\__,_|_| + + + + + + + + + + + + ──────────────────│───────────────── + + ────────────────────┤│├─────────────────── + +══════════════════════╡│││╞═════════════════════ + + + + + + \ No newline at end of file diff --git a/src/zuulv3/start.sh b/src/zuulv3/start.sh new file mode 100755 index 0000000..9eaf8b6 --- /dev/null +++ b/src/zuulv3/start.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +mate-terminal --geometry 68x24 -x presentty $(pwd)/zuul.rst & +#geeqie -t images & + +sleep 1 + +mate-terminal --maximize -x presentty-console $(pwd)/zuul.rst & diff --git a/src/zuulv3/zuul.rst b/src/zuulv3/zuul.rst new file mode 100644 index 0000000..2070ad6 --- /dev/null +++ b/src/zuulv3/zuul.rst @@ -0,0 +1,1326 @@ +. display in 68x24 +.. display in 88x24 + +.. pygments yaml? (only file breaks (---) tinted) +.. slide on high level v3 changes +.. slide on nodepool + +.. transition:: dissolve + :duration: 0.4 + +Test Slide +========== +.. hidetitle:: + +.. ansi:: images/testslide.ans + +Preshow +======= +.. hidetitle:: + +.. ansi:: images/cursor.ans images/cursor2.ans + +Zuul +==== +.. hidetitle:: +.. ansi:: images/zuul.ans + +Red Hat +======= + +.. hidetitle:: +.. container:: handout + + * I work for Red Hat in the Office of Technology as the Chief Architect + for CI/CD + +.. ansi:: images/redhat.ans + +OpenStack +========= +.. container:: handout + + * I work on OpenStack. + * I sit on the Technical Committee. I was on the Board of Directors + +.. hidetitle:: +.. ansi:: images/openstack.ans + +OpenStack Infra +=============== +.. container:: handout + + * My primary technical role with OpenStack is working on the OpenStack CI + system. + +:: + + "most insane CI infrastructure I've ever been a part of" + + -- Alex Gaynor + +Zuul +==== +.. container:: handout + + * As part of working on OpenStack Infra I work on Zuul + +.. hidetitle:: +.. ansi:: images/zuul.ans + + +Ansible +======= + +.. container:: handout + + * And as part of working on Zuul and on OpenStack I work on Ansible + * I maintain the OpenStack modules for Ansible as well as the shade library + +.. hidetitle:: +.. ansi:: images/ansible.ans + +Presentation Checklist +====================== + +.. container:: handout + + * Every good presentation needs logos, so we're starting well + +:: + + [X] Logos + + +Spoilers +======== + +* What the old version of Zuul (v2) was + + * a nifty project gating system + +* What the new version of Zuul (v3) is + + * multinode support + * live configuration changes + * better job definition + * sharable job definition + * testing like deployment + +What do I mean by Massive Scale? +================================ + + * Contributors (~2k / 6 month period) + * Companies + * Changes + * Code Repositories (1827 as of this morning) + * Communities + +OpenStack Scale +=============== + + * 2,000 git repositories + * 2KJPH (2,000 jobs per hour) + * Nodes 14 Regions off 5 OpenStack Public Clouds and 2 Private Clouds + (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud, HPE, Red Hat) + * 10,000 changes merged per month + +OpenStack Scale +=============== + + * 2,000 git repositories + * 2KJPH (2,000 jobs per hour) + * Nodes 14 Regions off 5 OpenStack Public Clouds and 2 Private Clouds + (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud, HPE, Red Hat) + * 10,000 changes merged per month + + * By comparison, our friends at the amazing project Ansible received + 13,000 changes and had merged 8,000 of them in its first 4 years. + +Pretty Things to Look for Scale +=============================== + + * http://grafana.openstack.org/dashboard/db/zuul-status + * http://grafana.openstack.org/dashboard/db/nodepool + * http://zuulv3.openstack.org/ + +Dealing With Scale +================== + + * Egalitarian Process + * Balance Centralized vs Distributed + * Code Review plus Enforced Testing + +OpenStack Developer Workflow +============================ +.. container:: handout + +:: + + Hack Review Test + ========= ========== ========== + + push approve + +-------------+ +-------------+ + | | | | + +------+--+ +--v----+--+ +--v-------+ + | | | | | | + | $EDITOR | | Gerrit | | Zuul | + | | | | | | + +------^--+ +--+----^--+ +--+-------+ + | | | | + +-------------+ +-------------+ + clone merge + +Gerrit +====== +.. hidetitle:: +.. container:: handout + + the primary interface for our developers is the code review system + gerrit. No matter how complex zuul becomes, this is still primary + focus we want the developers to have. + + explain patch upload, zuul runs, test results displayed in gerrit + this is all the interface to zuul users need to see + + but zuul is doing a lot of work behind the scenes, and if you look + closer, this is what you see + +.. ansi:: images/color-gertty.ans + +Github Developer Workflow +========================= +.. container:: handout + +:: + + Hack Review Test + ========= ========== ========== + + push approve + +-------------+ +-------------+ + | | | | + +------+--+ +--v----+--+ +--v-------+ + | | | | | | + | $EDITOR | | Github | | Zuul | + | | | | | | + +------^--+ +--+----^--+ +--+-------+ + | | | | + +-------------+ +-------------+ + clone merge + +Zuul Architecture +================= + +.. ansi:: images/architecture.ans + +Presentation Checklist +====================== + +:: + + [x] Logos + [x] Architecture diagram + +Nodepool +======== + +.. container:: handout + + nodepool builds nodes for zuul + Remember that 2,000 jobs per hour number? + Each job gets a fresh VM - that's 2,000 VMs per hours + Treats our 20 regions across 9 clouds as one REALLY big cloud + +:: + + * A separate program that works very closely with *zuul* + * Builds images daily and uploads to clouds + * Creates and destroys (at least) a VM for every job + +Nodepool can use pre-existing images, BUT ... +============================================= + + * Clouds have 'helpful' differences between base images + * Cloud images have 'helpful' software pre-installed + * Distros have 'helpful' different user names + * Most clouds use DHCP for networking, but some don't + * We can add pre-cached content + +Gating +====== + +.. cowsay:: Every change proposed for a repository is tested before + it merges. + +Co-gating +========= + +.. cowsay:: Changes to a set of repositories merge monotonically such + that each change is tested with the current state of all + other related repositories before it merges. + +Parallel Co-gating +================== + +.. cowsay:: Changes are serialized such that each change is tested + with all of the changes ahead of it to satisfy the + gating requirement while being able to run tests for + multiple changes simultaneously. + +Presentation Checklist +====================== + +:: + + [x] Logos + [x] Architecture diagram + [x] Cows + +Zuul Simulation +=============== +.. transition:: pan +.. container:: handout + + * That was a lot of words - let's walk through it one step at a time + * Here we have two git repos, called nova and keystone, and their + current HEAD state + +.. ansi:: images/zsim-00.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * A change is approved for Nova + +.. ansi:: images/zsim-01.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * Zuul starts running jobs for it + * The tests will test the current state of nova and keystone PLUS this nova + change + +.. ansi:: images/zsim-02.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * A change is approved for Keystone + +.. ansi:: images/zsim-03.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * The tests will test the current state of nova and keystone PLUS this nova + change + +.. ansi:: images/zsim-04.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-05.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-06.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-07.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-08.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-09.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-10.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-11.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-12.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-13.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-14.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-15.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-16.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-17.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-18.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-19.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-20.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-21.ans + +Zuul Simulation +=============== +.. transition:: cut +.. container:: handout + + * todo + +.. ansi:: images/zsim-22.ans + +Cross-Project Problem +===================== + + * User reports bug in shade - auto_ip is not discovering their NAT properly + * Two fixes, one to detection algorithm, one to config override + * Config override requires adding support to os-client-config + * Once support is added to os-client-config, it can be consumed in shade + * How do we integration test this without releasing os-client-config? + +Cross-Project Dependencies +========================== + +Testing or gating dependencies (including jobs) manually specified by +developers + +.. container:: progressive + + * shade https://review.openstack.org/#/c/513913/ + + Add unittest tips jobs + + Change-ID: I5b411be5c5aa43535fa89a51d6099aadd7a8ea60 + * os-client-config https://review.openstack.org/#/c/513915 + + Add shade-tox-tips jobs + + Change-ID: Ie3e9a4deca1d74b94e810e87e130706fe15fe2c9 + + Depends-On: I5b411be5c5aa43535fa89a51d6099aadd7a8ea60 + * os-client-config https://review.openstack.org/#/c/513751/ + + Added nat_source flag for networks + + Change-ID: I3d8dd6d734a1013d2d4a43e11c3538c3a345820b + + * shade https://review.openstack.org/#/c/513914 + + Add support for configured NAT source variable + + Change-Id: I4b50c2323a487b5ce90f9d38a48be249cfb739c5 + + Depends-On: I3d8dd6d734a1013d2d4a43e11c3538c3a345820b + +shade: Add unittest tips jobs +============================= + +* In git.openstack.org/openstack-infra/shade/.zuul.yaml: + +.. code:: yaml + + - job: + name: shade-tox-py27-tips + parent: openstack-tox-py27 + description: | + Run tox python 27 unittests against master of important libs + required-projects: + - openstack-infra/shade + - openstack/os-client-config + + - job: + name: shade-tox-py35-tips + parent: openstack-tox-py35 + description: | + Run tox python 35 unittests against master of important libs + required-projects: + - openstack-infra/shade + - openstack/keystoneauth + - openstack/os-client-config + +shade: Add unittest tips project-template +========================================= + +* In git.openstack.org/openstack-infra/shade/.zuul.yaml: + +.. code:: yaml + + - project-template: + name: shade-tox-tips + check: + jobs: + - shade-tox-py27-tips + - shade-tox-py35-tips + gate: + jobs: + - shade-tox-py27-tips + - shade-tox-py35-tips + +shade: Add unittest tips project-template to project +==================================================== + +* In git.openstack.org/openstack-infra/shade/.zuul.yaml: + +.. code:: yaml + + - project: + name: openstack-infra/shade + templates: + - publish-to-pypi + - publish-openstack-sphinx-docs + - shade-tox-tips + +os-client-config: Add shade-tox-tips jobs +========================================= + +* In git.openstack.org/openstack/os-client-config/.zuul.yaml: + +.. code:: yaml + + - project: + name: openstack/os-client-config + templates: + - shade-tox-tips + check: + jobs: + - legacy-osc-dsvm-functional-tips: + voting: false + +os-client-config: Add nat_source flag for networks +================================================== + +:: + + diff --git a/os_client_config/cloud_config.py b/os_client_config/cloud_config.py + index 2e97629..d1a6983 100644 + --- a/os_client_config/cloud_config.py + +++ b/os_client_config/cloud_config.py + @@ -581,3 +581,10 @@ class CloudConfig(object): + if net['nat_destination']: + return net['name'] + return None + + + + def get_nat_source(self): + + """Get network used for NAT source.""" + + for net in self.config['networks']: + + if net.get('nat_source'): + + return net['name'] + + return None + +shade: Add support for configured NAT source variable +===================================================== + +:: + + Zuul 10-21 13:57 + Patch Set 5: Verified-1 + Build failed. + openstack-tox-pep8 SUCCESS in 2m 29s + openstack-tox-py27 FAILURE in 2m 34s + build-openstack-releasenotes SUCCESS in 2m 47s + openstack-tox-py35 FAILURE in 2m 41s + openstack-tox-cover POST_FAILURE in 3m 52s (non-voting) + build-openstack-sphinx-docs SUCCESS in 2m 57s + shade-tox-py27-tips SUCCESS in 3m 18s + shade-tox-py35-tips SUCCESS in 2m 28s + +Live Configuration Changes +========================== + +.. container:: handout + + Zuul is a distributed system, with a distributed configuration. + +.. code:: yaml + + - tenant: + name: openstack + source: + gerrit: + config-projects: + - project-config + untrusted-projects: + - openstack-infra/zuul-jobs: + shadow: openstack-infra/project-config + - openstack-infra/openstack-zuul-jobs + - openstack-infra/nodepool + - openstack-infra/shade + - openstack-infra/zuul + - openstack/requirements + +Zuul Startup +============ + +* Read config file + +Zuul Startup +============ + +* Read config file +* Ask mergers for branches of each repo + +.. ansi:: images/startup1.ans + +Zuul Startup +============ + +* Read config file +* Ask mergers for branches of each repo +* Ask mergers for .zuul.yaml file for each branch of each repo + +``.zuul.yaml`` can be ``^\.?zuul.ya?ml$`` file or ``^\.?zuul.d$`` run-parts +directory. + +.. ansi:: images/startup2.ans + +When .zuul.yaml Changes +======================= + +.. container:: progressive + + * Zuul looks for changes to .zuul.yaml + * Asks mergers for updated content + * Splices into configuration used for that change + * Works with cross-repo dependencies + + ("This change depends on a change to the job definition") + +How do you use this thing? +========================== +.. transition:: tilt +.. hidetitle:: +.. figlet:: Configuration + +Pipelines +========= + +* Describes the process flow and lifecycle **for a change** +* A process definition that connects git repositories, jobs, and + reporting mechanisms. +* A context to fix a set of jobs to each project. + +Check Pipeline +============== + +.. code:: yaml + + - pipeline: + name: check + manager: independent + source: gerrit + trigger: + gerrit: + - event: patchset-created + - event: change-restored + success: + gerrit: + verified: 1 + +Gate Pipeline +============= + +.. code:: yaml + + - pipeline: + name: gate + manager: dependent + trigger: + gerrit: + - event: comment-added + approval: + - workflow: 1 + success: + gerrit: + verified: 2 + submit: true + +Zuul Github Support +=================== + +.. code:: yaml + + - pipeline: + name: check + manager: independent + trigger: + github: + - event: pull_request + action: + - opened + - changed + - reopened + success: + github: + status: 'success' + failure: + github: + status: 'failure' + +OpenStack Github Support for Cross Community Testing +==================================================== + + * Github App "OpenStack Zuul" + * App added to github project by project admin + * Project aded to OpenStack's main.yaml + * Test interactions between OpenStack and important adjacent communities + + * Ansible + * Kubernetes + * Ceph? + * Open vSwitch? + +Cross Community Testing +======================= + +.. code:: yaml + + - pipeline: + name: check + description: | + Newly uploaded patchsets enter this pipeline to receive an + initial +/-1 Verified vote. + manager: independent + trigger: + gerrit: + - event: patchset-created + - event: change-restored + - event: comment-added + comment: (?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*recheck + - event: comment-added + require-approval: + - Verified: [-1, -2] + username: zuul + approval: + - Workflow: 1 + github: + - event: pull_request + action: + - opened + - changed + - reopened + - event: pull_request + action: comment + comment: (?i)^\s*recheck\s*$ + +Cross Community Support cont. +============================= + +.. code:: yaml + + start: + github: + status: pending + comment: false + success: + gerrit: + # Note that gerrit keywords are case-sensitive. + Verified: 1 + github: + status: 'success' + mysql: + failure: + gerrit: + Verified: -1 + github: + status: 'failure' + mysql: + +Cross Community Depends-On (coming soon) +======================================== + +.. container:: progressive + + * shade https://review.openstack.org/#/c/613914/ + + Add support for server groups + + Change-ID: I5b411be5c5aa43535fa89a51d6099aadd7a8ea61 + + * ansible https://github.com/ansible/ansible/pull/32159 + + Add os_server_group module + + Depends-On: https://review.openstack.org/#/613914/ + +Jobs +==== + +* Jobs run on nodes from nodepool (static or dynamic) +* Metadata defined in Zuul's configuration +* Execution content in Ansible (with live streaming!) +* Jobs may be defined centrally or in the repo being tested +* Jobs have contextual variants that simplify configuration +* git.openstack.org/openstack-infra/zuul-jobs repo can be directly shared + between zuul installations + +Job +=== + +.. code:: yaml + + - job: + name: base + parent: null + description: | + The base job for Zuul. + timeout: 1800 + nodeset: + nodes: + - name: primary + label: centos-7 + pre-run: playbooks/base/pre + post-run: + - playbooks/base/post-ssh + - playbooks/base/post-logs + secrets: + - site_logs + +Simple Job +========== + +.. code:: yaml + + - job: + name: tox + pre-run: playbooks/setup-tox + run: playbooks/tox + post-run: playbooks/fetch-tox-output + + - job: + name: tox-py27 + parent: tox + vars: + tox_envlist: py27 + + +Simple Job Variant +================== + +.. code:: yaml + + - job: + name: tox-py27 + branch: stable/mitaka + nodeset: + - name: ubuntu-trusty + label: ubuntu-trusty + +Nodesets for Multi-node Jobs +============================ + +.. code:: yaml + + - nodeset: + name: ceph-cluster + nodes: + - name: controller + label: centos-7 + - name: compute1 + label: fedora-26 + - name: compute2 + label: fedora-26 + groups: + - name: ceph-osd + nodes: + - controller + - name: ceph-monitor + nodes: + - controller + - compute1 + - compute2 + +Multi-node Job +============== + +* nodesets are provided to Ansible for jobs in inventory + +.. code:: yaml + + - job: + name: ceph-multinode + nodeset: ceph-cluster + run: playbooks/install-ceph + +Multi-node Ceph Job Content +=========================== + +.. code:: yaml + + - hosts: all + roles: + - install-ceph + - hosts: ceph-osd + roles: + - start-ceph-osd + - hosts: ceph-monitor + roles: + - start-ceph-monitor + - hosts: all + roles: + - do-something-interesting + +Projects +======== + +* Projects are git repositories +* Specify a set of jobs for each pipeline +* golang git repo naming as been adopted: + +:: + + zuul@ubuntu-xenial:~$ find /home/zuul/src -mindepth 3 -maxdepth 3 -type d + src/git.openstack.org/openstack-infra/shade + src/git.openstack.org/openstack/os-client-config + src/github.com/ansible/ansible + +Project +======= + +.. code:: yaml + + - project: + # Needing to name the project in that project's .zuul.yaml is going away + name: openstack/nova + check: + jobs: + - openstack-tox-py27 + - openstack-tox-py35 + - openstack-doc-build + +Project with Local Variant +========================== + +.. code:: yaml + + - project: + name: openstack/nova + check: + jobs: + - openstack-tox-py27 + - openstack-tox-py35 + - openstack-doc-build + - openstack-tox-pypy: + voting: false + +Project with More Local Variants +================================ + +.. code:: yaml + + - project: + name: openstack/nova + check: + jobs: + - openstack-tox-py27 + - openstack-tox-py35 + - openstack-doc-build: + files: '^docs/.*$' + - openstack-tox-pypy: + voting: false + +Project with Many Local Variants +================================ + +.. code:: yaml + + - project: + name: openstack/nova + check: + jobs: + - openstack-tox-py27 + nodeset: + - name: centos-7 + label: centos-7 + - openstack-tox-py27 + branch: stable/newton + nodeset: + - name: ubuntu-trusty + label: ubuntu-trusty + - openstack-doc-build: + files: '^docs/.*$' + - openstack-tox-pypy: + voting: false + +Project With Central and Local Config +===================================== + +.. code:: yaml + + # In git.openstack.org/openstack-infra/project-config: + - project: + name: openstack/nova + templates: + - openstack-tox-jobs + +.. code:: yaml + + # In git.openstack.org/openstack/nova/.zuul.yaml: + - project: + name: openstack/nova + check: + - nova-placement-functional-devstack + +Project with Job Dependencies +============================= + +.. code:: yaml + + - project: + name: openstack/nova + release: + jobs: + - build-artifacts + - upload-tarball: + dependencies: build-artifacts + - upload-pypi: + dependencies: build-artifacts + - notify-mirror: + dependencies: + - upload-tarball + - upload-pypi + +Playbooks +========= + +* Jobs run Ansible playbooks +* Playbooks may be defined centrally or in the repo being tested +* Playbooks can use roles from current or other Zuul repos (or Galaxy, coming soon) +* Playbooks are run on the zuul-executor using bubblewrap https://github.com/projectatomic/bubblewrap +* Playbooks are not allowed to execute content on 'localhost' + +Job with Roles +============== + +.. code:: yaml + + - job: + name: zuul-integration + description: | + Multi-node Zuul installation and integration test + nodeset: zuul-cluster + roles: + - zuul: openstack/ansible-role-zuul + run: playbooks/zuul-integration + +Job with Multiple Projects +========================== + +.. code:: yaml + + - job: + name: tox-py35-on-zuul + parent: tox-py35 + description: | + Run zuul's py35 unittests on patches to zuul-jobs + vars: + zuul_work_dir: src/git.openstack.org/openstack-infra/zuul + required-projects: + - name: openstack-infra/zuul + override-branch: feature/zuulv3 + + - project: openstack-infra/zuul-jobs + check: + jobs: + - tox-py35-on-zuul + +Devstack-gate / Tempest Playbook +================================ + +.. code:: yaml + + # devstack-gate / tempest playbook + hosts: all + roles: + - setup-multinode-networking + - partition-swap + - configure-mirrors + - run-devstack + - run-tempest + +Simple Shell Playbook +===================== + +.. code:: yaml + + hosts: controller + tasks: + - shell: ./run_tests.sh + +Test Like Production +==================== + +If you use Ansible for deployment, your test and deployment processes +and playbooks are the same + +What if you don't use Ansible? +============================== + +OpenStack Infra Control Plane uses Puppet +========================================= + +.. code:: yaml + + # In git.openstack.org/openstack-infra/project-config/roles/legacy-install-afs-with-puppet/tasks/main.yaml + - name: Install puppet + shell: ./install_puppet.sh + args: + chdir: "{{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/system-config" + environment: + # Skip setting up pip, our images have already done this. + SETUP_PIP: "false" + become: yes + + - name: Copy manifest + copy: + src: manifest.pp + dest: "{{ ansible_user_dir }}/manifest.pp" + + - name: Run puppet + puppet: + manifest: "{{ ansible_user_dir }}/manifest.pp" + become: yes + +Secrets +======= + +* Inspired by Kubernetes Secrets API +* Projects can add named encrypted secrets to their .zuul.yaml file +* Jobs can request to use secrets by name +* Jobs using secrets are not reconfigured speculatively +* Secrets can only be used by the same project they are defined in +* Public key per project: + ``{{ zuul_url }}/{{ tenant }}/keys/{{ project }}.pub`` + +:: + GET http://zuulv3.openstack.org/keys/openstack-infra/shade.pub + +Secret Example (note, no admins had to enable this) +=================================================== + +.. code:: yaml + + # In git.openstack.org/openstack/loci/.zuul.yaml: + - secret: + name: loci_docker_login + data: + user: !encrypted/pkcs1-oaep + - r8Nbpq5olmfLF035BZ/CUoFLIdhvBi/49KuochOAHbvns+xMiho3C7MEFzYDqJX3IhHde + BICYOgK7qnyINOIZL2e7pl75rEdHQwJjSFUMkpdY6wEP7f9hpolj9xVp0ifHUVQqPHMRn + zoPFd8MEAHxH5GLmc2SWJ98E/QUqGltxBi1YRSZoCcNtq3tHFK5Y+xQlLhIseJ2HkpDs6 + YXOGP9Qt4Va6sdyBcA90H+apSAcYA3Duu962ySZQAsYNui/3NQq3gLA+OZeyTJtcrh4hj + Rb5dBnDWfSrMpxdNkbPXXgbQaxO3T0L4jbaOF8VKEsiI9olBrOeV2M9ddYJjSsHGj4XR8 + 4vwS0+doB7np93fujiDuHVgdG8R40NW2GznyKRlRtzAORla7Mzw1Y1MokcUyY6p1LlLLl + wUuWYCCEuRciOPhZXQ2u42qju/zrK2/dPnO8HfUINSrN0WbNq14ZwPpbj0ro02oGPbtwu + OTw1z+N0Nc+GuLWlwYJGYM/z0UnvDR3WEBc2kXbVev9w4n0cB3RyphML2PDZZWbw8tjnX + h1VsAOJ0Qo4qq1K/ft95ypd+vtjkfepEgHEBmJNwutJa9IHAkGfrkO9VkpUTPpfffnPwz + d0/zaaadNl6MLQUSutRwY23YIIbv+fmukxw2vnJmvn6abkBlMya7KgtifwNA8c= + password: !encrypted/pkcs1-oaep + - gUEX4eY3JAk/Xt7Evmf/hF7xr6HpNRXTibZjrKTbmI4QYHlzEBrBbHey27Pt/eYvKKeKw + hk8MDQ4rNX7ZK1v+CKTilUfOf4AkKYbe6JFDd4z+zIZ2PAA7ZedO5FY/OnqrG7nhLvQHE + 5nQrYwmxRp4O8eU5qG1dSrM9X+bzri8UnsI7URjqmEsIvlUqtybQKB9qQXT4d6mOeaKGE + 5h6Ydkb9Zdi4Qh+GpCGDYwHZKu1mBgVK5M1G6NFMy1DYz+4NJNkTRe9J+0TmWhQ/KZSqo + 4ck0x7Tb0Nr7hQzV8SxlwkaCTLDzvbiqmsJPLmzXY2jry6QsaRCpthS01vnj47itoZ/7p + taH9CoJ0Gl7AkaxsrDSVjWSjatTQpsy1ub2fuzWHH4ASJFCiu83Lb2xwYts++r8ZSn+mA + hbEs0GzPI6dIWg0u7aUsRWMOB4A+6t2IOJibVYwmwkG8TjHRXxVCLH5sY+i3MR+NicR9T + IZFdY/AyH6vt5uHLQDU35+5n91pUG3F2lyiY5aeMOvBL05p27GTMuixR5ZoHcvSoHHtCq + 7Wnk21iHqmv/UnEzqUfXZOque9YP386RBWkshrHd0x3OHUfBK/WrpivxvIGBzGwMr2qAj + /AhJsfDXKBBbhGOGk1u5oBLjeC4SRnAcIVh1+RWzR4/cAhOuy2EcbzxaGb6VTM= + +Secret Example +============== + +.. code:: yaml + + # In git.openstack.org/openstack/loci/.zuul.yaml: + - job: + name: publish-loci-cinder + parent: loci-cinder + post-run: playbooks/push + secrets: + - loci_docker_login + + # In git.openstack.org/openstack/loci/playbooks/push.yaml: + - hosts: all + tasks: + - include_vars: vars.yaml + + - name: Push project to DockerHub + block: + - command: docker login -u {{ loci_docker_login.user }} -p {{ loci_docker_login.password }} + no_log: True + - command: docker push openstackloci/{{ project }}:{{ branch }}-{{ item.name }} + with_items: "{{ distros }}" + +Status +====== + +* zuulv3 is running for OpenStack +* zuulv3 also runing at BMW (in OpenShift) +* automation job migration sucked (I wrote the script, whoops) +* cleaning up fixing automation and bugs found running at scale +* reference documentation exists and is complete +* pre-repository job documentation +* will release v3.0 once we're satisfied it's good for other people + +What's Next? +============ + +* dashboard + REST API +* user and deployer *documentation* - getting started walkthroughs +* node providers: + * static + * OCI/docker + * Mac Stadium (for our Ansible friends) + * bifrost +* support for galaxy roles +* in-line code-review comments from Zuul +* shared job doc generation +* native container/kubernetes execution? + +Important Links +=============== + +* https://git.openstack.org/cgit/openstack-infra/zuul/log/?h=feature/zuulv3 +* https://docs.openstack.org/infra/zuul/feature/zuulv3/ +* https://docs.openstack.org/infra/manual/zuulv3.html +* https://docs.openstack.org/infra/openstack-zuul-jobs/ +* https://storyboard.openstack.org/#!/project/679 +* https://storyboard.openstack.org/#!/board/41 +* freenode:#zuul + +Questions +========= + +.. ansi:: images/questions.ans + +Presentty +========= +.. hidetitle:: +.. transition:: pan +.. figlet:: Presentty + +* Console presentations written in reStructuredText +* Cross-fade, pan, tilt, cut transitions +* Figlet, cowsay! +* https://pypi.python.org/pypi/presentty -- cgit v1.2.3