{"action":"created","comment":{"url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/comments/77819407","id":77819407,"diff_hunk":"@@ -57,36 +57,85 @@ function libvirt_net_start()\n         ip link set mtu 9000 dev $dev\n     done\n \n+    boot_mkcloud=/etc/init.d/boot.mkcloud\n+    boot_mkcloud_d=\"$boot_mkcloud.d\"\n+    boot_mkcloud_d_cloud=\"$boot_mkcloud_d/$cloud\"\n+\n     if [ -z \"$NOSETUPPORTFORWARDING\" ] ; then\n+        # FIXME: hardcoded assumptions about admin net host range\n         nodehostips=$(seq -s ' ' 81 $((80 + $nodenumber)))","path":"scripts/lib/mkcloud-libvirt.sh","position":10,"original_position":10,"commit_id":"7335aacc07f6aa6fcbd0dcdc7c52d3c741f1704a","original_commit_id":"7335aacc07f6aa6fcbd0dcdc7c52d3c741f1704a","user":{"login":"dguitarbite","id":2204767,"avatar_url":"https://avatars.githubusercontent.com/u/2204767?v=3","gravatar_id":"","url":"https://api.github.com/users/dguitarbite","html_url":"https://github.com/dguitarbite","followers_url":"https://api.github.com/users/dguitarbite/followers","following_url":"https://api.github.com/users/dguitarbite/following{/other_user}","gists_url":"https://api.github.com/users/dguitarbite/gists{/gist_id}","starred_url":"https://api.github.com/users/dguitarbite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dguitarbite/subscriptions","organizations_url":"https://api.github.com/users/dguitarbite/orgs","repos_url":"https://api.github.com/users/dguitarbite/repos","events_url":"https://api.github.com/users/dguitarbite/events{/privacy}","received_events_url":"https://api.github.com/users/dguitarbite/received_events","type":"User","site_admin":false},"body":"I was in a hurry while reviewing this. What I understand from this ``nodehostips=$(seq -s ' ' 81 $((80 + $nodenumber)))`` is that the nodehostips is actually all the nodes in the cluster. We just need to forward the ports for `Crowbar Admin`, `Controller` and `Pacemaker HAWK Nodes` related endpoints. But it gets complicated as we would then have to talk to Crowbar, but if we have a simpler way to do the same it would be great to consider this.","created_at":"2016-09-07T13:18:45Z","updated_at":"2016-09-07T13:18:45Z","html_url":"https://github.com/SUSE-Cloud/automation/pull/1203#discussion_r77819407","pull_request_url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203","_links":{"self":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/comments/77819407"},"html":{"href":"https://github.com/SUSE-Cloud/automation/pull/1203#discussion_r77819407"},"pull_request":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203"}}},"pull_request":{"url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203","id":83814107,"html_url":"https://github.com/SUSE-Cloud/automation/pull/1203","diff_url":"https://github.com/SUSE-Cloud/automation/pull/1203.diff","patch_url":"https://github.com/SUSE-Cloud/automation/pull/1203.patch","issue_url":"https://api.github.com/repos/SUSE-Cloud/automation/issues/1203","number":1203,"state":"open","locked":false,"title":"enhance setup of DNAT port-forwarding","user":{"login":"aspiers","id":100738,"avatar_url":"https://avatars.githubusercontent.com/u/100738?v=3","gravatar_id":"","url":"https://api.github.com/users/aspiers","html_url":"https://github.com/aspiers","followers_url":"https://api.github.com/users/aspiers/followers","following_url":"https://api.github.com/users/aspiers/following{/other_user}","gists_url":"https://api.github.com/users/aspiers/gists{/gist_id}","starred_url":"https://api.github.com/users/aspiers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspiers/subscriptions","organizations_url":"https://api.github.com/users/aspiers/orgs","repos_url":"https://api.github.com/users/aspiers/repos","events_url":"https://api.github.com/users/aspiers/events{/privacy}","received_events_url":"https://api.github.com/users/aspiers/received_events","type":"User","site_admin":false},"body":"Several cleanups and enhancements to the DNAT port forwarding which allows access to cloud VMs on hosts like `blacher.arch.suse.de` which run the clouds on private networks which aren't routable from within the corporate network. The main highlights are:\r\n\r\n- Supports separate non-conflicting DNAT ports for each cloud\r\n- Each cloud's `iptables` setup is now written to `/etc/init.d/boot.mkcloud.d/$cloudname`\r\n- `/etc/init.d/boot.mkcloud` is still supported for backwards-compatibility and for `mkch*.cloud.suse.de` hosts\r\n- Guards against duplicate rule insertion\r\n- Doesn't flush the PREROUTING chain every time\r\n- Adds forwarding for Hawk and `mosh`\r\n- Doesn't forward admin server ports on non-admin nodes, and vice-versa.\r\n\r\nSupersedes #1193.","created_at":"2016-09-02T14:47:49Z","updated_at":"2016-09-07T13:18:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a2f1fe8f0aa5d84568466da298db0d2f8796f536","assignee":{"login":"bmwiedemann","id":637990,"avatar_url":"https://avatars.githubusercontent.com/u/637990?v=3","gravatar_id":"","url":"https://api.github.com/users/bmwiedemann","html_url":"https://github.com/bmwiedemann","followers_url":"https://api.github.com/users/bmwiedemann/followers","following_url":"https://api.github.com/users/bmwiedemann/following{/other_user}","gists_url":"https://api.github.com/users/bmwiedemann/gists{/gist_id}","starred_url":"https://api.github.com/users/bmwiedemann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmwiedemann/subscriptions","organizations_url":"https://api.github.com/users/bmwiedemann/orgs","repos_url":"https://api.github.com/users/bmwiedemann/repos","events_url":"https://api.github.com/users/bmwiedemann/events{/privacy}","received_events_url":"https://api.github.com/users/bmwiedemann/received_events","type":"User","site_admin":false},"assignees":[{"login":"bmwiedemann","id":637990,"avatar_url":"https://avatars.githubusercontent.com/u/637990?v=3","gravatar_id":"","url":"https://api.github.com/users/bmwiedemann","html_url":"https://github.com/bmwiedemann","followers_url":"https://api.github.com/users/bmwiedemann/followers","following_url":"https://api.github.com/users/bmwiedemann/following{/other_user}","gists_url":"https://api.github.com/users/bmwiedemann/gists{/gist_id}","starred_url":"https://api.github.com/users/bmwiedemann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmwiedemann/subscriptions","organizations_url":"https://api.github.com/users/bmwiedemann/orgs","repos_url":"https://api.github.com/users/bmwiedemann/repos","events_url":"https://api.github.com/users/bmwiedemann/events{/privacy}","received_events_url":"https://api.github.com/users/bmwiedemann/received_events","type":"User","site_admin":false},{"login":"dguitarbite","id":2204767,"avatar_url":"https://avatars.githubusercontent.com/u/2204767?v=3","gravatar_id":"","url":"https://api.github.com/users/dguitarbite","html_url":"https://github.com/dguitarbite","followers_url":"https://api.github.com/users/dguitarbite/followers","following_url":"https://api.github.com/users/dguitarbite/following{/other_user}","gists_url":"https://api.github.com/users/dguitarbite/gists{/gist_id}","starred_url":"https://api.github.com/users/dguitarbite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dguitarbite/subscriptions","organizations_url":"https://api.github.com/users/dguitarbite/orgs","repos_url":"https://api.github.com/users/dguitarbite/repos","events_url":"https://api.github.com/users/dguitarbite/events{/privacy}","received_events_url":"https://api.github.com/users/dguitarbite/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203/commits","review_comments_url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203/comments","review_comment_url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SUSE-Cloud/automation/issues/1203/comments","statuses_url":"https://api.github.com/repos/SUSE-Cloud/automation/statuses/7335aacc07f6aa6fcbd0dcdc7c52d3c741f1704a","head":{"label":"aspiers:firewall","ref":"firewall","sha":"7335aacc07f6aa6fcbd0dcdc7c52d3c741f1704a","user":{"login":"aspiers","id":100738,"avatar_url":"https://avatars.githubusercontent.com/u/100738?v=3","gravatar_id":"","url":"https://api.github.com/users/aspiers","html_url":"https://github.com/aspiers","followers_url":"https://api.github.com/users/aspiers/followers","following_url":"https://api.github.com/users/aspiers/following{/other_user}","gists_url":"https://api.github.com/users/aspiers/gists{/gist_id}","starred_url":"https://api.github.com/users/aspiers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspiers/subscriptions","organizations_url":"https://api.github.com/users/aspiers/orgs","repos_url":"https://api.github.com/users/aspiers/repos","events_url":"https://api.github.com/users/aspiers/events{/privacy}","received_events_url":"https://api.github.com/users/aspiers/received_events","type":"User","site_admin":false},"repo":{"id":10438679,"name":"automation","full_name":"aspiers/automation","owner":{"login":"aspiers","id":100738,"avatar_url":"https://avatars.githubusercontent.com/u/100738?v=3","gravatar_id":"","url":"https://api.github.com/users/aspiers","html_url":"https://github.com/aspiers","followers_url":"https://api.github.com/users/aspiers/followers","following_url":"https://api.github.com/users/aspiers/following{/other_user}","gists_url":"https://api.github.com/users/aspiers/gists{/gist_id}","starred_url":"https://api.github.com/users/aspiers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspiers/subscriptions","organizations_url":"https://api.github.com/users/aspiers/orgs","repos_url":"https://api.github.com/users/aspiers/repos","events_url":"https://api.github.com/users/aspiers/events{/privacy}","received_events_url":"https://api.github.com/users/aspiers/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aspiers/automation","description":"Automation scripts for development, testing, and CI","fork":true,"url":"https://api.github.com/repos/aspiers/automation","forks_url":"https://api.github.com/repos/aspiers/automation/forks","keys_url":"https://api.github.com/repos/aspiers/automation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspiers/automation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspiers/automation/teams","hooks_url":"https://api.github.com/repos/aspiers/automation/hooks","issue_events_url":"https://api.github.com/repos/aspiers/automation/issues/events{/number}","events_url":"https://api.github.com/repos/aspiers/automation/events","assignees_url":"https://api.github.com/repos/aspiers/automation/assignees{/user}","branches_url":"https://api.github.com/repos/aspiers/automation/branches{/branch}","tags_url":"https://api.github.com/repos/aspiers/automation/tags","blobs_url":"https://api.github.com/repos/aspiers/automation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspiers/automation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspiers/automation/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspiers/automation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspiers/automation/statuses/{sha}","languages_url":"https://api.github.com/repos/aspiers/automation/languages","stargazers_url":"https://api.github.com/repos/aspiers/automation/stargazers","contributors_url":"https://api.github.com/repos/aspiers/automation/contributors","subscribers_url":"https://api.github.com/repos/aspiers/automation/subscribers","subscription_url":"https://api.github.com/repos/aspiers/automation/subscription","commits_url":"https://api.github.com/repos/aspiers/automation/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspiers/automation/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspiers/automation/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspiers/automation/issues/comments{/number}","contents_url":"https://api.github.com/repos/aspiers/automation/contents/{+path}","compare_url":"https://api.github.com/repos/aspiers/automation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspiers/automation/merges","archive_url":"https://api.github.com/repos/aspiers/automation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspiers/automation/downloads","issues_url":"https://api.github.com/repos/aspiers/automation/issues{/number}","pulls_url":"https://api.github.com/repos/aspiers/automation/pulls{/number}","milestones_url":"https://api.github.com/repos/aspiers/automation/milestones{/number}","notifications_url":"https://api.github.com/repos/aspiers/automation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspiers/automation/labels{/name}","releases_url":"https://api.github.com/repos/aspiers/automation/releases{/id}","deployments_url":"https://api.github.com/repos/aspiers/automation/deployments","created_at":"2013-06-02T16:18:13Z","updated_at":"2015-03-25T15:36:09Z","pushed_at":"2016-09-07T12:22:56Z","git_url":"git://github.com/aspiers/automation.git","ssh_url":"git@github.com:aspiers/automation.git","clone_url":"https://github.com/aspiers/automation.git","svn_url":"https://github.com/aspiers/automation","homepage":"","size":5704,"stargazers_count":0,"watchers_count":0,"language":"Shell","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SUSE-Cloud:master","ref":"master","sha":"30523dc78c2cfab7c7f8b26ccec6a3d8b0b9bc41","user":{"login":"SUSE-Cloud","id":1553906,"avatar_url":"https://avatars.githubusercontent.com/u/1553906?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE-Cloud","html_url":"https://github.com/SUSE-Cloud","followers_url":"https://api.github.com/users/SUSE-Cloud/followers","following_url":"https://api.github.com/users/SUSE-Cloud/following{/other_user}","gists_url":"https://api.github.com/users/SUSE-Cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE-Cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE-Cloud/subscriptions","organizations_url":"https://api.github.com/users/SUSE-Cloud/orgs","repos_url":"https://api.github.com/users/SUSE-Cloud/repos","events_url":"https://api.github.com/users/SUSE-Cloud/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE-Cloud/received_events","type":"Organization","site_admin":false},"repo":{"id":6384356,"name":"automation","full_name":"SUSE-Cloud/automation","owner":{"login":"SUSE-Cloud","id":1553906,"avatar_url":"https://avatars.githubusercontent.com/u/1553906?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE-Cloud","html_url":"https://github.com/SUSE-Cloud","followers_url":"https://api.github.com/users/SUSE-Cloud/followers","following_url":"https://api.github.com/users/SUSE-Cloud/following{/other_user}","gists_url":"https://api.github.com/users/SUSE-Cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE-Cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE-Cloud/subscriptions","organizations_url":"https://api.github.com/users/SUSE-Cloud/orgs","repos_url":"https://api.github.com/users/SUSE-Cloud/repos","events_url":"https://api.github.com/users/SUSE-Cloud/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE-Cloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SUSE-Cloud/automation","description":"Automation scripts for development, testing, and CI","fork":false,"url":"https://api.github.com/repos/SUSE-Cloud/automation","forks_url":"https://api.github.com/repos/SUSE-Cloud/automation/forks","keys_url":"https://api.github.com/repos/SUSE-Cloud/automation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SUSE-Cloud/automation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SUSE-Cloud/automation/teams","hooks_url":"https://api.github.com/repos/SUSE-Cloud/automation/hooks","issue_events_url":"https://api.github.com/repos/SUSE-Cloud/automation/issues/events{/number}","events_url":"https://api.github.com/repos/SUSE-Cloud/automation/events","assignees_url":"https://api.github.com/repos/SUSE-Cloud/automation/assignees{/user}","branches_url":"https://api.github.com/repos/SUSE-Cloud/automation/branches{/branch}","tags_url":"https://api.github.com/repos/SUSE-Cloud/automation/tags","blobs_url":"https://api.github.com/repos/SUSE-Cloud/automation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SUSE-Cloud/automation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SUSE-Cloud/automation/git/refs{/sha}","trees_url":"https://api.github.com/repos/SUSE-Cloud/automation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SUSE-Cloud/automation/statuses/{sha}","languages_url":"https://api.github.com/repos/SUSE-Cloud/automation/languages","stargazers_url":"https://api.github.com/repos/SUSE-Cloud/automation/stargazers","contributors_url":"https://api.github.com/repos/SUSE-Cloud/automation/contributors","subscribers_url":"https://api.github.com/repos/SUSE-Cloud/automation/subscribers","subscription_url":"https://api.github.com/repos/SUSE-Cloud/automation/subscription","commits_url":"https://api.github.com/repos/SUSE-Cloud/automation/commits{/sha}","git_commits_url":"https://api.github.com/repos/SUSE-Cloud/automation/git/commits{/sha}","comments_url":"https://api.github.com/repos/SUSE-Cloud/automation/comments{/number}","issue_comment_url":"https://api.github.com/repos/SUSE-Cloud/automation/issues/comments{/number}","contents_url":"https://api.github.com/repos/SUSE-Cloud/automation/contents/{+path}","compare_url":"https://api.github.com/repos/SUSE-Cloud/automation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SUSE-Cloud/automation/merges","archive_url":"https://api.github.com/repos/SUSE-Cloud/automation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SUSE-Cloud/automation/downloads","issues_url":"https://api.github.com/repos/SUSE-Cloud/automation/issues{/number}","pulls_url":"https://api.github.com/repos/SUSE-Cloud/automation/pulls{/number}","milestones_url":"https://api.github.com/repos/SUSE-Cloud/automation/milestones{/number}","notifications_url":"https://api.github.com/repos/SUSE-Cloud/automation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SUSE-Cloud/automation/labels{/name}","releases_url":"https://api.github.com/repos/SUSE-Cloud/automation/releases{/id}","deployments_url":"https://api.github.com/repos/SUSE-Cloud/automation/deployments","created_at":"2012-10-25T08:45:31Z","updated_at":"2016-08-19T14:06:51Z","pushed_at":"2016-09-07T12:22:57Z","git_url":"git://github.com/SUSE-Cloud/automation.git","ssh_url":"git@github.com:SUSE-Cloud/automation.git","clone_url":"https://github.com/SUSE-Cloud/automation.git","svn_url":"https://github.com/SUSE-Cloud/automation","homepage":"","size":8498,"stargazers_count":19,"watchers_count":19,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":53,"mirror_url":null,"open_issues_count":38,"forks":53,"open_issues":38,"watchers":19,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203"},"html":{"href":"https://github.com/SUSE-Cloud/automation/pull/1203"},"issue":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/issues/1203"},"comments":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/issues/1203/comments"},"review_comments":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203/comments"},"review_comment":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/pulls/1203/commits"},"statuses":{"href":"https://api.github.com/repos/SUSE-Cloud/automation/statuses/7335aacc07f6aa6fcbd0dcdc7c52d3c741f1704a"}}}}
{"actor":{"display_login":"dguitarbite"}}