)]}'
{"labs/osbash/config/kvm-net-labs-api.xml":[{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"9e114c507aefafdaa53135a1e45ecd0f890d42db","unresolved":false,"context_lines":[{"line_number":2,"context_line":"  \u003cname\u003elabs-api\u003c/name\u003e"},{"line_number":3,"context_line":"  \u003cforward mode\u003d\u0027nat\u0027\u003e"},{"line_number":4,"context_line":"    \u003cnat\u003e"},{"line_number":5,"context_line":"      \u003cport start\u003d\u00271024\u0027 end\u003d\u002765535\u0027/\u003e"},{"line_number":6,"context_line":"    \u003c/nat\u003e"},{"line_number":7,"context_line":"  \u003c/forward\u003e"},{"line_number":8,"context_line":"  \u003cip address\u003d\u0027203.0.113.1\u0027 netmask\u003d\u0027255.255.255.0\u0027\u003e"}],"source_content_type":"application/xml","patch_set":12,"id":"9a8ffd7b_7d87ecb4","line":5,"updated":"2015-11-30 12:29:14.000000000","message":"Is there a specific reason for keeping the \u003cnat\u003e tags and \u003cport\u003e range here? I believe that we could get these things either ways!","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":2,"context_line":"  \u003cname\u003elabs-api\u003c/name\u003e"},{"line_number":3,"context_line":"  \u003cforward mode\u003d\u0027nat\u0027\u003e"},{"line_number":4,"context_line":"    \u003cnat\u003e"},{"line_number":5,"context_line":"      \u003cport start\u003d\u00271024\u0027 end\u003d\u002765535\u0027/\u003e"},{"line_number":6,"context_line":"    \u003c/nat\u003e"},{"line_number":7,"context_line":"  \u003c/forward\u003e"},{"line_number":8,"context_line":"  \u003cip address\u003d\u0027203.0.113.1\u0027 netmask\u003d\u0027255.255.255.0\u0027\u003e"}],"source_content_type":"application/xml","patch_set":12,"id":"9a8ffd7b_ea50d860","line":5,"in_reply_to":"9a8ffd7b_7d87ecb4","updated":"2015-11-30 20:04:38.000000000","message":"Done","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"9e114c507aefafdaa53135a1e45ecd0f890d42db","unresolved":false,"context_lines":[{"line_number":5,"context_line":"      \u003cport start\u003d\u00271024\u0027 end\u003d\u002765535\u0027/\u003e"},{"line_number":6,"context_line":"    \u003c/nat\u003e"},{"line_number":7,"context_line":"  \u003c/forward\u003e"},{"line_number":8,"context_line":"  \u003cip address\u003d\u0027203.0.113.1\u0027 netmask\u003d\u0027255.255.255.0\u0027\u003e"},{"line_number":9,"context_line":"  \u003c/ip\u003e"},{"line_number":10,"context_line":"\u003c/network\u003e"}],"source_content_type":"application/xml","patch_set":12,"id":"9a8ffd7b_bde8f4b3","line":8,"updated":"2015-11-30 12:29:14.000000000","message":"Could we grab the network addresses and subnets from the config files instead of hard coding this here?","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"4b95c71b6e921901b6dea0ca0f563f511b5de53b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"      \u003cport start\u003d\u00271024\u0027 end\u003d\u002765535\u0027/\u003e"},{"line_number":6,"context_line":"    \u003c/nat\u003e"},{"line_number":7,"context_line":"  \u003c/forward\u003e"},{"line_number":8,"context_line":"  \u003cip address\u003d\u0027203.0.113.1\u0027 netmask\u003d\u0027255.255.255.0\u0027\u003e"},{"line_number":9,"context_line":"  \u003c/ip\u003e"},{"line_number":10,"context_line":"\u003c/network\u003e"}],"source_content_type":"application/xml","patch_set":12,"id":"9a8ffd7b_7ffd4d3a","line":8,"in_reply_to":"9a8ffd7b_0ad0bcc8","updated":"2015-12-01 17:02:20.000000000","message":"Done. However, now all networks are NATted. This may need some work.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":5,"context_line":"      \u003cport start\u003d\u00271024\u0027 end\u003d\u002765535\u0027/\u003e"},{"line_number":6,"context_line":"    \u003c/nat\u003e"},{"line_number":7,"context_line":"  \u003c/forward\u003e"},{"line_number":8,"context_line":"  \u003cip address\u003d\u0027203.0.113.1\u0027 netmask\u003d\u0027255.255.255.0\u0027\u003e"},{"line_number":9,"context_line":"  \u003c/ip\u003e"},{"line_number":10,"context_line":"\u003c/network\u003e"}],"source_content_type":"application/xml","patch_set":12,"id":"9a8ffd7b_0ad0bcc8","line":8,"in_reply_to":"9a8ffd7b_bde8f4b3","updated":"2015-11-30 20:04:38.000000000","message":"I need to code it up.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"}],"labs/osbash/lib/osbash/functions-host.sh":[{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"function vm_scp_to_vm {"},{"line_number":70,"context_line":"    local ssh_port\u003d$1"},{"line_number":71,"context_line":"    shift"},{"line_number":72,"context_line":"    local ssh_ip\u003d${SSH_IP:\u003dlocalhost}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    check_osbash_private_key"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_f3878d5e","line":72,"updated":"2015-11-30 14:54:25.000000000","message":"Any reason for preferring \u0027localhost\u0027 over \u0027127.0.0.1\u0027? I have seen some hosts lacking the entry or confusing the same (although safe to assume this as an exception).","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":69,"context_line":"function vm_scp_to_vm {"},{"line_number":70,"context_line":"    local ssh_port\u003d$1"},{"line_number":71,"context_line":"    shift"},{"line_number":72,"context_line":"    local ssh_ip\u003d${SSH_IP:\u003dlocalhost}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    check_osbash_private_key"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_ead778bd","line":72,"in_reply_to":"9a8ffd7b_f3878d5e","updated":"2015-11-30 20:04:38.000000000","message":"Done","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"}],"labs/osbash/lib/osbash/kvm-functions.sh":[{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"function virsh_start_network {"},{"line_number":148,"context_line":"    net\u003d$1"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    echo \u003e\u00262 \"Defining and starting network $net.\""},{"line_number":151,"context_line":"    $VIRSH net-define \"$CONFIG_DIR/kvm-net-$net.xml\""},{"line_number":152,"context_line":"    $VIRSH net-start \"$net\""},{"line_number":153,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_7585c0ab","line":150,"updated":"2015-11-30 14:54:25.000000000","message":"Shall we check if the network is already existing?","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":147,"context_line":"function virsh_start_network {"},{"line_number":148,"context_line":"    net\u003d$1"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    echo \u003e\u00262 \"Defining and starting network $net.\""},{"line_number":151,"context_line":"    $VIRSH net-define \"$CONFIG_DIR/kvm-net-$net.xml\""},{"line_number":152,"context_line":"    $VIRSH net-start \"$net\""},{"line_number":153,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_eafe9837","line":150,"in_reply_to":"9a8ffd7b_7585c0ab","updated":"2015-11-30 20:04:38.000000000","message":"Done","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    echo labs-\"${net_name%%_NET}\" | tr \"[:upper:]\" \"[:lower:]\""},{"line_number":178,"context_line":"}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"function create_network {"},{"line_number":181,"context_line":"    local net_name\u003d$1"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    net\u003d$(net_name_to_kvm_net \"$net_name\")"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_78c0557d","line":180,"updated":"2015-11-30 14:54:25.000000000","message":"Again, it may be a good idea to check if the network is pre-existing or defined.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    echo labs-\"${net_name%%_NET}\" | tr \"[:upper:]\" \"[:lower:]\""},{"line_number":178,"context_line":"}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"function create_network {"},{"line_number":181,"context_line":"    local net_name\u003d$1"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    net\u003d$(net_name_to_kvm_net \"$net_name\")"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_ea8538ad","line":180,"in_reply_to":"9a8ffd7b_78c0557d","updated":"2015-11-30 20:04:38.000000000","message":"No need. The called functions take care of it.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    disk_exists \"$(get_base_disk_name)\""},{"line_number":204,"context_line":"}"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"function disk_create {"},{"line_number":207,"context_line":"    local disk\u003d$1"},{"line_number":208,"context_line":"    # Size in MB"},{"line_number":209,"context_line":"    local size\u003d$2"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_38ff2dac","line":206,"updated":"2015-11-30 14:54:25.000000000","message":"Shall we check if the \"disk_exists\" before hand?","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    disk_exists \"$(get_base_disk_name)\""},{"line_number":204,"context_line":"}"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"function disk_create {"},{"line_number":207,"context_line":"    local disk\u003d$1"},{"line_number":208,"context_line":"    # Size in MB"},{"line_number":209,"context_line":"    local size\u003d$2"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_ed3d52bc","line":206,"in_reply_to":"9a8ffd7b_38ff2dac","updated":"2015-11-30 20:04:38.000000000","message":"Looking into it.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"4b95c71b6e921901b6dea0ca0f563f511b5de53b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    disk_exists \"$(get_base_disk_name)\""},{"line_number":204,"context_line":"}"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"function disk_create {"},{"line_number":207,"context_line":"    local disk\u003d$1"},{"line_number":208,"context_line":"    # Size in MB"},{"line_number":209,"context_line":"    local size\u003d$2"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_df49d98f","line":206,"in_reply_to":"9a8ffd7b_ed3d52bc","updated":"2015-12-01 17:02:20.000000000","message":"Done","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    $VIRSH vol-create-as \"$KVM_VOL_POOL\" \"$disk\" \"${size}M\""},{"line_number":212,"context_line":"}"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"function disk_delete {"},{"line_number":215,"context_line":"    local disk\u003d$1"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    $VIRSH vol-delete --pool \"$KVM_VOL_POOL\" \"$disk\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_78e37506","line":214,"updated":"2015-11-30 14:54:25.000000000","message":"Same here, may be check if the disk exists.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    $VIRSH vol-create-as \"$KVM_VOL_POOL\" \"$disk\" \"${size}M\""},{"line_number":212,"context_line":"}"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"function disk_delete {"},{"line_number":215,"context_line":"    local disk\u003d$1"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    $VIRSH vol-delete --pool \"$KVM_VOL_POOL\" \"$disk\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_ad474a4a","line":214,"in_reply_to":"9a8ffd7b_78e37506","updated":"2015-11-30 20:04:38.000000000","message":"Looking into it.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"4b95c71b6e921901b6dea0ca0f563f511b5de53b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    $VIRSH vol-create-as \"$KVM_VOL_POOL\" \"$disk\" \"${size}M\""},{"line_number":212,"context_line":"}"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"function disk_delete {"},{"line_number":215,"context_line":"    local disk\u003d$1"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    $VIRSH vol-delete --pool \"$KVM_VOL_POOL\" \"$disk\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_62aff6e3","line":214,"in_reply_to":"9a8ffd7b_ad474a4a","updated":"2015-12-01 17:02:20.000000000","message":"Done. That said, these checks are prone to race conditions. The state may change between check and action. That is why the typical approach in Python, for example, is to try the action first and then handle exceptions if they occur.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"}],"labs/osbash/lib/osbash/kvm-install_base.sh":[{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# This bash library contains the main function that creates the base disk."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"function vm_install_base {"},{"line_number":4,"context_line":"    local base_disk_name\u003d$(get_base_disk_name)"},{"line_number":5,"context_line":"    local vm_name\u003dbase"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_1880298b","line":3,"updated":"2015-11-30 14:54:25.000000000","message":"Could we give a small comment describing the workflow here?","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# This bash library contains the main function that creates the base disk."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"function vm_install_base {"},{"line_number":4,"context_line":"    local base_disk_name\u003d$(get_base_disk_name)"},{"line_number":5,"context_line":"    local vm_name\u003dbase"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_2da91ae0","line":3,"in_reply_to":"9a8ffd7b_1880298b","updated":"2015-11-30 20:04:38.000000000","message":"I\u0027ll try.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"f311a445834acbed485d20e6e7f3dc60fdc8f75a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    # Boot VM into distribution installer"},{"line_number":37,"context_line":"    $VIRT_INSTALL \\"},{"line_number":38,"context_line":"        --disk \"vol\u003d$KVM_VOL_POOL/$base_disk_name,cache\u003dnone\" \\"},{"line_number":39,"context_line":"        --extra-args \"locale\u003den_US.UTF-8 console-keymaps-at/keymap\u003dus console-setup/ask_detect\u003dfalse console-setup/layoutcode\u003dus keyboard-configuration/layout\u003dUSA keyboard-configuration/variant\u003dUS netcfg/get_hostname\u003dosbash netcfg/get_domainname\u003dlocal mirror/country\u003dCH mirror/http/directory\u003d/ubuntu mirror/http/mirror\u003dch.archive.ubuntu.com mirror/protocol\u003dhttp mirror/http/proxy\u003d preseed/url\u003d${_PS_ssh}\" \\"},{"line_number":40,"context_line":"        --location \"$DISTRO_URL\" \\"},{"line_number":41,"context_line":"        --name $vm_name \\"},{"line_number":42,"context_line":"        --os-type linux \\"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_89accd36","line":39,"updated":"2015-11-30 14:54:25.000000000","message":"Does it make more sense to take the extra args from a args flie? kvm_args.config or something similar?? So its easier to update.","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"},{"author":{"_account_id":11109,"name":"Roger Luethi","email":"rl@patchworkscience.org","username":"rluethi"},"change_message_id":"7d2beef3e18447ddc6a0be246fa61e7820ec3c67","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    # Boot VM into distribution installer"},{"line_number":37,"context_line":"    $VIRT_INSTALL \\"},{"line_number":38,"context_line":"        --disk \"vol\u003d$KVM_VOL_POOL/$base_disk_name,cache\u003dnone\" \\"},{"line_number":39,"context_line":"        --extra-args \"locale\u003den_US.UTF-8 console-keymaps-at/keymap\u003dus console-setup/ask_detect\u003dfalse console-setup/layoutcode\u003dus keyboard-configuration/layout\u003dUSA keyboard-configuration/variant\u003dUS netcfg/get_hostname\u003dosbash netcfg/get_domainname\u003dlocal mirror/country\u003dCH mirror/http/directory\u003d/ubuntu mirror/http/mirror\u003dch.archive.ubuntu.com mirror/protocol\u003dhttp mirror/http/proxy\u003d preseed/url\u003d${_PS_ssh}\" \\"},{"line_number":40,"context_line":"        --location \"$DISTRO_URL\" \\"},{"line_number":41,"context_line":"        --name $vm_name \\"},{"line_number":42,"context_line":"        --os-type linux \\"}],"source_content_type":"text/x-sh","patch_set":12,"id":"9a8ffd7b_8db8462c","line":39,"in_reply_to":"9a8ffd7b_89accd36","updated":"2015-11-30 20:04:38.000000000","message":"Done","commit_id":"0ee2b62d4a4c0ca77dc584042a7b688f441061f4"}]}
