{"action":"created","comment":{"url":"https://api.github.com/repos/dcos/dcos-ui/pulls/comments/80014928","id":80014928,"diff_hunk":"@@ -0,0 +1,70 @@\n+import HostUtil from '../utils/HostUtil';\n+import Networking from '../constants/Networking';\n+\n+const serviceAddressKey = 'Service Address';\n+\n+function buildHostName(id, port) {\n+  let hostname = HostUtil.stringToHostname(id);\n+  return `${hostname}${Networking.L4LB_ADDRESS}:${port}`;\n+}\n+\n+function defaultCreateLink(contents) {\n+  return contents;\n+}\n+\n+function hasVIPLabel(portDefinition) {\n+  return portDefinition.labels &&\n+    Object.keys(portDefinition.labels).find(function (key) {\n+      return /^VIP_[0-9]+$/.test(key);\n+    });\n+}\n+\n+var ServiceConfigUtil = {\n+\n+  getCommandString(container) {\n+\n+    // Pre-pods approach\n+    if (container.cmd) {\n+      return container.cmd;\n+    }\n+\n+    // Pods approach\n+    // https://github.com/mesosphere/marathon/blob/feature/pods/docs/docs/rest-api/public/api/v2/types/podContainer.raml#L61\n+    if (container.exec && container.exec.command) {\n+      let {command} = container.exec;\n+      if (command.shell) {\n+        return command.shell;\n+      }\n+      if (command.argv) {\n+        return command.argv.join(' ');\n+      }\n+    }\n+\n+    return null;\n+  },\n+\n+  getPortDefinitionGroups(id, portDefinitions, createLink = defaultCreateLink) {\n+    return portDefinitions.map(function (portDefinition, index) {\n+      let hash = Object.assign({}, portDefinition);\n+      let headline = `Port Definition ${index + 1}`;\n+\n+      if (portDefinition.name) {\n+        headline += ` (${portDefinition.name})`;\n+      }\n+\n+      // Check if this port is load balanced\n+      if (hasVIPLabel(portDefinition)) {\n+        let link = buildHostName(id, portDefinition.port);","path":"src/js/utils/ServiceConfigUtil.js","position":57,"original_position":57,"commit_id":"f742c004324bd3effb88a4892d284b15cc9da123","original_commit_id":"f742c004324bd3effb88a4892d284b15cc9da123","user":{"login":"nLight","id":186223,"avatar_url":"https://avatars.githubusercontent.com/u/186223?v=3","gravatar_id":"","url":"https://api.github.com/users/nLight","html_url":"https://github.com/nLight","followers_url":"https://api.github.com/users/nLight/followers","following_url":"https://api.github.com/users/nLight/following{/other_user}","gists_url":"https://api.github.com/users/nLight/gists{/gist_id}","starred_url":"https://api.github.com/users/nLight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nLight/subscriptions","organizations_url":"https://api.github.com/users/nLight/orgs","repos_url":"https://api.github.com/users/nLight/repos","events_url":"https://api.github.com/users/nLight/events{/privacy}","received_events_url":"https://api.github.com/users/nLight/received_events","type":"User","site_admin":false},"body":"https://mesosphere.atlassian.net/browse/DCOS-9918","created_at":"2016-09-22T10:38:33Z","updated_at":"2016-09-22T10:38:33Z","html_url":"https://github.com/dcos/dcos-ui/pull/1117#discussion_r80014928","pull_request_url":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117","_links":{"self":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/comments/80014928"},"html":{"href":"https://github.com/dcos/dcos-ui/pull/1117#discussion_r80014928"},"pull_request":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117"}}},"pull_request":{"url":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117","id":86114793,"html_url":"https://github.com/dcos/dcos-ui/pull/1117","diff_url":"https://github.com/dcos/dcos-ui/pull/1117.diff","patch_url":"https://github.com/dcos/dcos-ui/pull/1117.patch","issue_url":"https://api.github.com/repos/dcos/dcos-ui/issues/1117","number":1117,"state":"open","locked":false,"title":"[Pods] Extract MarathonConfigUtil from ConfigurationView","user":{"login":"nLight","id":186223,"avatar_url":"https://avatars.githubusercontent.com/u/186223?v=3","gravatar_id":"","url":"https://api.github.com/users/nLight","html_url":"https://github.com/nLight","followers_url":"https://api.github.com/users/nLight/followers","following_url":"https://api.github.com/users/nLight/following{/other_user}","gists_url":"https://api.github.com/users/nLight/gists{/gist_id}","starred_url":"https://api.github.com/users/nLight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nLight/subscriptions","organizations_url":"https://api.github.com/users/nLight/orgs","repos_url":"https://api.github.com/users/nLight/repos","events_url":"https://api.github.com/users/nLight/events{/privacy}","received_events_url":"https://api.github.com/users/nLight/received_events","type":"User","site_admin":false},"body":"Extracting utility functions from ConfigurationView to MarathonConfigUtil. To slim down the component and improve code reusability. MarathonConfigUtil is going to be used in Pods configuration view as well. \r\n\r\nRefactoring has been done by @wavesoft had to split some commits in order to slice #1111 in smaller yet meaningful chunks.\r\n\r\nPart of the ticket: https://mesosphere.atlassian.net/browse/DCOS-9823","created_at":"2016-09-21T08:03:57Z","updated_at":"2016-09-22T10:38:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"18bb15e7853da3b8380dccc023eb794327c36072","assignee":{"login":"wavesoft","id":883486,"avatar_url":"https://avatars.githubusercontent.com/u/883486?v=3","gravatar_id":"","url":"https://api.github.com/users/wavesoft","html_url":"https://github.com/wavesoft","followers_url":"https://api.github.com/users/wavesoft/followers","following_url":"https://api.github.com/users/wavesoft/following{/other_user}","gists_url":"https://api.github.com/users/wavesoft/gists{/gist_id}","starred_url":"https://api.github.com/users/wavesoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wavesoft/subscriptions","organizations_url":"https://api.github.com/users/wavesoft/orgs","repos_url":"https://api.github.com/users/wavesoft/repos","events_url":"https://api.github.com/users/wavesoft/events{/privacy}","received_events_url":"https://api.github.com/users/wavesoft/received_events","type":"User","site_admin":false},"assignees":[{"login":"wavesoft","id":883486,"avatar_url":"https://avatars.githubusercontent.com/u/883486?v=3","gravatar_id":"","url":"https://api.github.com/users/wavesoft","html_url":"https://github.com/wavesoft","followers_url":"https://api.github.com/users/wavesoft/followers","following_url":"https://api.github.com/users/wavesoft/following{/other_user}","gists_url":"https://api.github.com/users/wavesoft/gists{/gist_id}","starred_url":"https://api.github.com/users/wavesoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wavesoft/subscriptions","organizations_url":"https://api.github.com/users/wavesoft/orgs","repos_url":"https://api.github.com/users/wavesoft/repos","events_url":"https://api.github.com/users/wavesoft/events{/privacy}","received_events_url":"https://api.github.com/users/wavesoft/received_events","type":"User","site_admin":false},{"login":"philipnrmn","id":2989362,"avatar_url":"https://avatars.githubusercontent.com/u/2989362?v=3","gravatar_id":"","url":"https://api.github.com/users/philipnrmn","html_url":"https://github.com/philipnrmn","followers_url":"https://api.github.com/users/philipnrmn/followers","following_url":"https://api.github.com/users/philipnrmn/following{/other_user}","gists_url":"https://api.github.com/users/philipnrmn/gists{/gist_id}","starred_url":"https://api.github.com/users/philipnrmn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philipnrmn/subscriptions","organizations_url":"https://api.github.com/users/philipnrmn/orgs","repos_url":"https://api.github.com/users/philipnrmn/repos","events_url":"https://api.github.com/users/philipnrmn/events{/privacy}","received_events_url":"https://api.github.com/users/philipnrmn/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117/commits","review_comments_url":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117/comments","review_comment_url":"https://api.github.com/repos/dcos/dcos-ui/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dcos/dcos-ui/issues/1117/comments","statuses_url":"https://api.github.com/repos/dcos/dcos-ui/statuses/f742c004324bd3effb88a4892d284b15cc9da123","head":{"label":"dcos:dr/refactor/marathon-config-util","ref":"dr/refactor/marathon-config-util","sha":"f742c004324bd3effb88a4892d284b15cc9da123","user":{"login":"dcos","id":17648048,"avatar_url":"https://avatars.githubusercontent.com/u/17648048?v=3","gravatar_id":"","url":"https://api.github.com/users/dcos","html_url":"https://github.com/dcos","followers_url":"https://api.github.com/users/dcos/followers","following_url":"https://api.github.com/users/dcos/following{/other_user}","gists_url":"https://api.github.com/users/dcos/gists{/gist_id}","starred_url":"https://api.github.com/users/dcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcos/subscriptions","organizations_url":"https://api.github.com/users/dcos/orgs","repos_url":"https://api.github.com/users/dcos/repos","events_url":"https://api.github.com/users/dcos/events{/privacy}","received_events_url":"https://api.github.com/users/dcos/received_events","type":"Organization","site_admin":false},"repo":{"id":56547504,"name":"dcos-ui","full_name":"dcos/dcos-ui","owner":{"login":"dcos","id":17648048,"avatar_url":"https://avatars.githubusercontent.com/u/17648048?v=3","gravatar_id":"","url":"https://api.github.com/users/dcos","html_url":"https://github.com/dcos","followers_url":"https://api.github.com/users/dcos/followers","following_url":"https://api.github.com/users/dcos/following{/other_user}","gists_url":"https://api.github.com/users/dcos/gists{/gist_id}","starred_url":"https://api.github.com/users/dcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcos/subscriptions","organizations_url":"https://api.github.com/users/dcos/orgs","repos_url":"https://api.github.com/users/dcos/repos","events_url":"https://api.github.com/users/dcos/events{/privacy}","received_events_url":"https://api.github.com/users/dcos/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dcos/dcos-ui","description":"The UI for The Datacenter Operating System","fork":false,"url":"https://api.github.com/repos/dcos/dcos-ui","forks_url":"https://api.github.com/repos/dcos/dcos-ui/forks","keys_url":"https://api.github.com/repos/dcos/dcos-ui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dcos/dcos-ui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dcos/dcos-ui/teams","hooks_url":"https://api.github.com/repos/dcos/dcos-ui/hooks","issue_events_url":"https://api.github.com/repos/dcos/dcos-ui/issues/events{/number}","events_url":"https://api.github.com/repos/dcos/dcos-ui/events","assignees_url":"https://api.github.com/repos/dcos/dcos-ui/assignees{/user}","branches_url":"https://api.github.com/repos/dcos/dcos-ui/branches{/branch}","tags_url":"https://api.github.com/repos/dcos/dcos-ui/tags","blobs_url":"https://api.github.com/repos/dcos/dcos-ui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dcos/dcos-ui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dcos/dcos-ui/git/refs{/sha}","trees_url":"https://api.github.com/repos/dcos/dcos-ui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dcos/dcos-ui/statuses/{sha}","languages_url":"https://api.github.com/repos/dcos/dcos-ui/languages","stargazers_url":"https://api.github.com/repos/dcos/dcos-ui/stargazers","contributors_url":"https://api.github.com/repos/dcos/dcos-ui/contributors","subscribers_url":"https://api.github.com/repos/dcos/dcos-ui/subscribers","subscription_url":"https://api.github.com/repos/dcos/dcos-ui/subscription","commits_url":"https://api.github.com/repos/dcos/dcos-ui/commits{/sha}","git_commits_url":"https://api.github.com/repos/dcos/dcos-ui/git/commits{/sha}","comments_url":"https://api.github.com/repos/dcos/dcos-ui/comments{/number}","issue_comment_url":"https://api.github.com/repos/dcos/dcos-ui/issues/comments{/number}","contents_url":"https://api.github.com/repos/dcos/dcos-ui/contents/{+path}","compare_url":"https://api.github.com/repos/dcos/dcos-ui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dcos/dcos-ui/merges","archive_url":"https://api.github.com/repos/dcos/dcos-ui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dcos/dcos-ui/downloads","issues_url":"https://api.github.com/repos/dcos/dcos-ui/issues{/number}","pulls_url":"https://api.github.com/repos/dcos/dcos-ui/pulls{/number}","milestones_url":"https://api.github.com/repos/dcos/dcos-ui/milestones{/number}","notifications_url":"https://api.github.com/repos/dcos/dcos-ui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dcos/dcos-ui/labels{/name}","releases_url":"https://api.github.com/repos/dcos/dcos-ui/releases{/id}","deployments_url":"https://api.github.com/repos/dcos/dcos-ui/deployments","created_at":"2016-04-18T22:48:06Z","updated_at":"2016-09-20T06:36:24Z","pushed_at":"2016-09-22T09:57:29Z","git_url":"git://github.com/dcos/dcos-ui.git","ssh_url":"git@github.com:dcos/dcos-ui.git","clone_url":"https://github.com/dcos/dcos-ui.git","svn_url":"https://github.com/dcos/dcos-ui","homepage":null,"size":21181,"stargazers_count":96,"watchers_count":96,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":20,"forks":25,"open_issues":20,"watchers":96,"default_branch":"master"}},"base":{"label":"dcos:master","ref":"master","sha":"e93858fbb0de783a83f53d1cbaabda920214a8d8","user":{"login":"dcos","id":17648048,"avatar_url":"https://avatars.githubusercontent.com/u/17648048?v=3","gravatar_id":"","url":"https://api.github.com/users/dcos","html_url":"https://github.com/dcos","followers_url":"https://api.github.com/users/dcos/followers","following_url":"https://api.github.com/users/dcos/following{/other_user}","gists_url":"https://api.github.com/users/dcos/gists{/gist_id}","starred_url":"https://api.github.com/users/dcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcos/subscriptions","organizations_url":"https://api.github.com/users/dcos/orgs","repos_url":"https://api.github.com/users/dcos/repos","events_url":"https://api.github.com/users/dcos/events{/privacy}","received_events_url":"https://api.github.com/users/dcos/received_events","type":"Organization","site_admin":false},"repo":{"id":56547504,"name":"dcos-ui","full_name":"dcos/dcos-ui","owner":{"login":"dcos","id":17648048,"avatar_url":"https://avatars.githubusercontent.com/u/17648048?v=3","gravatar_id":"","url":"https://api.github.com/users/dcos","html_url":"https://github.com/dcos","followers_url":"https://api.github.com/users/dcos/followers","following_url":"https://api.github.com/users/dcos/following{/other_user}","gists_url":"https://api.github.com/users/dcos/gists{/gist_id}","starred_url":"https://api.github.com/users/dcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcos/subscriptions","organizations_url":"https://api.github.com/users/dcos/orgs","repos_url":"https://api.github.com/users/dcos/repos","events_url":"https://api.github.com/users/dcos/events{/privacy}","received_events_url":"https://api.github.com/users/dcos/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dcos/dcos-ui","description":"The UI for The Datacenter Operating System","fork":false,"url":"https://api.github.com/repos/dcos/dcos-ui","forks_url":"https://api.github.com/repos/dcos/dcos-ui/forks","keys_url":"https://api.github.com/repos/dcos/dcos-ui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dcos/dcos-ui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dcos/dcos-ui/teams","hooks_url":"https://api.github.com/repos/dcos/dcos-ui/hooks","issue_events_url":"https://api.github.com/repos/dcos/dcos-ui/issues/events{/number}","events_url":"https://api.github.com/repos/dcos/dcos-ui/events","assignees_url":"https://api.github.com/repos/dcos/dcos-ui/assignees{/user}","branches_url":"https://api.github.com/repos/dcos/dcos-ui/branches{/branch}","tags_url":"https://api.github.com/repos/dcos/dcos-ui/tags","blobs_url":"https://api.github.com/repos/dcos/dcos-ui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dcos/dcos-ui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dcos/dcos-ui/git/refs{/sha}","trees_url":"https://api.github.com/repos/dcos/dcos-ui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dcos/dcos-ui/statuses/{sha}","languages_url":"https://api.github.com/repos/dcos/dcos-ui/languages","stargazers_url":"https://api.github.com/repos/dcos/dcos-ui/stargazers","contributors_url":"https://api.github.com/repos/dcos/dcos-ui/contributors","subscribers_url":"https://api.github.com/repos/dcos/dcos-ui/subscribers","subscription_url":"https://api.github.com/repos/dcos/dcos-ui/subscription","commits_url":"https://api.github.com/repos/dcos/dcos-ui/commits{/sha}","git_commits_url":"https://api.github.com/repos/dcos/dcos-ui/git/commits{/sha}","comments_url":"https://api.github.com/repos/dcos/dcos-ui/comments{/number}","issue_comment_url":"https://api.github.com/repos/dcos/dcos-ui/issues/comments{/number}","contents_url":"https://api.github.com/repos/dcos/dcos-ui/contents/{+path}","compare_url":"https://api.github.com/repos/dcos/dcos-ui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dcos/dcos-ui/merges","archive_url":"https://api.github.com/repos/dcos/dcos-ui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dcos/dcos-ui/downloads","issues_url":"https://api.github.com/repos/dcos/dcos-ui/issues{/number}","pulls_url":"https://api.github.com/repos/dcos/dcos-ui/pulls{/number}","milestones_url":"https://api.github.com/repos/dcos/dcos-ui/milestones{/number}","notifications_url":"https://api.github.com/repos/dcos/dcos-ui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dcos/dcos-ui/labels{/name}","releases_url":"https://api.github.com/repos/dcos/dcos-ui/releases{/id}","deployments_url":"https://api.github.com/repos/dcos/dcos-ui/deployments","created_at":"2016-04-18T22:48:06Z","updated_at":"2016-09-20T06:36:24Z","pushed_at":"2016-09-22T09:57:29Z","git_url":"git://github.com/dcos/dcos-ui.git","ssh_url":"git@github.com:dcos/dcos-ui.git","clone_url":"https://github.com/dcos/dcos-ui.git","svn_url":"https://github.com/dcos/dcos-ui","homepage":null,"size":21181,"stargazers_count":96,"watchers_count":96,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":20,"forks":25,"open_issues":20,"watchers":96,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117"},"html":{"href":"https://github.com/dcos/dcos-ui/pull/1117"},"issue":{"href":"https://api.github.com/repos/dcos/dcos-ui/issues/1117"},"comments":{"href":"https://api.github.com/repos/dcos/dcos-ui/issues/1117/comments"},"review_comments":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117/comments"},"review_comment":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dcos/dcos-ui/pulls/1117/commits"},"statuses":{"href":"https://api.github.com/repos/dcos/dcos-ui/statuses/f742c004324bd3effb88a4892d284b15cc9da123"}}}}
{"actor":{"display_login":"nLight"}}