From 5be1b057adf8a639f718409b2fd8986272d05ac0 Mon Sep 17 00:00:00 2001 From: Monty Taylor <mordred@inaugust.com> Date: Sat, 24 Mar 2018 09:20:26 -0500 Subject: Add infra talk for ons --- src/infra/cp437utf8.py | 69 ++ src/infra/images/01-gerrit.png | Bin 0 -> 126754 bytes src/infra/images/02-status1.png | Bin 0 -> 169213 bytes src/infra/images/03-status2.png | Bin 0 -> 58075 bytes src/infra/images/04-health.png | Bin 0 -> 40296 bytes src/infra/images/ansible.ans | 49 ++ src/infra/images/architecture.ans | 45 ++ src/infra/images/circle.ans | 49 ++ src/infra/images/color-gertty.ans | 57 ++ src/infra/images/convert.sh | 4 + src/infra/images/crd.ans | 29 + src/infra/images/cursor.ans | 47 ++ src/infra/images/cursor2.ans | 47 ++ src/infra/images/openstack.ans | 51 ++ src/infra/images/orig/ansible.ans | 49 ++ src/infra/images/orig/architecture.ans | 45 ++ src/infra/images/orig/circle.ans | 49 ++ src/infra/images/orig/color-gertty.ans | 57 ++ src/infra/images/orig/crd.ans | 29 + src/infra/images/orig/cursor.ans | 47 ++ src/infra/images/orig/cursor2.ans | 47 ++ src/infra/images/orig/openstack.ans | 51 ++ src/infra/images/orig/questions.ans | 27 + src/infra/images/orig/redhat.ans | 49 ++ src/infra/images/orig/startup1.ans | 39 + src/infra/images/orig/startup2.ans | 39 + src/infra/images/orig/td.ans | Bin 0 -> 2433 bytes src/infra/images/orig/testslide.ans | 49 ++ src/infra/images/orig/title.ans | 45 ++ src/infra/images/orig/workflow.ans | 29 + src/infra/images/orig/zsim-00.ans | 43 ++ src/infra/images/orig/zsim-01.ans | 43 ++ src/infra/images/orig/zsim-02.ans | 43 ++ src/infra/images/orig/zsim-03.ans | 43 ++ src/infra/images/orig/zsim-04.ans | 43 ++ src/infra/images/orig/zsim-05.ans | 43 ++ src/infra/images/orig/zsim-06.ans | 43 ++ src/infra/images/orig/zsim-07.ans | 43 ++ src/infra/images/orig/zsim-08.ans | 43 ++ src/infra/images/orig/zsim-09.ans | 43 ++ src/infra/images/orig/zsim-10.ans | 43 ++ src/infra/images/orig/zsim-11.ans | 43 ++ src/infra/images/orig/zsim-12.ans | 43 ++ src/infra/images/orig/zsim-13.ans | 43 ++ src/infra/images/orig/zsim-14.ans | 43 ++ src/infra/images/orig/zsim-15.ans | 43 ++ src/infra/images/orig/zsim-16.ans | 43 ++ src/infra/images/orig/zsim-17.ans | 43 ++ src/infra/images/orig/zsim-18.ans | 43 ++ src/infra/images/orig/zsim-19.ans | 43 ++ src/infra/images/orig/zsim-20.ans | 43 ++ src/infra/images/orig/zsim-21.ans | 43 ++ src/infra/images/orig/zsim-22.ans | 43 ++ src/infra/images/orig/zsim-keyline.ans | 45 ++ src/infra/images/orig/zuul-status.ans | 49 ++ src/infra/images/orig/zuul.ans | 43 ++ src/infra/images/questions.ans | 27 + src/infra/images/redhat.ans | 49 ++ src/infra/images/startup1.ans | 39 + src/infra/images/startup2.ans | 39 + src/infra/images/td.ans | Bin 0 -> 2737 bytes src/infra/images/testslide.ans | 49 ++ src/infra/images/title.ans | 45 ++ src/infra/images/workflow.ans | 29 + src/infra/images/zsim-00.ans | 43 ++ src/infra/images/zsim-01.ans | 43 ++ src/infra/images/zsim-02.ans | 43 ++ src/infra/images/zsim-03.ans | 43 ++ src/infra/images/zsim-04.ans | 43 ++ src/infra/images/zsim-05.ans | 43 ++ src/infra/images/zsim-06.ans | 43 ++ src/infra/images/zsim-07.ans | 43 ++ src/infra/images/zsim-08.ans | 43 ++ src/infra/images/zsim-09.ans | 43 ++ src/infra/images/zsim-10.ans | 43 ++ src/infra/images/zsim-11.ans | 43 ++ src/infra/images/zsim-12.ans | 43 ++ src/infra/images/zsim-13.ans | 43 ++ src/infra/images/zsim-14.ans | 43 ++ src/infra/images/zsim-15.ans | 43 ++ src/infra/images/zsim-16.ans | 43 ++ src/infra/images/zsim-17.ans | 43 ++ src/infra/images/zsim-18.ans | 43 ++ src/infra/images/zsim-19.ans | 43 ++ src/infra/images/zsim-20.ans | 43 ++ src/infra/images/zsim-21.ans | 43 ++ src/infra/images/zsim-22.ans | 43 ++ src/infra/images/zsim-keyline.ans | 45 ++ src/infra/images/zuul-status.ans | 49 ++ src/infra/images/zuul.ans | 43 ++ src/infra/infra.rst | 1239 ++++++++++++++++++++++++++++++++ src/infra/start.sh | 8 + 92 files changed, 4874 insertions(+) create mode 100644 src/infra/cp437utf8.py create mode 100644 src/infra/images/01-gerrit.png create mode 100644 src/infra/images/02-status1.png create mode 100644 src/infra/images/03-status2.png create mode 100644 src/infra/images/04-health.png create mode 100644 src/infra/images/ansible.ans create mode 100644 src/infra/images/architecture.ans create mode 100644 src/infra/images/circle.ans create mode 100644 src/infra/images/color-gertty.ans create mode 100755 src/infra/images/convert.sh create mode 100644 src/infra/images/crd.ans create mode 100644 src/infra/images/cursor.ans create mode 100644 src/infra/images/cursor2.ans create mode 100644 src/infra/images/openstack.ans create mode 100644 src/infra/images/orig/ansible.ans create mode 100644 src/infra/images/orig/architecture.ans create mode 100644 src/infra/images/orig/circle.ans create mode 100644 src/infra/images/orig/color-gertty.ans create mode 100644 src/infra/images/orig/crd.ans create mode 100644 src/infra/images/orig/cursor.ans create mode 100644 src/infra/images/orig/cursor2.ans create mode 100644 src/infra/images/orig/openstack.ans create mode 100644 src/infra/images/orig/questions.ans create mode 100644 src/infra/images/orig/redhat.ans create mode 100644 src/infra/images/orig/startup1.ans create mode 100644 src/infra/images/orig/startup2.ans create mode 100644 src/infra/images/orig/td.ans create mode 100644 src/infra/images/orig/testslide.ans create mode 100644 src/infra/images/orig/title.ans create mode 100644 src/infra/images/orig/workflow.ans create mode 100644 src/infra/images/orig/zsim-00.ans create mode 100644 src/infra/images/orig/zsim-01.ans create mode 100644 src/infra/images/orig/zsim-02.ans create mode 100644 src/infra/images/orig/zsim-03.ans create mode 100644 src/infra/images/orig/zsim-04.ans create mode 100644 src/infra/images/orig/zsim-05.ans create mode 100644 src/infra/images/orig/zsim-06.ans create mode 100644 src/infra/images/orig/zsim-07.ans create mode 100644 src/infra/images/orig/zsim-08.ans create mode 100644 src/infra/images/orig/zsim-09.ans create mode 100644 src/infra/images/orig/zsim-10.ans create mode 100644 src/infra/images/orig/zsim-11.ans create mode 100644 src/infra/images/orig/zsim-12.ans create mode 100644 src/infra/images/orig/zsim-13.ans create mode 100644 src/infra/images/orig/zsim-14.ans create mode 100644 src/infra/images/orig/zsim-15.ans create mode 100644 src/infra/images/orig/zsim-16.ans create mode 100644 src/infra/images/orig/zsim-17.ans create mode 100644 src/infra/images/orig/zsim-18.ans create mode 100644 src/infra/images/orig/zsim-19.ans create mode 100644 src/infra/images/orig/zsim-20.ans create mode 100644 src/infra/images/orig/zsim-21.ans create mode 100644 src/infra/images/orig/zsim-22.ans create mode 100644 src/infra/images/orig/zsim-keyline.ans create mode 100644 src/infra/images/orig/zuul-status.ans create mode 100644 src/infra/images/orig/zuul.ans create mode 100644 src/infra/images/questions.ans create mode 100644 src/infra/images/redhat.ans create mode 100644 src/infra/images/startup1.ans create mode 100644 src/infra/images/startup2.ans create mode 100644 src/infra/images/td.ans create mode 100644 src/infra/images/testslide.ans create mode 100644 src/infra/images/title.ans create mode 100644 src/infra/images/workflow.ans create mode 100644 src/infra/images/zsim-00.ans create mode 100644 src/infra/images/zsim-01.ans create mode 100644 src/infra/images/zsim-02.ans create mode 100644 src/infra/images/zsim-03.ans create mode 100644 src/infra/images/zsim-04.ans create mode 100644 src/infra/images/zsim-05.ans create mode 100644 src/infra/images/zsim-06.ans create mode 100644 src/infra/images/zsim-07.ans create mode 100644 src/infra/images/zsim-08.ans create mode 100644 src/infra/images/zsim-09.ans create mode 100644 src/infra/images/zsim-10.ans create mode 100644 src/infra/images/zsim-11.ans create mode 100644 src/infra/images/zsim-12.ans create mode 100644 src/infra/images/zsim-13.ans create mode 100644 src/infra/images/zsim-14.ans create mode 100644 src/infra/images/zsim-15.ans create mode 100644 src/infra/images/zsim-16.ans create mode 100644 src/infra/images/zsim-17.ans create mode 100644 src/infra/images/zsim-18.ans create mode 100644 src/infra/images/zsim-19.ans create mode 100644 src/infra/images/zsim-20.ans create mode 100644 src/infra/images/zsim-21.ans create mode 100644 src/infra/images/zsim-22.ans create mode 100644 src/infra/images/zsim-keyline.ans create mode 100644 src/infra/images/zuul-status.ans create mode 100644 src/infra/images/zuul.ans create mode 100644 src/infra/infra.rst create mode 100755 src/infra/start.sh (limited to 'src/infra') diff --git a/src/infra/cp437utf8.py b/src/infra/cp437utf8.py new file mode 100644 index 0000000..9b1b629 --- /dev/null +++ b/src/infra/cp437utf8.py @@ -0,0 +1,69 @@ +# _______ +# ____________ _______ _\__ /_________ ___ _____ +# | _ _ \ _ | ____\ _ / | |/ _ \ +# | / / / / | | | /___/ _ | | / / +# |___/___/ /___/____|________|___ | |_| |___|_____/ +# \__/ |___| +# +# +# (c) 2009-2012 Wijnand Modderman-Lenstra <maze@pyth0n.org> +# 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 <in> <out>' % (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/infra/images/01-gerrit.png b/src/infra/images/01-gerrit.png new file mode 100644 index 0000000..2c8a2c4 Binary files /dev/null and b/src/infra/images/01-gerrit.png differ diff --git a/src/infra/images/02-status1.png b/src/infra/images/02-status1.png new file mode 100644 index 0000000..7b350a8 Binary files /dev/null and b/src/infra/images/02-status1.png differ diff --git a/src/infra/images/03-status2.png b/src/infra/images/03-status2.png new file mode 100644 index 0000000..0b2607d Binary files /dev/null and b/src/infra/images/03-status2.png differ diff --git a/src/infra/images/04-health.png b/src/infra/images/04-health.png new file mode 100644 index 0000000..750d32c Binary files /dev/null and b/src/infra/images/04-health.png differ diff --git a/src/infra/images/ansible.ans b/src/infra/images/ansible.ans new file mode 100644 index 0000000..0cadddf --- /dev/null +++ b/src/infra/images/ansible.ans @@ -0,0 +1,49 @@ +[0m +[A[79C + [1;30m▄▄▄▄██████▄▄▄▄[0;37m +[A[79C + [1;30m▄▄██████████████████▄▄[0;37m +[A[79C + [1;30m▄██████████████████████████▄[0;37m +[A[79C + [1;30m▄██████████████████████████████▄[0;37m +[A[79C + [1;30m▄████████████████[47m███[40m███████████████▄[0;37m +[A[79C + [1;30m▄█████████████████[47m█ █[40m████████████████▄[0;37m +[A[79C + [1;30m▐█████████████████[47m█ █[40m████████████████▌[0;37m +[A[79C + [1;30m█████████████████[47m█ ▄ █[40m████████████████[0;37m +[A[79C + [1;30m▐████████████████[47m█ █ █[40m███████████████▌[0;37m +[A[79C + [1;30m████████████████[47m█ ███ █[40m███████████████[0;37m +[A[79C + [1;30m▐███████████████[47m█ █████ █[40m██████████████▌[0;37m +[A[79C + [1;30m▐██████████████[47m█ ▀▀███ █[40m█████████████▌[0;37m +[A[79C + [1;30m█████████████[47m█ ▄ ▀▀█ █[40m████████████[0;37m +[A[79C + [1;30m▐███████████[47m█ ████▄▄ █[40m██████████▌[0;37m +[A[79C + [1;30m██████████[47m█ █[40m███████[47m▄▄ █[40m█████████[0;37m +[A[79C + [1;30m▐████████[47m█ █[40m██████████[47m██▄ [40m████████▌[0;37m +[A[79C + [1;30m▀██████[47m█ █[40m██████████████[47m█▄▄▄[40m████████▀[0;37m +[A[79C + [1;30m▀██████████████████████████████████▀[0;37m +[A[79C + [1;30m▀██████████████████████████████▀[0;37m +[A[79C + [1;30m▀██████████████████████████▀[0;37m +[A[79C + [1;30m▀▀██████████████████▀▀[0;37m +[A[79C + [1;30m▀▀▀▀██████▀▀▀▀[0;37m +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/architecture.ans b/src/infra/images/architecture.ans new file mode 100644 index 0000000..ad308eb --- /dev/null +++ b/src/infra/images/architecture.ans @@ -0,0 +1,45 @@ +[0m +[A[79C + +[A[79C + +[A[79C + [1m┌─────────────┐[0m +[A[79C + [1m┌───────┤[0m [1;31mZuul Merger[0;37m [1m│[0m [1;31m [37m [0m +[A[79C + [1m┌────┴───┐[0m [1m└──┬───┬──────┘[0m +[A[79C + [1m┌──┤[0m [1;33mGerrit[0;37m [1m├──┐[0m [1m│[0m [1m│[0m +[A[79C + [1m│[0m [1m└────────┘[0m [1m│[0m [1m┌─┘[0m [1m│[0m +[A[79C + [1m [0m [1m│ ┌────────┐[0m [1m│[0m [1m│[0m [1m┌──┴───┐[0m [1m┌───────────────┐[0m +[A[79C + [1m┌─────┼──┤[0m [1;31m Web [0;37m [1m├──┼────┤[0m [1;31mZuul[0;37m [1m├─────┤[0m [1;31mZuul Executor[0;37m [1m│ [0m +[A[79C + ____ [1m│[0m [1m└────┬───┘[0m [1m│[0m [1m│[0m [1m└──┬───┘[0m [1m│[0m [1m┌───────┐[0m [1m│[0m +[A[79C + |[32m... [37m| [1m│[0m [1m┌────┴───┐[0m [1m│ │[0m [1m│[0m [1m│ [0m [1m│[31mAnsible[37m│ │[0m +[A[79C + |[32m... [37m| [1m├──┤[0m [1;33mGitHub[0;37m [1m├──┼─┘[0m [1m│[0m [1m└───┴───┬───┴───┘[0m +[A[79C +/______\ [1m│[0m [1m└────────┘[0m [1m│[0m [1m┌────┴─────┐[0m [1m│[0m +[A[79C + [1mo[0m [1m│[0m [1m┌────────┐[0m [1m│[0m [1m│[0m [1;34mNodepool[0;37m [1m│[0m [1m│[0m +[A[79C + [1m-|-[0m [1m└──┤[31m Finger [37m├──┘[0m [1m└────┬─────┘[0m [1m│[0m +[A[79C + [1m/ \[0m [1m└────────┘[0m [1m│[0m [1m│[0m +[A[79C + [1mDev[0m [1;44mCloud │ [0;40m [1m│[0m +[A[79C + [1;44m Node 1 ───[40m──────────┤[0m +[A[79C + [1;44m ... [0;40m [1m│[0m +[A[79C + [1;44m Node 2 ───[40m──────────┘[0m +[A[79C +[1;30m(Not to scale)[0;37m [1;44m [0;40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/circle.ans b/src/infra/images/circle.ans new file mode 100644 index 0000000..291eb33 --- /dev/null +++ b/src/infra/images/circle.ans @@ -0,0 +1,49 @@ +[0m ▄▄▄▀▀▀▀▄▄▄ +[A[79C + ▄▄▀▀▀ ▀▀▀▄▄ +[A[79C + ▄▀▀ ▀▀▄ +[A[79C + ▄▀ ▀▄ +[A[79C + ▄▀ ▀▄ +[A[79C + ▄▀ ▀▄ +[A[79C + ▄▀ ▀▄ +[A[79C + █ █ +[A[79C + █ █ +[A[79C +▄▀ ▀▄ +[A[79C +█ █ +[A[79C +▀▄ ▄▀ +[A[79C + █ █ +[A[79C + █ █ +[A[79C + ▀▄ ▄▀ +[A[79C + ▀▄ ▄▀ +[A[79C + ▀▄ ▄▀ +[A[79C + ▀▄ ▄▀ +[A[79C + ▀▄▄ ▄▄▀ +[A[79C + ▀▀▄▄▄ ▄▄▄▀▀ +[A[79C + ▀▀▀▄▄▄▄▀▀▀ +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/color-gertty.ans b/src/infra/images/color-gertty.ans new file mode 100644 index 0000000..7530e70 --- /dev/null +++ b/src/infra/images/color-gertty.ans @@ -0,0 +1,57 @@ +[0m[1;34mChange [0;36m31337[37m +[A[79C +[1;34mOwner [0;36mCarol[37m +[A[79C +[1;34mProject [0;36mhello-world[37m +[A[79C +[1;34mBranch [0;36mmaster[37m +[A[79C + +[A[79C +[1mName Verified Code-Review[0m +[A[79C +[1;33mAlice [0;32m-1 [37m +[A[79C +[1;33mBob[0;32m [1m [0;32m [1;31m-1[0;32m [37m +[A[79C +[1;33mZuul[0;37m [1;32m+1[0;37m +[A[79C + +[A[79C +[34mdocs [1;32mSUCCESS[0;37m in 2m 37s +[A[79C +[34mpython27[37m [1;32mSUCCESS[0;37m in 13m 21s +[A[79C + +[A[79C +[1;34mPatch Set 1 [0;34m4f0a5acfb3752dd1d2fb9153e0f3277c9bcc35ad [37m +[A[79C +[1;36mREADME.txt[0;37m [1;32m+2[0;37m,[1;31m-0[0;37m +[A[79C +[1;36msrc/hello.py [32m+28[0;37m,[1;31m-4[0;37m +[A[79C + +[A[79C +[35m< [1mReview[0;35m > < Diff > < Local Checkout > < Local Cherry-Pick >[37m +[A[79C + +[A[79C +[1;33mAlice[0;37m +[A[79C + This change seems gratuitous. I like it! +[A[79C +[1;33mBob[0;37m +[A[79C + This is a really good start but i have serious concerns about the +[A[79C + whitespace choices you have made. +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/convert.sh b/src/infra/images/convert.sh new file mode 100755 index 0000000..9acce64 --- /dev/null +++ b/src/infra/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/infra/images/crd.ans b/src/infra/images/crd.ans new file mode 100644 index 0000000..4b4436d --- /dev/null +++ b/src/infra/images/crd.ans @@ -0,0 +1,29 @@ +[0m* nova 1001,12 Add SSH host keys to intance metadata +[A[79C + Change-ID: I0ac10 +[A[79C +* devstack 1020,6 Configure nova to return host keys +[A[79C + Change-ID: I0bc10 +[A[79C + Depends-On: I0ac10 +[A[79C +* novaclient 1030,3 Add test that host keys are returned +[A[79C + Change-ID: I0dc10 +[A[79C + Depends-On: I0bc10 +[A[79C +* shade 1040,1 Return host keys on instance creation +[A[79C + Change-ID: I0ec10 +[A[79C + Depends-On: I0dc10 +[A[79C +* nodepool 1050,5 Verify host keys when booting nodes +[A[79C + Change-ID: I0fc10 +[A[79C + Depends-On: I0ec10 +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/cursor.ans b/src/infra/images/cursor.ans new file mode 100644 index 0000000..6d4d108 --- /dev/null +++ b/src/infra/images/cursor.ans @@ -0,0 +1,47 @@ +[0m[1;5;32m█[0;0;37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m█[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/cursor2.ans b/src/infra/images/cursor2.ans new file mode 100644 index 0000000..a9fe285 --- /dev/null +++ b/src/infra/images/cursor2.ans @@ -0,0 +1,47 @@ +[0m[30m█[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m█[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/openstack.ans b/src/infra/images/openstack.ans new file mode 100644 index 0000000..e7a66f4 --- /dev/null +++ b/src/infra/images/openstack.ans @@ -0,0 +1,51 @@ +[0m [31m ▄▄▄▄▄▄▄▄▄▄▄ [37m +[A[79C + [31m▄▄▄▄▄▄▄▄▄▄▄▄█████████████████████████▄▄[37m +[A[79C + [31m█████████████████████████████████████████▄[37m +[A[79C +[31m▐█████████████████[1;41m▄▄▄▄▄▄▄▄▄▄▄▄▄██████████▄[0;31m█▌[37m +[A[79C +[31m▐██████[1;41m▄███████████████████████████████████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m▐████████████████████████████████████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m█████████████████████████████████████[0;31m▌[37m +[A[79C + [31m▀████[1;41m███████▀▀▀▀▀▀▀▀▀[0;31m▀▀▀▀▀▀▀▀█[30;41m..[31;40m██[1;41m▐███████[0;31m▌[37m +[A[79C +[31m ▄▄[30;41m..[31;40m█[1;41m███████[0;31m▌ [37m [31m▐[30;41m ..[31;40m█[1;41m▀▀▀[0;31m████▌[37m +[A[79C +[31m▐███[30;41m..[1;31m▀▀▀▀▀[0;31m██▌[37m [31m▐██[30;41m [31;40m█[1;41m▄▄▄████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m▄▄▄▄▄██[0;31m▌[37m [31m▐████[1;41m▐███████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m███████[0;31m▌[37m [31m▐████[1;41m▐███████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m███████[0;31m▌[37m [31m▐████[1;41m▐███████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m███████[0;31m▌[37m [31m▐████[1;41m▐███████[0;31m▌[37m +[A[79C + [31m▀████[1;41m███████[0;31m▌[37m [31m▐[30;41m.. [31;40m█[1;41m▐███████[0;31m▌[37m +[A[79C +[31m ▄▄███[1;41m███████[0;31m▌[37m [31m ▄▄▄▄▄████[30;41m.. [1;31m▀▀▀[0;31m████▌[37m +[A[79C +[31m▐██[30;41m..[31;40m█[1;41m████▀▀▀[0;31m███████████████████████[1;41m▄▄▄████[0;31m▌[37m +[A[79C +[31m▐███[30;41m..[31;40m████[1;41m▄▄▄[0;31m██████████████████████[1;41m████████[0;31m▌[37m +[A[79C +[31m▐█████[1;41m███████▄[0;31m██████████████[1;41m▄▄▄▄▄██████████[0;31m▌[37m +[A[79C +[31m █████[1;41m████████████████████████████████████▀[0;31m▌[37m +[A[79C + [31m▐████[1;41m██████████████████████████████████▀▀[0;31m▀ [37m +[A[79C + [31m▐██[1;41m██████████████████████████▀▀▀▀▀▀[0;31m▀▀▀ [37m +[A[79C + [31m▀█[1;41m▀▀▀▀▀▀▀▀▀▀▀▀▀▀[0;31m▀▀▀▀▀▀▀▀▀▀▀ [37m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/ansible.ans b/src/infra/images/orig/ansible.ans new file mode 100644 index 0000000..8605d51 --- /dev/null +++ b/src/infra/images/orig/ansible.ans @@ -0,0 +1,49 @@ +[0m +[A[79C + [1;30m��������������[0;37m +[A[79C + [1;30m����������������������[0;37m +[A[79C + [1;30m����������������������������[0;37m +[A[79C + [1;30m��������������������������������[0;37m +[A[79C + [1;30m�����������������[47m���[40m����������������[0;37m +[A[79C + [1;30m������������������[47m� �[40m�����������������[0;37m +[A[79C + [1;30m������������������[47m� �[40m�����������������[0;37m +[A[79C + [1;30m�����������������[47m� � �[40m����������������[0;37m +[A[79C + [1;30m�����������������[47m� � �[40m����������������[0;37m +[A[79C + [1;30m����������������[47m� ��� �[40m���������������[0;37m +[A[79C + [1;30m����������������[47m� ����� �[40m���������������[0;37m +[A[79C + [1;30m���������������[47m� ����� �[40m��������������[0;37m +[A[79C + [1;30m�������������[47m� � ��� �[40m������������[0;37m +[A[79C + [1;30m������������[47m� ������ �[40m�����������[0;37m +[A[79C + [1;30m����������[47m� �[40m�������[47m�� �[40m���������[0;37m +[A[79C + [1;30m���������[47m� �[40m����������[47m��� [40m���������[0;37m +[A[79C + [1;30m�������[47m� �[40m��������������[47m����[40m���������[0;37m +[A[79C + [1;30m������������������������������������[0;37m +[A[79C + [1;30m��������������������������������[0;37m +[A[79C + [1;30m����������������������������[0;37m +[A[79C + [1;30m����������������������[0;37m +[A[79C + [1;30m��������������[0;37m +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/architecture.ans b/src/infra/images/orig/architecture.ans new file mode 100644 index 0000000..94b0720 --- /dev/null +++ b/src/infra/images/orig/architecture.ans @@ -0,0 +1,45 @@ +[0m +[A[79C + +[A[79C + +[A[79C + [1m�������������Ŀ[0m +[A[79C + [1m�������Ĵ[0m [1;31mZuul Merger[0;37m [1m�[0m +[A[79C + [1m�[0m [1m���������������[0m +[A[79C + [1m�[0m [1m�[0m +[A[79C + [1m�[0m [1m�[0m +[A[79C + [1m ��������Ŀ[0m [1m������Ŀ[0m [1m���������������Ŀ[0m +[A[79C + [1m�������Ĵ[0m [1;33mGerrit[0;37m [1m�������Ĵ[0m [1;31mZuul[0;37m [1m�����Ĵ[0m [1;31mZuul Launcher[0;37m [1m�[0m +[A[79C + ____ [1m����������[0m [1m��������[0m [1m�[0m [1m�������Ŀ[0m [1m�[0m +[A[79C + |[32m... [37m| [1m�[0m [1m� [0m [1m�[31mAnsible[37m� � [0m +[A[79C + |[32m... [37m| [1m�[0m [1m�����������������[0m +[A[79C +/______\ [1m����������Ŀ[0m [1m�[0m +[A[79C + [1mo[0m [1m�[0m [1;34mNodepool[0;37m [1m�[0m [1m�[0m +[A[79C + [1m-|-[0m [1m [0m [1m������������[0m [1m�[0m +[A[79C + [1m/ \[0m [1m�[0m [1m�[0m +[A[79C + [1mDev[0m [1;44mCloud � [0;40m [1m�[0m +[A[79C + [1;44m Node 1 ���[40m���������Ĵ[0m +[A[79C + [1;44m ... [0;40m [1m�[0m +[A[79C + [1;44m Node 2 ���[40m�����������[0m +[A[79C +[1;30m(Not to scale)[0;37m [1;44m [0;40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/circle.ans b/src/infra/images/orig/circle.ans new file mode 100644 index 0000000..d21b2bb --- /dev/null +++ b/src/infra/images/orig/circle.ans @@ -0,0 +1,49 @@ +[0m ���������� +[A[79C + ����� ����� +[A[79C + ��� ��� +[A[79C + �� �� +[A[79C + �� �� +[A[79C + �� �� +[A[79C + �� �� +[A[79C + � � +[A[79C + � � +[A[79C +�� �� +[A[79C +� � +[A[79C +�� �� +[A[79C + � � +[A[79C + � � +[A[79C + �� �� +[A[79C + �� �� +[A[79C + �� �� +[A[79C + �� �� +[A[79C + ��� ��� +[A[79C + ����� ����� +[A[79C + ���������� +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/color-gertty.ans b/src/infra/images/orig/color-gertty.ans new file mode 100644 index 0000000..7530e70 --- /dev/null +++ b/src/infra/images/orig/color-gertty.ans @@ -0,0 +1,57 @@ +[0m[1;34mChange [0;36m31337[37m +[A[79C +[1;34mOwner [0;36mCarol[37m +[A[79C +[1;34mProject [0;36mhello-world[37m +[A[79C +[1;34mBranch [0;36mmaster[37m +[A[79C + +[A[79C +[1mName Verified Code-Review[0m +[A[79C +[1;33mAlice [0;32m-1 [37m +[A[79C +[1;33mBob[0;32m [1m [0;32m [1;31m-1[0;32m [37m +[A[79C +[1;33mZuul[0;37m [1;32m+1[0;37m +[A[79C + +[A[79C +[34mdocs [1;32mSUCCESS[0;37m in 2m 37s +[A[79C +[34mpython27[37m [1;32mSUCCESS[0;37m in 13m 21s +[A[79C + +[A[79C +[1;34mPatch Set 1 [0;34m4f0a5acfb3752dd1d2fb9153e0f3277c9bcc35ad [37m +[A[79C +[1;36mREADME.txt[0;37m [1;32m+2[0;37m,[1;31m-0[0;37m +[A[79C +[1;36msrc/hello.py [32m+28[0;37m,[1;31m-4[0;37m +[A[79C + +[A[79C +[35m< [1mReview[0;35m > < Diff > < Local Checkout > < Local Cherry-Pick >[37m +[A[79C + +[A[79C +[1;33mAlice[0;37m +[A[79C + This change seems gratuitous. I like it! +[A[79C +[1;33mBob[0;37m +[A[79C + This is a really good start but i have serious concerns about the +[A[79C + whitespace choices you have made. +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/crd.ans b/src/infra/images/orig/crd.ans new file mode 100644 index 0000000..4b4436d --- /dev/null +++ b/src/infra/images/orig/crd.ans @@ -0,0 +1,29 @@ +[0m* nova 1001,12 Add SSH host keys to intance metadata +[A[79C + Change-ID: I0ac10 +[A[79C +* devstack 1020,6 Configure nova to return host keys +[A[79C + Change-ID: I0bc10 +[A[79C + Depends-On: I0ac10 +[A[79C +* novaclient 1030,3 Add test that host keys are returned +[A[79C + Change-ID: I0dc10 +[A[79C + Depends-On: I0bc10 +[A[79C +* shade 1040,1 Return host keys on instance creation +[A[79C + Change-ID: I0ec10 +[A[79C + Depends-On: I0dc10 +[A[79C +* nodepool 1050,5 Verify host keys when booting nodes +[A[79C + Change-ID: I0fc10 +[A[79C + Depends-On: I0ec10 +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/cursor.ans b/src/infra/images/orig/cursor.ans new file mode 100644 index 0000000..d9f6da9 --- /dev/null +++ b/src/infra/images/orig/cursor.ans @@ -0,0 +1,47 @@ +[0m[1;5;32m�[0;0;37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m�[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/cursor2.ans b/src/infra/images/orig/cursor2.ans new file mode 100644 index 0000000..93d8570 --- /dev/null +++ b/src/infra/images/orig/cursor2.ans @@ -0,0 +1,47 @@ +[0m[30m�[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m�[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/openstack.ans b/src/infra/images/orig/openstack.ans new file mode 100644 index 0000000..4f689c7 --- /dev/null +++ b/src/infra/images/orig/openstack.ans @@ -0,0 +1,51 @@ +[0m [31m ����������� [37m +[A[79C + [31m���������������������������������������[37m +[A[79C + [31m������������������������������������������[37m +[A[79C +[31m������������������[1;41m������������������������[0;31m��[37m +[A[79C +[31m�������[1;41m������������������������������������[0;31m�[37m +[A[79C +[31m������[1;41m�������������������������������������[0;31m�[37m +[A[79C +[31m������[1;41m�������������������������������������[0;31m�[37m +[A[79C + [31m�����[1;41m����������������[0;31m���������[30;41m..[31;40m��[1;41m��������[0;31m�[37m +[A[79C +[31m ��[30;41m..[31;40m�[1;41m�������[0;31m� [37m [31m�[30;41m ..[31;40m�[1;41m���[0;31m�����[37m +[A[79C +[31m����[30;41m..[1;31m�����[0;31m���[37m [31m���[30;41m [31;40m�[1;41m�������[0;31m�[37m +[A[79C +[31m������[1;41m�������[0;31m�[37m [31m�����[1;41m��������[0;31m�[37m +[A[79C +[31m������[1;41m�������[0;31m�[37m [31m�����[1;41m��������[0;31m�[37m +[A[79C +[31m������[1;41m�������[0;31m�[37m [31m�����[1;41m��������[0;31m�[37m +[A[79C +[31m������[1;41m�������[0;31m�[37m [31m�����[1;41m��������[0;31m�[37m +[A[79C + [31m�����[1;41m�������[0;31m�[37m [31m�[30;41m.. [31;40m�[1;41m��������[0;31m�[37m +[A[79C +[31m �����[1;41m�������[0;31m�[37m [31m ���������[30;41m.. [1;31m���[0;31m�����[37m +[A[79C +[31m���[30;41m..[31;40m�[1;41m�������[0;31m�����������������������[1;41m�������[0;31m�[37m +[A[79C +[31m����[30;41m..[31;40m����[1;41m���[0;31m����������������������[1;41m��������[0;31m�[37m +[A[79C +[31m������[1;41m��������[0;31m��������������[1;41m���������������[0;31m�[37m +[A[79C +[31m �����[1;41m�������������������������������������[0;31m�[37m +[A[79C + [31m�����[1;41m������������������������������������[0;31m� [37m +[A[79C + [31m���[1;41m��������������������������������[0;31m��� [37m +[A[79C + [31m��[1;41m��������������[0;31m����������� [37m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/questions.ans b/src/infra/images/orig/questions.ans new file mode 100644 index 0000000..ae2e90a --- /dev/null +++ b/src/infra/images/orig/questions.ans @@ -0,0 +1,27 @@ +[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1;30m�[33m��������������[30m�[0;37m +[A[79C + [1;33m�[0;30;43m � [1;33m����� [0;30;43m � [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m [1;33m��[0;30;43m���[1;33m��[0;30;43m� [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m [1;33;40m��[0;37m [30;43m [1;33m���[0;30;43m� [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m [1;33m ��[0;30;43m��� [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m �� [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m [1;33m��[0;30;43m� [1;40m�[0;37m +[A[79C + [1;33m�[0;30;43m � ��� � [1;40m�[0;37m +[A[79C + [1;30m����������������[0;37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/redhat.ans b/src/infra/images/orig/redhat.ans new file mode 100644 index 0000000..f297fd0 --- /dev/null +++ b/src/infra/images/orig/redhat.ans @@ -0,0 +1,49 @@ +[0m +[A[79C + [1;31m ����������������[0;37m +[A[79C + [31m [1m������������� �� [0;37m +[A[79C + [1;31m���[0;37m [1;31m�� ������������[0;37m +[A[79C + [1;31m��� ����������������[0;31m [37m +[A[79C + [31m [1m����� [0;37m [1;31m ���������������������[0;37m +[A[79C + [1;31m �������[0;31m [37m [31m [1m ������������������[0;37m +[A[79C + [1;31m ��������� [0;31m [37m [1;31m������������ ����[0;37m +[A[79C + [1;31m������������ [0;31m [37m [1;31m �����������������[0;31m [37m +[A[79C + [1;31m��������������� ����������������[0;37m +[A[79C + [1;31m�������������������������������[0;37m +[A[79C + [1m���� [0m [31m [1m������������������������[37m [0m +[A[79C + [1m ��������[0m [31m [1m���������������� [0;37m +[A[79C +[1m ����� ������ �� �� ��� [0m +[A[79C +[1m ������������������������������� [0m +[A[79C +[1m ������������������������������ �� [0m +[A[79C +[1m ���������������������������� ����� [0m +[A[79C +[1m ������������������������� ������� [31m [0;37m +[A[79C +[1m ���������������������� ������� [0m [1m [0m +[A[79C +[1m ������������������������ [0m +[A[79C +[1m ������������������ [0m +[A[79C +[1m ����������� [0m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/startup1.ans b/src/infra/images/orig/startup1.ans new file mode 100644 index 0000000..3510a93 --- /dev/null +++ b/src/infra/images/orig/startup1.ans @@ -0,0 +1,39 @@ +[0m ������Ŀ +[A[79C + � [1;31mZuul[0;37m � +[A[79C + �������� +[A[79C + � +[A[79C + �����������������������������������������Ŀ +[A[79C + � � � � � � � � +[A[79C +���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ +[A[79C +�[1;31mzm1[0;37m� �[1;31mzm2[0;37m� �[1;31mzm3[0;37m� �[1;31mzm4[0;37m� �[1;31mzm5[0;37m� �[1;31mzm6[0;37m� �[1;31mzm7[0;37m� �[1;31mzm8[0;37m� +[A[79C +����� ����� ����� ����� ����� ����� ����� ����� +[A[79C +[1mnova keyst swift devst tmpst glanc dg projc[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1m [0m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/startup2.ans b/src/infra/images/orig/startup2.ans new file mode 100644 index 0000000..3093800 --- /dev/null +++ b/src/infra/images/orig/startup2.ans @@ -0,0 +1,39 @@ +[0m ������Ŀ +[A[79C + � [1;31mZuul[0;37m � +[A[79C + �������� +[A[79C + � +[A[79C + �����������������������������������������Ŀ +[A[79C + � � � � � � � � +[A[79C +���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ ���Ŀ +[A[79C +�[1;31mzm1[0;37m� �[1;31mzm2[0;37m� �[1;31mzm3[0;37m� �[1;31mzm4[0;37m� �[1;31mzm5[0;37m� �[1;31mzm6[0;37m� �[1;31mzm7[0;37m� �[1;31mzm8[0;37m� +[A[79C +����� ����� ����� ����� ����� ����� ����� ����� +[A[79C +nova keyst swift devst tmpst glanc dg projc +[A[79C +[1mmastr newt mitak mastr mastr diabl mastr mastr[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1m [0m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/td.ans b/src/infra/images/orig/td.ans new file mode 100644 index 0000000..c0c5cd6 Binary files /dev/null and b/src/infra/images/orig/td.ans differ diff --git a/src/infra/images/orig/testslide.ans b/src/infra/images/orig/testslide.ans new file mode 100644 index 0000000..5505907 --- /dev/null +++ b/src/infra/images/orig/testslide.ans @@ -0,0 +1,49 @@ +[0m[44m������������������������������������������������������������������ͻ[40m +[A[79C +[44m� ��������������������������������������������������������������Ŀ �[40m +[A[79C +[44m� �[40m [44m� �[40m +[A[79C +[44m� �[40m [44m� �[40m +[A[79C +[44m� �[40m [30m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [31m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [32m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [33m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [34m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [35m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m [36m Test Slide [47m Test Slide [37;40m [44m� �[40m +[A[79C +[44m� �[40m Test Slide [47m Test Slide [40m [44m� �[40m +[A[79C +[44m� �[40m [1;30m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;31m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;32m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;33m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;34m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;35m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1;36m Test Slide [47m Test Slide [0;37;40m [44m� �[40m +[A[79C +[44m� �[40m [1m Test Slide [47m Test Slide [0;40m [44m� �[40m +[A[79C +[44m� �[40m [44m� �[40m +[A[79C +[44m� �[40m [44m� �[40m +[A[79C +[44m� ���������������������������������������������������������������� �[40m +[A[79C +[44m������������������������������������������������������������������ͼ[40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/title.ans b/src/infra/images/orig/title.ans new file mode 100644 index 0000000..82ef305 --- /dev/null +++ b/src/infra/images/orig/title.ans @@ -0,0 +1,45 @@ +[0m [1;34m______________[0;37m [1;34m.��.[0;37m [1;34m.��.[0;37m [1;34m______________[0;37m +[A[79C +[1;34m( ( [0;37m [1;34m\ \_____)____(_____/ /[0;37m [1;34m ) )[0;37m +[A[79C + [1;34m\ )[0;37m [1;34m`�����' [0;37m [1;34m `�����'[0;37m [1;34m( /[0;37m +[A[79C + [1;34m)/ [0;37m [1;34m \([0;37m +[A[79C +[1;34m /' [0;37m [1mREST APIs and the Return of the[0m [1;34m `\ [0;37m +[A[79C +[1;34mO [0;37m [1;32m ___ ___ _ _ ___ ___ _ ___ [0;37m [1;34m O[0;37m +[A[79C +[1;34m�[0;37m [1;32m / __/ _ \| \| / __|/ _ \| | | __|[0;37m [1;34m�[0;37m +[A[79C +[1;34m�[0;37m [1;32m| (_| (_) | .` \__ \ (_) | |__| _| [0;37m [1;34m�[0;37m +[A[79C +[1;34m�[0;37m [1;32m \___\___/|_|\_|___/\___/|____|___|[0;37m [1;34m�[0;37m +[A[79C +[1;34m�[0;37m [1;34m�[0;37m +[A[79C +[1;34m�[0;37m [1mApplication[0m [1;34m�[0;37m +[A[79C +[1;34m�[0;37m [1;34m�[0;37m +[A[79C +[1;34mO [0;37m [33mJames E. Blair <corvus@inaugust.com>[37m [1;34m O[0;37m +[A[79C +[1;34m \.[0;37m [1;34m./ [0;37m +[A[79C + [1;34m)\ [0;37m [1;34m,____[0;37m [1;34m____,[0;37m [1;34m /([0;37m +[A[79C + [1;34m/ )[0;37m [1;34m/ ____\ ____ /____ \[0;37m [1;34m( \[0;37m +[A[79C +[1;34m( (_________/_/ ) ( \_\_________) )[0;37m +[A[79C +[1;34m ~-' [0;37m [1;34m`��'[0;37m [1;34m`��'[0;37m [1;34m `-~ [0;37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/workflow.ans b/src/infra/images/orig/workflow.ans new file mode 100644 index 0000000..067cc56 --- /dev/null +++ b/src/infra/images/orig/workflow.ans @@ -0,0 +1,29 @@ +[0m Hack Review Test +[A[79C + ========= ========== ========== +[A[79C + +[A[79C + push approve +[A[79C + +-------------+ +-------------+ +[A[79C + | | | | +[A[79C + +------+--+ +--v----+--+ +--v-------+ +[A[79C + | | | | | | +[A[79C + | $EDITOR | | Gerrit | | Zuul | +[A[79C + | | | | | | +[A[79C + +------^--+ +--+----^--+ +--+-------+ +[A[79C + | | | | +[A[79C + +-------------+ +-------------+ +[A[79C + clone merge +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-00.ans b/src/infra/images/orig/zsim-00.ans new file mode 100644 index 0000000..4f9ed82 --- /dev/null +++ b/src/infra/images/orig/zsim-00.ans @@ -0,0 +1,43 @@ +[0m[30m00[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-01.ans b/src/infra/images/orig/zsim-01.ans new file mode 100644 index 0000000..a087092 --- /dev/null +++ b/src/infra/images/orig/zsim-01.ans @@ -0,0 +1,43 @@ +[0m[30m01[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #1 Nova Keystone +[A[79C + ����� [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-02.ans b/src/infra/images/orig/zsim-02.ans new file mode 100644 index 0000000..8f2938c --- /dev/null +++ b/src/infra/images/orig/zsim-02.ans @@ -0,0 +1,43 @@ +[0m[30m02[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [34m���������[37m Nova Keystone +[A[79C + ����� [34m���������[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-03.ans b/src/infra/images/orig/zsim-03.ans new file mode 100644 index 0000000..1186441 --- /dev/null +++ b/src/infra/images/orig/zsim-03.ans @@ -0,0 +1,43 @@ +[0m[30m03[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m�[0;34m��������[37m Nova Keystone +[A[79C + ����� [1;34m�[0;34m��������[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Keystone #2 +[A[79C + ����� +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-04.ans b/src/infra/images/orig/zsim-04.ans new file mode 100644 index 0000000..8344a58 --- /dev/null +++ b/src/infra/images/orig/zsim-04.ans @@ -0,0 +1,43 @@ +[0m[30m04[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m��[0;34m�������[37m Nova Keystone +[A[79C + ����� [1;34m��[0;34m�������[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [34m���������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Keystone #2 [34m���������[37m +[A[79C + ����� [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-05.ans b/src/infra/images/orig/zsim-05.ans new file mode 100644 index 0000000..948d831 --- /dev/null +++ b/src/infra/images/orig/zsim-05.ans @@ -0,0 +1,43 @@ +[0m[30m05[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m���[0;34m������[37m Nova Keystone +[A[79C + ����� [1;34m���[0;34m������[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Keystone #2 [1;34m��[0;34m�������[37m +[A[79C + ����� [1;34m�[0;34m��������[37m +[A[79C + � [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #3 +[A[79C + ����� +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-06.ans b/src/infra/images/orig/zsim-06.ans new file mode 100644 index 0000000..be6cf1b --- /dev/null +++ b/src/infra/images/orig/zsim-06.ans @@ -0,0 +1,43 @@ +[0m[30m06[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m����[0;34m�����[37m Nova Keystone +[A[79C + ����� [1;34m����[0;34m�����[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Keystone #2 [1;34m�����[0;34m����[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [34m���������[37m +[A[79C + ����� [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-07.ans b/src/infra/images/orig/zsim-07.ans new file mode 100644 index 0000000..e827b4f --- /dev/null +++ b/src/infra/images/orig/zsim-07.ans @@ -0,0 +1,43 @@ +[0m[30m07[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m�����[0;34m����[37m Nova Keystone +[A[79C + ����� [1;34m�����[0;34m����[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + � [1;34m����[0;34m�����[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Keystone #2 [1;34m�������[0;34m��[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m�[0;34m��������[37m +[A[79C + ����� [1;34m�[0;34m��������[37m +[A[79C + � [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #4 +[A[79C + ����� +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-08.ans b/src/infra/images/orig/zsim-08.ans new file mode 100644 index 0000000..e7d5ca5 --- /dev/null +++ b/src/infra/images/orig/zsim-08.ans @@ -0,0 +1,43 @@ +[0m[30m08[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m������[0;34m���[37m Nova Keystone +[A[79C + ����� [1;34m������[0;34m���[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m����[0;34m�����[37m +[A[79C + � [1;34m�����[0;34m����[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Keystone #2 [1;34m��������[0;34m�[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m��[0;34m�������[37m +[A[79C + ����� [1;34m��[0;34m�������[37m +[A[79C + � [34m���������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [34m���������[37m +[A[79C + ����� [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-09.ans b/src/infra/images/orig/zsim-09.ans new file mode 100644 index 0000000..c5a6f3a --- /dev/null +++ b/src/infra/images/orig/zsim-09.ans @@ -0,0 +1,43 @@ +[0m[30m09[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m�������[0;34m��[37m Nova Keystone +[A[79C + ����� [1;34m�������[0;34m��[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m�����[0;34m����[37m +[A[79C + � [1;34m������[0;34m���[37m +[A[79C + ���Ŀ +[A[79C + �[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ����� [1;34m�������[0;34m��[37m +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m���[0;34m������[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m�[0;34m��������[37m +[A[79C + ����� [1;34m�[0;34m��������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-10.ans b/src/infra/images/orig/zsim-10.ans new file mode 100644 index 0000000..85e80a2 --- /dev/null +++ b/src/infra/images/orig/zsim-10.ans @@ -0,0 +1,43 @@ +[0m[30m10[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m��������[0;34m�[37m Nova Keystone +[A[79C + ����� [1;34m��������[0;34m�[37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + � [1;34m������[0;34m���[37m +[A[79C + � [1;34m�������[0;34m��[37m +[A[79C + ���Ŀ +[A[79C + �[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ����� [1;34m���������[0;37m +[A[79C + � [1;34m����[0;34m�����[37m +[A[79C + � [1;34m����[0;34m�����[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #3 [1;30mCANCELED[0;37m +[A[79C + ����� [1;30mCANCELED[0;37m +[A[79C + � [1;30mCANCELED[0;37m +[A[79C + � [1;30mCANCELED[0;37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #4 [1;30mCANCELED[0;37m +[A[79C + ����� [1;30mCANCELED[0;37m +[A[79C + [1;30mCANCELED[0;37m +[A[79C + [1;30mCANCELED[0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-11.ans b/src/infra/images/orig/zsim-11.ans new file mode 100644 index 0000000..0a7b7e2 --- /dev/null +++ b/src/infra/images/orig/zsim-11.ans @@ -0,0 +1,43 @@ +[0m[30m11[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;34m���������[0;37m Nova Keystone +[A[79C + ����� [1;34m���������[0;37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + ��Ŀ [1;34m�������[0;34m��[37m +[A[79C + � [1;34m��������[0;34m�[37m +[A[79C + ���Ŀ +[A[79C + �[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ����� [1;32mSUCCESS[0;37m +[A[79C + [1;34m�����[0;34m����[37m +[A[79C + [1;34m�����[0;34m����[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #3 +[A[79C + ����� +[A[79C + � +[A[79C + � +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #4 +[A[79C + ����� +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-12.ans b/src/infra/images/orig/zsim-12.ans new file mode 100644 index 0000000..072d29b --- /dev/null +++ b/src/infra/images/orig/zsim-12.ans @@ -0,0 +1,43 @@ +[0m[30m12[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + ����� [1;32mSUCCESS[0;37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + ��Ŀ [1;34m��������[0;34m�[37m +[A[79C + � � [1;34m���������[0;37m +[A[79C + ����Ŀ +[A[79C + ��[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ������ [1;32mSUCCESS[0;37m +[A[79C + � [1;34m������[0;34m���[37m +[A[79C + � [1;34m������[0;34m���[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [34m���������[37m +[A[79C + ����� [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + ���Ŀ +[A[79C + �[1;30m���[0;37m� Nova #4 +[A[79C + ����� +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-13.ans b/src/infra/images/orig/zsim-13.ans new file mode 100644 index 0000000..cf656e3 --- /dev/null +++ b/src/infra/images/orig/zsim-13.ans @@ -0,0 +1,43 @@ +[0m[30m13[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + ����� [1;32mSUCCESS[0;37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + ��Ŀ [1;34m���������[0;37m +[A[79C + � � [1;32mSUCCESS[0;37m +[A[79C + ����Ŀ +[A[79C + ��[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ������ [1;32mSUCCESS[0;37m +[A[79C + � [1;34m�������[0;34m��[37m +[A[79C + � [1;34m�������[0;34m��[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m�[0;34m��������[37m +[A[79C + ����� [1;34m�[0;34m��������[37m +[A[79C + � [34m���������[37m +[A[79C + � [34m���������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [34m���������[37m +[A[79C + ����� [34m���������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-14.ans b/src/infra/images/orig/zsim-14.ans new file mode 100644 index 0000000..0151210 --- /dev/null +++ b/src/infra/images/orig/zsim-14.ans @@ -0,0 +1,43 @@ +[0m[30m14[37m [1mZuul[0m [1mGit[0m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + ����� [1;32mSUCCESS[0;37m [1;33m�[0;37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + ��Ŀ [1;32mSUCCESS[0;37m +[A[79C + � � [1;32mSUCCESS[0;37m +[A[79C + ����Ŀ +[A[79C + ��[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ������ [1;32mSUCCESS[0;37m +[A[79C + � [1;34m��������[0;34m�[37m +[A[79C + � [1;34m��������[0;34m�[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m���[0;34m������[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + � [1;34m�[0;34m��������[37m +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m�[0;34m��������[37m +[A[79C + ����� [1;34m�[0;34m��������[37m +[A[79C + [34m���������[37m +[A[79C + [34m���������[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-15.ans b/src/infra/images/orig/zsim-15.ans new file mode 100644 index 0000000..eb63977 --- /dev/null +++ b/src/infra/images/orig/zsim-15.ans @@ -0,0 +1,43 @@ +[0m[30m15[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [1;33m�[0;37m#1 +[A[79C + +[A[79C + ����Ŀ +[A[79C + ��[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ������ [1;32mSUCCESS[0;37m +[A[79C + � [1;34m���������[0;37m +[A[79C + � [1;34m���������[0;37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m�����[0;34m����[37m +[A[79C + ����� [1;34m�����[0;34m����[37m +[A[79C + � [1;34m��[0;34m�������[37m +[A[79C + � [1;34m���[0;34m������[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m���[0;34m������[37m +[A[79C + ����� [1;34m���[0;34m������[37m +[A[79C + [1;34m�[0;34m��������[37m +[A[79C + [1;34m��[0;34m�������[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-16.ans b/src/infra/images/orig/zsim-16.ans new file mode 100644 index 0000000..d007060 --- /dev/null +++ b/src/infra/images/orig/zsim-16.ans @@ -0,0 +1,43 @@ +[0m[30m16[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [1;33m�[0;37m#1 +[A[79C + +[A[79C + ����Ŀ +[A[79C + ��[1;31m���[0;37m� Keystone #2 [1;31mFAILURE[0;37m +[A[79C + ������ [1;32mSUCCESS[0;37m +[A[79C + � [1;32mSUCCESS[0;37m +[A[79C + � [1;32mSUCCESS[0;37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m�������[0;34m��[37m +[A[79C + ����� [1;34m�������[0;34m��[37m +[A[79C + � [1;34m�����[0;34m����[37m +[A[79C + � [1;34m������[0;34m���[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m�����[0;34m����[37m +[A[79C + ����� [1;34m�����[0;34m����[37m +[A[79C + [1;34m���[0;34m������[37m +[A[79C + [1;34m����[0;34m�����[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-17.ans b/src/infra/images/orig/zsim-17.ans new file mode 100644 index 0000000..14c9258 --- /dev/null +++ b/src/infra/images/orig/zsim-17.ans @@ -0,0 +1,43 @@ +[0m[30m17[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [1;33m�[0;37m#1 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;34m���������[0;37m +[A[79C + ����� [1;34m���������[0;37m +[A[79C + � [1;34m�������[0;34m��[37m +[A[79C + � [1;34m��������[0;34m�[37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m�������[0;34m��[37m +[A[79C + ����� [1;34m�������[0;34m��[37m +[A[79C + [1;34m�����[0;34m����[37m +[A[79C + [1;34m������[0;34m���[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-18.ans b/src/infra/images/orig/zsim-18.ans new file mode 100644 index 0000000..ed780ea --- /dev/null +++ b/src/infra/images/orig/zsim-18.ans @@ -0,0 +1,43 @@ +[0m[30m18[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [1;33m�[0;37m#1 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #3 [1;32m SUCCESS [0;37m +[A[79C + ����� [1;32m SUCCESS [0;37m +[A[79C + � [1;32m SUCCESS [0;37m +[A[79C + � [1;32m SUCCESS [0;37m +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;34m���������[0;37m +[A[79C + ����� [1;34m���������[0;37m +[A[79C + [1;34m�������[0;34m��[37m +[A[79C + [1;34m��������[0;34m�[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-19.ans b/src/infra/images/orig/zsim-19.ans new file mode 100644 index 0000000..c82b91c --- /dev/null +++ b/src/infra/images/orig/zsim-19.ans @@ -0,0 +1,43 @@ +[0m[30m19[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [33m�[37m#1 +[A[79C + [1;33m�[0;37m#3 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;32m SUCCESS [0;37m +[A[79C + ����� [1;32m SUCCESS [0;37m +[A[79C + [1;34m���������[0;37m +[A[79C + [1;32m SUCCESS [0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-20.ans b/src/infra/images/orig/zsim-20.ans new file mode 100644 index 0000000..4d75d8b --- /dev/null +++ b/src/infra/images/orig/zsim-20.ans @@ -0,0 +1,43 @@ +[0m[30m20[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [33m�[37m#1 +[A[79C + [1;33m�[0;37m#3 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ���Ŀ +[A[79C + �[1;32m���[0;37m� Nova #4 [1;32m SUCCESS [0;37m +[A[79C + ����� [1;32m SUCCESS [0;37m +[A[79C + [1;32m SUCCESS [0;37m +[A[79C + [1;32m SUCCESS [0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-21.ans b/src/infra/images/orig/zsim-21.ans new file mode 100644 index 0000000..5847053 --- /dev/null +++ b/src/infra/images/orig/zsim-21.ans @@ -0,0 +1,43 @@ +[0m[30m21[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m�[0;37mbeefcab +[A[79C + [33m�[37m#1 +[A[79C + [33m�[37m#3 +[A[79C + [1;33m�[0;37m#4 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-22.ans b/src/infra/images/orig/zsim-22.ans new file mode 100644 index 0000000..3ad7700 --- /dev/null +++ b/src/infra/images/orig/zsim-22.ans @@ -0,0 +1,43 @@ +[0m[30m22[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m�[37mbadbeef [1;33m:([0;37m +[A[79C + [33m�[37m#1 +[A[79C + [33m�[37m#3 +[A[79C + [1;33m�[0;37m#4 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zsim-keyline.ans b/src/infra/images/orig/zsim-keyline.ans new file mode 100644 index 0000000..a2c3fb5 --- /dev/null +++ b/src/infra/images/orig/zsim-keyline.ans @@ -0,0 +1,45 @@ +[0m Zuul Git +[A[79C + +[A[79C + [X] Nova #1 SUCCESS Nova Keystone +[A[79C + | SUCCESS * HEAD * HEAD +[A[79C + |--+ OOOOOOOOO.. +[A[79C + | | SUCCESS +[A[79C + | | +[A[79C + | [X] Keystone #2 FAILURE +[A[79C + | SUCCESS +[A[79C + | OOOOOOO.... +[A[79C + | OOOOOOOOO.. +[A[79C + | +[A[79C + [X] Nova #3 OOOOOOO.... +[A[79C + | OOOOOOO.... +[A[79C + | OOOOO...... +[A[79C + | OOOOOO..... +[A[79C + | +[A[79C + [X] Nova #4 OOOO....... +[A[79C + OOOO....... +[A[79C + OO......... +[A[79C + OOO........ +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zuul-status.ans b/src/infra/images/orig/zuul-status.ans new file mode 100644 index 0000000..d21c0ca --- /dev/null +++ b/src/infra/images/orig/zuul-status.ans @@ -0,0 +1,49 @@ +[0m[47m [40m +[A[79C +[47m [1;31m Check [0;47m [1;31m Gate[0;47m [1;31m Post[0;47m [40m +[A[79C +[30;47m[[42m [47m][46m+-----------------+[37;47m [30m[[42m [47m][46m+-----------------+[47m [[42m [47m][46m+-----------------+[37;40m +[A[79C +[47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m|[37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;40m +[A[79C +[47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m|[37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m|[37m [30;46m+-----------------+[37;47m [30;46m+-----------------+[37;40m +[A[79C +[47m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;47m [30m|[37m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;47m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;40m +[A[79C +[47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;40m +[A[79C +[47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;40m +[A[79C +[47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m|[37m [30;46m+-----------------+[37;47m [30;46m+-----------------+[37;40m +[A[79C +[47m [30m|[37m [1;31m Release [0;47m [40m +[A[79C +[30;47m[[42m [47m][46m+-----------------+[37;47m [30m +[[41m [47m][46m+---------------+[37;47m [40m +[A[79C +[47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m |[37m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [40m +[A[79C +[47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m |[37m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m |[37m [30;46m+---------------+[37;47m [40m +[A[79C +[47m [30;46m|[1;31m pep8 [0;30;41mFAILURE[46m|[37;47m [30m |[37m [30m [37m [40m +[A[79C +[47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30m[[42m [47m][46m+-----------------+[47m [37m [40m +[A[79C +[47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[47m [37m [40m +[A[79C +[47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[47m [37m [40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m [37m [30;46m+-----------------+[47m [37m [40m +[A[79C +[47m [30m [37m [40m +[A[79C +[47m [40m +[A[79C +[47m [40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/orig/zuul.ans b/src/infra/images/orig/zuul.ans new file mode 100644 index 0000000..8442c58 --- /dev/null +++ b/src/infra/images/orig/zuul.ans @@ -0,0 +1,43 @@ +[0m[1;33m���������������������͵�������������������������[0;37m +[A[79C + [1;33m�������������������Ĵ���������������������[0;37m +[A[79C + [33m������������������[1m�[0;33m�����������������[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + [32m _____ _[37m +[A[79C + [32m|__ / _ _ _| |[37m +[A[79C + [32m/ / | | | | | | |[37m +[A[79C + [32m/ /| |_| | |_| | |[37m +[A[79C + [32m/____\__,_|\__,_|_|[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [33m������������������[1m�[0;33m�����������������[37m +[A[79C + [1;33m�������������������Ĵ���������������������[0;37m +[A[79C +[1;33m���������������������͵�������������������������[0;37m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/questions.ans b/src/infra/images/questions.ans new file mode 100644 index 0000000..450e9ac --- /dev/null +++ b/src/infra/images/questions.ans @@ -0,0 +1,27 @@ +[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1;30m▄[33m▄▄▄▄▄▄▄▄▄▄▄▄▄▄[30m▄[0;37m +[A[79C + [1;33m█[0;30;43m ▄ [1;33m▄▄▄▄▄ [0;30;43m ▄ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m [1;33m██[0;30;43m█▀▀[1;33m██[0;30;43m▄ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m [1;33;40m▀▀[0;37m [30;43m [1;33m▄██[0;30;43m█ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m [1;33m ██[0;30;43m█▀▀ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m ▀▀ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m [1;33m██[0;30;43m▄ [1;40m█[0;37m +[A[79C + [1;33m█[0;30;43m ▀ ▀▀▀ ▀ [1;40m█[0;37m +[A[79C + [1;30m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[0;37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/redhat.ans b/src/infra/images/redhat.ans new file mode 100644 index 0000000..ca7597e --- /dev/null +++ b/src/infra/images/redhat.ans @@ -0,0 +1,49 @@ +[0m +[A[79C + [1;31m ▄████▄▄▄▄███▄▄▄▄[0;37m +[A[79C + [31m [1m█▀██████████▄ █▄ [0;37m +[A[79C + [1;31m▐█▄[0;37m [1;31m▀▀ ▄██████████▄[0;37m +[A[79C + [1;31m███ ▄███████████████[0;31m [37m +[A[79C + [31m [1m▄▄███ [0;37m [1;31m ▀▀██████████████████▄[0;37m +[A[79C + [1;31m ██████▄[0;31m [37m [31m [1m ▀▀███████████████▌[0;37m +[A[79C + [1;31m ▐███████▄ [0;31m [37m [1;31m▀██████████▀ ██▄▄[0;37m +[A[79C + [1;31m▐█████████▄▄ [0;31m [37m [1;31m █████████▄██████▌[0;31m [37m +[A[79C + [1;31m▀████████████▄▄ ███████████████▌[0;37m +[A[79C + [1;31m▀▀████████████████████████████▀[0;37m +[A[79C + [1m▐██▄ [0m [31m [1m▀▀█████████████████████▀[37m [0m +[A[79C + [1m ▀███▄██▄[0m [31m [1m▀▀▀▀████████▀▀▀▀ [0;37m +[A[79C +[1m ▄▄██▄ █████▄ ▄▄ ▄▄ ▄▄▄ [0m +[A[79C +[1m ████████▄▄▄███████▄▄███████████ [0m +[A[79C +[1m █████████████████████▄▄▀▀▄███▌ ▄▄ [0m +[A[79C +[1m ▀███████████████████████████ █████ [0m +[A[79C +[1m ▀███████████████████████▀ ▄▄████▀ [31m [0;37m +[A[79C +[1m ▀████████████████████▀ ▄█████▀ [0m [1m [0m +[A[79C +[1m ▀██████████████████████▀ [0m +[A[79C +[1m ▀███████████████▀▀ [0m +[A[79C +[1m ▀▀▀█████▀▀▀ [0m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/startup1.ans b/src/infra/images/startup1.ans new file mode 100644 index 0000000..c657cdb --- /dev/null +++ b/src/infra/images/startup1.ans @@ -0,0 +1,39 @@ +[0m ┌──────┐ +[A[79C + │ [1;31mZuul[0;37m │ +[A[79C + └──┬───┘ +[A[79C + │ +[A[79C + ┌─────┬─────┬─────┬──┴──┬─────┬─────┬─────┐ +[A[79C + │ │ │ │ │ │ │ │ +[A[79C +┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ +[A[79C +│[1;31mzm1[0;37m│ │[1;31mzm2[0;37m│ │[1;31mzm3[0;37m│ │[1;31mzm4[0;37m│ │[1;31mzm5[0;37m│ │[1;31mzm6[0;37m│ │[1;31mzm7[0;37m│ │[1;31mzm8[0;37m│ +[A[79C +└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ +[A[79C +[1mnova keyst swift devst tmpst glanc dg projc[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1m [0m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/startup2.ans b/src/infra/images/startup2.ans new file mode 100644 index 0000000..65e44fb --- /dev/null +++ b/src/infra/images/startup2.ans @@ -0,0 +1,39 @@ +[0m ┌──────┐ +[A[79C + │ [1;31mZuul[0;37m │ +[A[79C + └──┬───┘ +[A[79C + │ +[A[79C + ┌─────┬─────┬─────┬──┴──┬─────┬─────┬─────┐ +[A[79C + │ │ │ │ │ │ │ │ +[A[79C +┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ +[A[79C +│[1;31mzm1[0;37m│ │[1;31mzm2[0;37m│ │[1;31mzm3[0;37m│ │[1;31mzm4[0;37m│ │[1;31mzm5[0;37m│ │[1;31mzm6[0;37m│ │[1;31mzm7[0;37m│ │[1;31mzm8[0;37m│ +[A[79C +└───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ +[A[79C +nova keyst swift devst tmpst glanc dg projc +[A[79C +[1mmastr newt mitak mastr mastr diabl mastr mastr[0m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [1m [0m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/td.ans b/src/infra/images/td.ans new file mode 100644 index 0000000..dcbf243 Binary files /dev/null and b/src/infra/images/td.ans differ diff --git a/src/infra/images/testslide.ans b/src/infra/images/testslide.ans new file mode 100644 index 0000000..f2feea4 --- /dev/null +++ b/src/infra/images/testslide.ans @@ -0,0 +1,49 @@ +[0m[44m╔══════════════════════════════════════════════════════════════════╗[40m +[A[79C +[44m║ ┌──────────────────────────────────────────────────────────────┐ ║[40m +[A[79C +[44m║ │[40m [44m│ ║[40m +[A[79C +[44m║ │[40m [44m│ ║[40m +[A[79C +[44m║ │[40m [30m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [31m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [32m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [33m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [34m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [35m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [36m Test Slide [47m Test Slide [37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m Test Slide [47m Test Slide [40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;30m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;31m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;32m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;33m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;34m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;35m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1;36m Test Slide [47m Test Slide [0;37;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [1m Test Slide [47m Test Slide [0;40m [44m│ ║[40m +[A[79C +[44m║ │[40m [44m│ ║[40m +[A[79C +[44m║ │[40m [44m│ ║[40m +[A[79C +[44m║ └──────────────────────────────────────────────────────────────┘ ║[40m +[A[79C +[44m╚══════════════════════════════════════════════════════════════════╝[40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/title.ans b/src/infra/images/title.ans new file mode 100644 index 0000000..c784327 --- /dev/null +++ b/src/infra/images/title.ans @@ -0,0 +1,45 @@ +[0m [1;34m______________[0;37m [1;34m.──.[0;37m [1;34m.──.[0;37m [1;34m______________[0;37m +[A[79C +[1;34m( ( [0;37m [1;34m\ \_____)____(_____/ /[0;37m [1;34m ) )[0;37m +[A[79C + [1;34m\ )[0;37m [1;34m`─────' [0;37m [1;34m `─────'[0;37m [1;34m( /[0;37m +[A[79C + [1;34m)/ [0;37m [1;34m \([0;37m +[A[79C +[1;34m /' [0;37m [1mREST APIs and the Return of the[0m [1;34m `\ [0;37m +[A[79C +[1;34mO [0;37m [1;32m ___ ___ _ _ ___ ___ _ ___ [0;37m [1;34m O[0;37m +[A[79C +[1;34m│[0;37m [1;32m / __/ _ \| \| / __|/ _ \| | | __|[0;37m [1;34m│[0;37m +[A[79C +[1;34m│[0;37m [1;32m| (_| (_) | .` \__ \ (_) | |__| _| [0;37m [1;34m│[0;37m +[A[79C +[1;34m│[0;37m [1;32m \___\___/|_|\_|___/\___/|____|___|[0;37m [1;34m│[0;37m +[A[79C +[1;34m│[0;37m [1;34m│[0;37m +[A[79C +[1;34m│[0;37m [1mApplication[0m [1;34m│[0;37m +[A[79C +[1;34m│[0;37m [1;34m│[0;37m +[A[79C +[1;34mO [0;37m [33mJames E. Blair <corvus@inaugust.com>[37m [1;34m O[0;37m +[A[79C +[1;34m \.[0;37m [1;34m./ [0;37m +[A[79C + [1;34m)\ [0;37m [1;34m,____[0;37m [1;34m____,[0;37m [1;34m /([0;37m +[A[79C + [1;34m/ )[0;37m [1;34m/ ____\ ____ /____ \[0;37m [1;34m( \[0;37m +[A[79C +[1;34m( (_________/_/ ) ( \_\_________) )[0;37m +[A[79C +[1;34m ~-' [0;37m [1;34m`──'[0;37m [1;34m`──'[0;37m [1;34m `-~ [0;37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/workflow.ans b/src/infra/images/workflow.ans new file mode 100644 index 0000000..067cc56 --- /dev/null +++ b/src/infra/images/workflow.ans @@ -0,0 +1,29 @@ +[0m Hack Review Test +[A[79C + ========= ========== ========== +[A[79C + +[A[79C + push approve +[A[79C + +-------------+ +-------------+ +[A[79C + | | | | +[A[79C + +------+--+ +--v----+--+ +--v-------+ +[A[79C + | | | | | | +[A[79C + | $EDITOR | | Gerrit | | Zuul | +[A[79C + | | | | | | +[A[79C + +------^--+ +--+----^--+ +--+-------+ +[A[79C + | | | | +[A[79C + +-------------+ +-------------+ +[A[79C + clone merge +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-00.ans b/src/infra/images/zsim-00.ans new file mode 100644 index 0000000..bbfdc82 --- /dev/null +++ b/src/infra/images/zsim-00.ans @@ -0,0 +1,43 @@ +[0m[30m00[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-01.ans b/src/infra/images/zsim-01.ans new file mode 100644 index 0000000..742a968 --- /dev/null +++ b/src/infra/images/zsim-01.ans @@ -0,0 +1,43 @@ +[0m[30m01[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #1 Nova Keystone +[A[79C + └───┘ [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-02.ans b/src/infra/images/zsim-02.ans new file mode 100644 index 0000000..28809c2 --- /dev/null +++ b/src/infra/images/zsim-02.ans @@ -0,0 +1,43 @@ +[0m[30m02[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [34m█████████[37m Nova Keystone +[A[79C + └───┘ [34m█████████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-03.ans b/src/infra/images/zsim-03.ans new file mode 100644 index 0000000..c6a2bfd --- /dev/null +++ b/src/infra/images/zsim-03.ans @@ -0,0 +1,43 @@ +[0m[30m03[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m█[0;34m████████[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m█[0;34m████████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Keystone #2 +[A[79C + └───┘ +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-04.ans b/src/infra/images/zsim-04.ans new file mode 100644 index 0000000..8893ed8 --- /dev/null +++ b/src/infra/images/zsim-04.ans @@ -0,0 +1,43 @@ +[0m[30m04[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m██[0;34m███████[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m██[0;34m███████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [34m█████████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Keystone #2 [34m█████████[37m +[A[79C + └───┘ [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-05.ans b/src/infra/images/zsim-05.ans new file mode 100644 index 0000000..be3cd9e --- /dev/null +++ b/src/infra/images/zsim-05.ans @@ -0,0 +1,43 @@ +[0m[30m05[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m███[0;34m██████[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Keystone #2 [1;34m██[0;34m███████[37m +[A[79C + └─┬─┘ [1;34m█[0;34m████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #3 +[A[79C + └───┘ +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-06.ans b/src/infra/images/zsim-06.ans new file mode 100644 index 0000000..64de1d6 --- /dev/null +++ b/src/infra/images/zsim-06.ans @@ -0,0 +1,43 @@ +[0m[30m06[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m████[0;34m█████[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m████[0;34m█████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Keystone #2 [1;34m█████[0;34m████[37m +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [34m█████████[37m +[A[79C + └───┘ [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-07.ans b/src/infra/images/zsim-07.ans new file mode 100644 index 0000000..6a34279 --- /dev/null +++ b/src/infra/images/zsim-07.ans @@ -0,0 +1,43 @@ +[0m[30m07[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m█████[0;34m████[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m█████[0;34m████[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m████[0;34m█████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Keystone #2 [1;34m███████[0;34m██[37m +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m█[0;34m████████[37m +[A[79C + └─┬─┘ [1;34m█[0;34m████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #4 +[A[79C + └───┘ +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-08.ans b/src/infra/images/zsim-08.ans new file mode 100644 index 0000000..318c67b --- /dev/null +++ b/src/infra/images/zsim-08.ans @@ -0,0 +1,43 @@ +[0m[30m08[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m██████[0;34m███[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m██████[0;34m███[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m████[0;34m█████[37m +[A[79C + │ [1;34m█████[0;34m████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Keystone #2 [1;34m████████[0;34m█[37m +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m██[0;34m███████[37m +[A[79C + └─┬─┘ [1;34m██[0;34m███████[37m +[A[79C + │ [34m█████████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [34m█████████[37m +[A[79C + └───┘ [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-09.ans b/src/infra/images/zsim-09.ans new file mode 100644 index 0000000..441979f --- /dev/null +++ b/src/infra/images/zsim-09.ans @@ -0,0 +1,43 @@ +[0m[30m09[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m███████[0;34m██[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m███████[0;34m██[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m█████[0;34m████[37m +[A[79C + │ [1;34m██████[0;34m███[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + └─┬─┘ [1;34m███████[0;34m██[37m +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m███[0;34m██████[37m +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m█[0;34m████████[37m +[A[79C + └───┘ [1;34m█[0;34m████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-10.ans b/src/infra/images/zsim-10.ans new file mode 100644 index 0000000..818789e --- /dev/null +++ b/src/infra/images/zsim-10.ans @@ -0,0 +1,43 @@ +[0m[30m10[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m████████[0;34m█[37m Nova Keystone +[A[79C + └─┬─┘ [1;34m████████[0;34m█[37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + │ [1;34m██████[0;34m███[37m +[A[79C + │ [1;34m███████[0;34m██[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + └─┬─┘ [1;34m█████████[0;37m +[A[79C + │ [1;34m████[0;34m█████[37m +[A[79C + │ [1;34m████[0;34m█████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #3 [1;30mCANCELED[0;37m +[A[79C + └─┬─┘ [1;30mCANCELED[0;37m +[A[79C + │ [1;30mCANCELED[0;37m +[A[79C + │ [1;30mCANCELED[0;37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #4 [1;30mCANCELED[0;37m +[A[79C + └───┘ [1;30mCANCELED[0;37m +[A[79C + [1;30mCANCELED[0;37m +[A[79C + [1;30mCANCELED[0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-11.ans b/src/infra/images/zsim-11.ans new file mode 100644 index 0000000..ddb8bde --- /dev/null +++ b/src/infra/images/zsim-11.ans @@ -0,0 +1,43 @@ +[0m[30m11[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;34m█████████[0;37m Nova Keystone +[A[79C + └─┬─┘ [1;34m█████████[0;37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + └──┐ [1;34m███████[0;34m██[37m +[A[79C + │ [1;34m████████[0;34m█[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + └───┘ [1;32mSUCCESS[0;37m +[A[79C + [1;34m█████[0;34m████[37m +[A[79C + [1;34m█████[0;34m████[37m +[A[79C + ┌───┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #3 +[A[79C + └─┬─┘ +[A[79C + │ +[A[79C + │ +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #4 +[A[79C + └───┘ +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-12.ans b/src/infra/images/zsim-12.ans new file mode 100644 index 0000000..69eef26 --- /dev/null +++ b/src/infra/images/zsim-12.ans @@ -0,0 +1,43 @@ +[0m[30m12[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + └─┬─┘ [1;32mSUCCESS[0;37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + ├──┐ [1;34m████████[0;34m█[37m +[A[79C + │ │ [1;34m█████████[0;37m +[A[79C + │┌─┴─┐ +[A[79C + ││[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + │└───┘ [1;32mSUCCESS[0;37m +[A[79C + │ [1;34m██████[0;34m███[37m +[A[79C + │ [1;34m██████[0;34m███[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [34m█████████[37m +[A[79C + └─┬─┘ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;30m▐█▌[0;37m│ Nova #4 +[A[79C + └───┘ +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-13.ans b/src/infra/images/zsim-13.ans new file mode 100644 index 0000000..5b8b54b --- /dev/null +++ b/src/infra/images/zsim-13.ans @@ -0,0 +1,43 @@ +[0m[30m13[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + └─┬─┘ [1;32mSUCCESS[0;37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + ├──┐ [1;34m█████████[0;37m +[A[79C + │ │ [1;32mSUCCESS[0;37m +[A[79C + │┌─┴─┐ +[A[79C + ││[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + │└───┘ [1;32mSUCCESS[0;37m +[A[79C + │ [1;34m███████[0;34m██[37m +[A[79C + │ [1;34m███████[0;34m██[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m█[0;34m████████[37m +[A[79C + └─┬─┘ [1;34m█[0;34m████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + │ [34m█████████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [34m█████████[37m +[A[79C + └───┘ [34m█████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-14.ans b/src/infra/images/zsim-14.ans new file mode 100644 index 0000000..f0ec335 --- /dev/null +++ b/src/infra/images/zsim-14.ans @@ -0,0 +1,43 @@ +[0m[30m14[37m [1mZuul[0m [1mGit[0m +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #1 [1;32mSUCCESS[0;37m Nova Keystone +[A[79C + └─┬─┘ [1;32mSUCCESS[0;37m [1;33m■[0;37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + ├──┐ [1;32mSUCCESS[0;37m +[A[79C + │ │ [1;32mSUCCESS[0;37m +[A[79C + │┌─┴─┐ +[A[79C + ││[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + │└───┘ [1;32mSUCCESS[0;37m +[A[79C + │ [1;34m████████[0;34m█[37m +[A[79C + │ [1;34m████████[0;34m█[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m███[0;34m██████[37m +[A[79C + └─┬─┘ [1;34m███[0;34m██████[37m +[A[79C + │ [1;34m█[0;34m████████[37m +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m█[0;34m████████[37m +[A[79C + └───┘ [1;34m█[0;34m████████[37m +[A[79C + [34m█████████[37m +[A[79C + [34m█████████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-15.ans b/src/infra/images/zsim-15.ans new file mode 100644 index 0000000..5ea15df --- /dev/null +++ b/src/infra/images/zsim-15.ans @@ -0,0 +1,43 @@ +[0m[30m15[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [1;33m■[0;37m#1 +[A[79C + +[A[79C + │┌───┐ +[A[79C + ││[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + │└───┘ [1;32mSUCCESS[0;37m +[A[79C + │ [1;34m█████████[0;37m +[A[79C + │ [1;34m█████████[0;37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m█████[0;34m████[37m +[A[79C + └─┬─┘ [1;34m█████[0;34m████[37m +[A[79C + │ [1;34m██[0;34m███████[37m +[A[79C + │ [1;34m███[0;34m██████[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m███[0;34m██████[37m +[A[79C + └───┘ [1;34m███[0;34m██████[37m +[A[79C + [1;34m█[0;34m████████[37m +[A[79C + [1;34m██[0;34m███████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-16.ans b/src/infra/images/zsim-16.ans new file mode 100644 index 0000000..0d18c1b --- /dev/null +++ b/src/infra/images/zsim-16.ans @@ -0,0 +1,43 @@ +[0m[30m16[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [1;33m■[0;37m#1 +[A[79C + +[A[79C + │┌───┐ +[A[79C + ││[1;31m▐█▌[0;37m│ Keystone #2 [1;31mFAILURE[0;37m +[A[79C + │└───┘ [1;32mSUCCESS[0;37m +[A[79C + │ [1;32mSUCCESS[0;37m +[A[79C + │ [1;32mSUCCESS[0;37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m███████[0;34m██[37m +[A[79C + └─┬─┘ [1;34m███████[0;34m██[37m +[A[79C + │ [1;34m█████[0;34m████[37m +[A[79C + │ [1;34m██████[0;34m███[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m█████[0;34m████[37m +[A[79C + └───┘ [1;34m█████[0;34m████[37m +[A[79C + [1;34m███[0;34m██████[37m +[A[79C + [1;34m████[0;34m█████[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-17.ans b/src/infra/images/zsim-17.ans new file mode 100644 index 0000000..b301dc8 --- /dev/null +++ b/src/infra/images/zsim-17.ans @@ -0,0 +1,43 @@ +[0m[30m17[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [1;33m■[0;37m#1 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;34m█████████[0;37m +[A[79C + └─┬─┘ [1;34m█████████[0;37m +[A[79C + │ [1;34m███████[0;34m██[37m +[A[79C + │ [1;34m████████[0;34m█[37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m███████[0;34m██[37m +[A[79C + └───┘ [1;34m███████[0;34m██[37m +[A[79C + [1;34m█████[0;34m████[37m +[A[79C + [1;34m██████[0;34m███[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-18.ans b/src/infra/images/zsim-18.ans new file mode 100644 index 0000000..da25c2e --- /dev/null +++ b/src/infra/images/zsim-18.ans @@ -0,0 +1,43 @@ +[0m[30m18[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [1;33m■[0;37m#1 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #3 [1;32m SUCCESS [0;37m +[A[79C + └─┬─┘ [1;32m SUCCESS [0;37m +[A[79C + │ [1;32m SUCCESS [0;37m +[A[79C + │ [1;32m SUCCESS [0;37m +[A[79C + ┌─┴─┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;34m█████████[0;37m +[A[79C + └───┘ [1;34m█████████[0;37m +[A[79C + [1;34m███████[0;34m██[37m +[A[79C + [1;34m████████[0;34m█[37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-19.ans b/src/infra/images/zsim-19.ans new file mode 100644 index 0000000..14b9e51 --- /dev/null +++ b/src/infra/images/zsim-19.ans @@ -0,0 +1,43 @@ +[0m[30m19[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [33m■[37m#1 +[A[79C + [1;33m■[0;37m#3 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;32m SUCCESS [0;37m +[A[79C + └───┘ [1;32m SUCCESS [0;37m +[A[79C + [1;34m█████████[0;37m +[A[79C + [1;32m SUCCESS [0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-20.ans b/src/infra/images/zsim-20.ans new file mode 100644 index 0000000..e1a3b8c --- /dev/null +++ b/src/infra/images/zsim-20.ans @@ -0,0 +1,43 @@ +[0m[30m20[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [33m■[37m#1 +[A[79C + [1;33m■[0;37m#3 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + ┌───┐ +[A[79C + │[1;32m▐█▌[0;37m│ Nova #4 [1;32m SUCCESS [0;37m +[A[79C + └───┘ [1;32m SUCCESS [0;37m +[A[79C + [1;32m SUCCESS [0;37m +[A[79C + [1;32m SUCCESS [0;37m [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-21.ans b/src/infra/images/zsim-21.ans new file mode 100644 index 0000000..ccfeef2 --- /dev/null +++ b/src/infra/images/zsim-21.ans @@ -0,0 +1,43 @@ +[0m[30m21[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m■[0;37mbeefcab +[A[79C + [33m■[37m#1 +[A[79C + [33m■[37m#3 +[A[79C + [1;33m■[0;37m#4 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-22.ans b/src/infra/images/zsim-22.ans new file mode 100644 index 0000000..8be6db5 --- /dev/null +++ b/src/infra/images/zsim-22.ans @@ -0,0 +1,43 @@ +[0m[30m22[37m [1mZuul[0m [1mGit[0m +[A[79C + +[A[79C + Nova Keystone +[A[79C + [33m■[37mbadbeef [1;33m:([0;37m +[A[79C + [33m■[37m#1 +[A[79C + [33m■[37m#3 +[A[79C + [1;33m■[0;37m#4 +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [30m.[37m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zsim-keyline.ans b/src/infra/images/zsim-keyline.ans new file mode 100644 index 0000000..a2c3fb5 --- /dev/null +++ b/src/infra/images/zsim-keyline.ans @@ -0,0 +1,45 @@ +[0m Zuul Git +[A[79C + +[A[79C + [X] Nova #1 SUCCESS Nova Keystone +[A[79C + | SUCCESS * HEAD * HEAD +[A[79C + |--+ OOOOOOOOO.. +[A[79C + | | SUCCESS +[A[79C + | | +[A[79C + | [X] Keystone #2 FAILURE +[A[79C + | SUCCESS +[A[79C + | OOOOOOO.... +[A[79C + | OOOOOOOOO.. +[A[79C + | +[A[79C + [X] Nova #3 OOOOOOO.... +[A[79C + | OOOOOOO.... +[A[79C + | OOOOO...... +[A[79C + | OOOOOO..... +[A[79C + | +[A[79C + [X] Nova #4 OOOO....... +[A[79C + OOOO....... +[A[79C + OO......... +[A[79C + OOO........ +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zuul-status.ans b/src/infra/images/zuul-status.ans new file mode 100644 index 0000000..d21c0ca --- /dev/null +++ b/src/infra/images/zuul-status.ans @@ -0,0 +1,49 @@ +[0m[47m [40m +[A[79C +[47m [1;31m Check [0;47m [1;31m Gate[0;47m [1;31m Post[0;47m [40m +[A[79C +[30;47m[[42m [47m][46m+-----------------+[37;47m [30m[[42m [47m][46m+-----------------+[47m [[42m [47m][46m+-----------------+[37;40m +[A[79C +[47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m|[37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;40m +[A[79C +[47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m|[37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m|[37m [30;46m+-----------------+[37;47m [30;46m+-----------------+[37;40m +[A[79C +[47m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;47m [30m|[37m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;47m [30;46m|[1;31m pep8 [0;30;42mSUCCESS[46m|[37;40m +[A[79C +[47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;40m +[A[79C +[47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;40m +[A[79C +[47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30m|[37m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m|[37m [30;46m+-----------------+[37;47m [30;46m+-----------------+[37;40m +[A[79C +[47m [30m|[37m [1;31m Release [0;47m [40m +[A[79C +[30;47m[[42m [47m][46m+-----------------+[37;47m [30m +[[41m [47m][46m+---------------+[37;47m [40m +[A[79C +[47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [30m |[37m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[37;47m [40m +[A[79C +[47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [30m |[37m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[37;47m [40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m |[37m [30;46m+---------------+[37;47m [40m +[A[79C +[47m [30;46m|[1;31m pep8 [0;30;41mFAILURE[46m|[37;47m [30m |[37m [30m [37m [40m +[A[79C +[47m [30;46m| [1;31mdocs [0;30;46m [36;44mxx [30;46m |[37;47m [30m[[42m [47m][46m+-----------------+[47m [37m [40m +[A[79C +[47m [30;46m| [1;31mpython27[0;30;46m [36;44mx [30;46m |[37;47m [30m [37m [30;46m|[1;31mnova [0;30;46m45:20[1;31m [0;30;46m|[47m [37m [40m +[A[79C +[47m [30;46m| [1;31mtempest[0;30;46m [36;44mx [30;46m |[37;47m [30m [37m [30;46m|[1;31m321465 [0;30;46m13:37[1;31m [0;30;46m|[47m [37m [40m +[A[79C +[47m [30;46m+-----------------+[37;47m [30m [37m [30;46m+-----------------+[47m [37m [40m +[A[79C +[47m [30m [37m [40m +[A[79C +[47m [40m +[A[79C +[47m [40m +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/images/zuul.ans b/src/infra/images/zuul.ans new file mode 100644 index 0000000..6369083 --- /dev/null +++ b/src/infra/images/zuul.ans @@ -0,0 +1,43 @@ +[0m[1;33m══════════════════════╡│││╞═════════════════════[0;37m +[A[79C + [1;33m────────────────────┤│├───────────────────[0;37m +[A[79C + [33m──────────────────[1m│[0;33m─────────────────[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + [32m _____ _[37m +[A[79C + [32m|__ / _ _ _| |[37m +[A[79C + [32m/ / | | | | | | |[37m +[A[79C + [32m/ /| |_| | |_| | |[37m +[A[79C + [32m/____\__,_|\__,_|_|[37m +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + +[A[79C + [33m──────────────────[1m│[0;33m─────────────────[37m +[A[79C + [1;33m────────────────────┤│├───────────────────[0;37m +[A[79C +[1;33m══════════════════════╡│││╞═════════════════════[0;37m +[A[79C + +[A[79C + +[A[79C +[0m \ No newline at end of file diff --git a/src/infra/infra.rst b/src/infra/infra.rst new file mode 100644 index 0000000..4b199d3 --- /dev/null +++ b/src/infra/infra.rst @@ -0,0 +1,1239 @@ +. 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 + +OpenStack +========= + +tl;dr +===== + + * multi repo + * integrated deliverable + * gated commits + * open tooling + * nobody is special + * there is no Dana, only Zuul + +OpenStack Is +============ + + * Federated + * Distributed + * Large + * Open + * Not Alone + +Federated +========= + + * Hundreds of involved companies + * No 'main' company + * "Decisions are made by those who show up" + * Union of priorities/use cases + +Impact of being Federated +========================= + + * No company can appoint humans to project positions + * The project cannot fire anyone + * Variable background of contributors + * Heavy reliance on consensus-oriented democracy + +Distributed +=========== + + * There is no office + * Contributor base is global + * Multitude of contributor backgrounds + +Impact of being Distributed +=========================== + + * Constantly at odds with American Exceptionalism + * Tooling must empower all contributors, regardless of background, + skill level or cultural context + * Heavy preference for text-based communication + * Cannot assume US-centric needs or solutions + +Large numbers of +================ + + * Contributors (\~2k in any given 6 month period) + * Changes + * Code Repositories (1889 as of this morning) + +OpenStack Scale Comparison +========================== + + * 2KJPH (2,000 jobs per hour) + * Nodes from 13 Regions of 5 Public and 2 Private OpenStack Clouds + * Rackspace, Internap, OVH, Vexxhost, CityCloud and Linaro, Limestone + * 10,000 changes merged per month + +OpenStack Scale Comparison +========================== + + * 2KJPH (2,000 jobs per hour) + * Nodes from 12 Regions of 5 Public and 1 Private OpenStack Clouds + * Rackspace, Internap, OVH, Vexxhost, CityCloud and Linaro, Limestone + * 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. + +Four Opens +========== + + * Open Source + (we don't hold back Enterprise features, we don't cripple things) + * Open Design + (design process open to all, decisions are not made inside company doors) + * Open Development + (public source code, public code review, all code is reviewed and gated) + * Open Community + (lazy consensus, democratic leadership from participants, + public logged meetings in IRC, public archived mailing lists) + +Nobody is Special +================= + + * No dictators + * Aggressively egalitarian + * No "pay for play" + +Fifth Open - Four Opens Applied to the Infrastructure +===================================================== + + * All tools must be Open + * Any external services must by Open + * Strongly avoid single-vendor + +Multi-Vendor Open Tooling +========================= + + * Philosophical + * Pragmatic + +Sixth Open - Four Opens Applied to Operations +============================================= + + * Ops driven by git/code-review - not by humans running commands + * Run as many things CD as possible + * Infrastructure team operates the same as the project + * Core reviewer status and root access are earned + * Human-initiated ops actions (running commands, clicking a UI) are a bug + * Keys/secrets are not Open :) + +We're Not Alone +=============== + + * Dependencies (libvirt/kvm/xen, mysql/pg, rabbit, + python/javascript, ceph/gluster, ansible/salt/puppet/chef, ovs/odl) + * Adjacencies (kubernetes, ansible, terraform, opnfv, spinnaker) + * Vendors (plugins, products, services, distros) + +In a Nutshell +============= + + * Code Review - nobody has commit/push access + * Gated Commits + * 3rd-Party CI for vendors + +Infra Responsibilities +====================== + + * Communication and Planning Systems + * Source Code (code hosting, code review) + * Contributor Feedback and Reporting + * Content Publication + * Automated Gating + +All of our systems run in OpenStack Public Clouds +================================================= + +Communication and Planning Systems +================================== + + * Etherpad http://etherpad.openstack.org + * Pastebin http://paste.openstack.org + * Issue/Feature Tracking (storyboard) http://storyboard.openstack.org + * Forum (askbot) http://ask.openstack.org + * Mailing Lists (mailman) http://lists.openstack.org + * IRC registration, meetings, bots and logging http://eavesdrop.openstack.org + * Meeting planning (yaml2ical) + * PBX (asterisk) + +Source Code +=========== + + * Code Review (gerrit) http://review.openstack.org + * git replica farm (git/cgit) http://git.openstack.org + * Code Search (hound) http://codesearch.openstack.org + +Contributor Feedback and Reporting +================================== + + * Build Logs (apache) http://logs.openstack.org + * Log Indexing (ELK) http://logstash.openstack.org + * Known Failure Identification http://status.openstack.org/elastic-recheck/ + * Test Trending http://status.openstack.org/openstack-health/#/ + * Metrics/Statistics http://grafana.openstack.org/ + +Content Publication +=================== + + * Documentation http://docs.openstack.org + * Tag-driven releases to PyPI, NPM, Maven, etc + +Gated Commits +============= + +:: + + Hack Review Test + ========= ========== ========== + + push approve + +-------------+ +-------------+ + | | | | + +------+--+ +--v----+--+ +--v-------+ + | | | | | | + | $EDITOR | | Gerrit | | Zuul | + | | | | | | + +------^--+ +--+----^--+ +--+-------+ + | | | | + +-------------+ +-------------+ + clone merge + +Gating +====== + +Every change proposed for a repository is tested before it merges. + +Co-gating +========= + +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 +================== + +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. + +Zuul +==== + + * Custom-written multi-repo parallel co-gating engine + * When to run + * Where to run it + * With what git states + * How to respond to results + +Not just for OpenStack +====================== + + * Zuul v3 is in production for OpenStack (in OpenStack VMs) + + Also running at: + + * BMW (control plane in OpenShift) + * Godaddy (control plane in kuberenetes) + * OpenContrail (just learned about that yesterday) + * OpenLab + +Zuul is not a general purpose automation framework +================================================== + +Zuul in a nutshell +================== + + * Listens for code events + * Prepares appropriate job config and git repo states + * Allocates nodes for test jobs + * Pushes git repo states to nodes + * Runs user-defined Ansible playbooks + * Collects/reports results + * Potentially merges change + +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 + +Zuul Architecture +================= + +.. ansi:: images/architecture.ans + +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 12 regions across 6 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 zero or more VMs for every job + * Supports using pre-existing nodes (static provider) + +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 + +Cross-Project Example 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/513913/ + + Add unittest tips jobs + + Change-ID: I5b411be5c5aa43535fa89a51d6099aadd7a8ea60 + * os-client-config https://review.openstack.org/513915 + + Add shade-tox-tips jobs + + Change-ID: Ie3e9a4deca1d74b94e810e87e130706fe15fe2c9 + + Depends-On: https://review.openstack.org/513913/ + * os-client-config https://review.openstack.org/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: https://review.openstack.org/513914 + +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/keystoneauth + - 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: + 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: + 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.yaml$`` 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") + +OpenStack Github Support for Cross Community Testing +==================================================== + + * OpenStack does not use Github, but other people do + * 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 + * https://github.com/ansible/ansible/pull/20974 + +OpenLab for ecosystem testing +============================= + + * Hey Melvin + * Separate from but friendly with Infra + * Joint effort by Huawei and Intel + * Provides resources and support to test things that consume OpenStack + * gophercloud/terraform, ansible/openstack + +Cross Source Dependencies +========================= + +.. container:: progressive + + * shade https://review.openstack.org/539563 + + Shift voting flag and test_matrix_branch for ansible-devel job + + Change-ID: Ic9d3983de641dbe618c65b2cbf2dcfa3686575df + + * ansible https://github.com/ansible/ansible/pull/34925 + + continue fact gathering even without dmidecode + + * ansible https://github.com/ansible/ansible/pull/20974 + + Make a generalized OpenStack cloud constructor + + Depends-On: https://review.openstack.org/539563 + Depends-On: https://github.com/ansible/ansible/pull/34925 + +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 + +Shared Job Configs +================== + +* Job config repos are all in git +* Designed to support directly sharing job configurations +* git.openstack.org/openstack-infra/zuul-jobs repo is a 'standard library' + to 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.yaml + post-run: + - playbooks/base/post-ssh.yaml + - playbooks/base/post-logs.yaml + secrets: + - site_logs + +Simple Job +========== + +.. code:: yaml + + - job: + name: tox + pre-run: playbooks/setup-tox.yaml + run: playbooks/tox.yaml + post-run: playbooks/fetch-tox-output.yaml + + - job: + name: tox-py27 + parent: tox + vars: + tox_envlist: py27 + + +Simple Job Variant +================== + +.. code:: yaml + + - job: + name: tox-py27 + branches: 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.yaml + +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 + /home/zuul/src/git.openstack.org/openstack-infra/shade + /home/zuul/src/git.openstack.org/openstack/keystoneauth + /home/zuul/src/git.openstack.org/openstack/os-client-config + /home/zuul/src/github.com/ansible/ansible + +Project +======= + +.. code:: yaml + + - project: + check: + jobs: + - openstack-tox-py27 + - openstack-tox-py35 + - openstack-doc-build + +Project with Local Variant +========================== + +.. code:: yaml + + - project: + 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 + branches: 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: + check: + - nova-placement-functional-devstack + +Project with Job Dependencies +============================= + +.. code:: yaml + + # In git.openstack.org/openstack-infra/project-config: + - 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-infra/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: + - openstack-infra/zuul + + - project: + name: 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 }}/{{ project }}.pub`` + +:: + GET http://zuul.openstack.org/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 +====== + +* Zuul v3 is in production for OpenStack (in OpenStack VMs) +* Zuul v3 also runing at BMW (in OpenShift) and Godaddy (in kuberenetes) + and Huawei's OpenLab. +* Software Factory updated to v3 + https://softwarefactory-project.io/sf/welcome.html +* will tag and release v3.0 once we're satisfied it's good for other people + (within the next few weeks) + +What's Next? +============ + +* shared job doc generation +* node providers + * kuberenetes + * OCI/docker + * Mac Stadium (for our Ansible friends) + * ec2 +* native container/kubernetes job execution + +Important Links +=============== + +* https://zuul-ci.org/ +* https://git.openstack.org/cgit/openstack-infra/zuul +* https://docs.openstack.org/infra/zuul +* https://docs.openstack.org/infra/manual/zuulv3.html +* https://docs.openstack.org/infra/zuul-jobs/ +* 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 diff --git a/src/infra/start.sh b/src/infra/start.sh new file mode 100755 index 0000000..9eaf8b6 --- /dev/null +++ b/src/infra/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 & -- cgit v1.2.3