{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/57774745","id":57774745,"diff_hunk":"@@ -68,85 +61,121 @@ call-caching {\n   lookup-docker-hash = false\n }\n \n-backend {\n-  // Either \"jes\", \"local\", or \"sge\" (case insensitive)\n-  defaultBackend = \"local\"\n-  backendsAllowed = [ \"local\" ]\n-\n-  // If backend is JES, must supply a 'jes' stanza:\n-  jes {\n-    // project = \"\"\n-    // baseExecutionBucket = \"\"\n-    // endpointUrl = \"\"\n-\n-    // Polling for completion backs-off gradually for slower-running jobs.\n-    // This is the maximum polling interval (in seconds):\n-    // maximumPollingInterval = 600\n-  }\n-\n-  // For any backend that assumes a local filesystem (local, sge)\n-  shared-filesystem {\n-    // Root directory where Cromwell writes job results to.  This directory must be\n-    // visible and writeable to the Cromwell process as well as the jobs that Cromwell\n-    // launches\n-    root: \"cromwell-executions\"\n-\n-    // Cromwell makes a link to your input files within <root>/<workflow UUID>/workflow-inputs\n-    // The following are strategies used to make those links.  They are ordered.  If one fails\n-    // The next one is tried:\n-    //\n-    // hard-link: attempt to create a hard-link to the file\n-    // copy: copy the file\n-    // soft-link: create a symbolic link to the file\n-    //\n-    // NOTE: soft-link will be skipped for Docker jobs\n-    localization: [\n-      \"hard-link\", \"soft-link\", \"copy\"\n-    ]\n-  }\n-\n+server {\n   // If 'true', a SIGINT will trigger Cromwell to attempt to abort all currently running jobs before exiting\n   abortJobsOnTerminate = false\n }\n \n-// If authenticating with Google (e.g. if backend is 'JES') you must supply a top level stanza 'google':\n-// This defines how all requests to JES/GCS performed by Cromwell will be authenticated.\n-google {\n-  applicationName = \"\"\n-\n-  // cromwellAuthenticationScheme can take the values \"service_account\",\n-  // \"user_account\", and \"application_default\". The first two are described\n-  // in the stanzas below.\n-  // Use \"application_default\" to use the default service account credentials.\n-  // This is useful if you are running on a GCE VM and if you don't need\n-  // user level access. See https://developers.google.com/identity/protocols/application-default-credentials\n-  // for more info. No further information is needed.\n-  cromwellAuthenticationScheme = \"application_default\"\n-\n-  // If cromwellAuthenticationScheme is \"service_account\"\n-  serviceAuth {\n-    // pemFile = \"\"\n-    // serviceAccountId = \"\"\n-  }\n-\n-  // If cromwellAuthenticationScheme is \"user_account\"\n-  userAuth {\n-    // user = \"\"\n-    // secretsFile = \"\"\n-    // dataStoreDir = \"\"\n-  }\n-\n-  // [Optional]\n-  // Can be defined to provide an alternative way for Cromwell to perform some runtime interactions with GCS.\n-  // For instance data localization and delocalization in GoogleCloudStorage will be done on behalf of another entity (typically a user).\n-  // This allows cromwell to localize data that wouldn't be accessible using whatever \"cromwellAuthenticationScheme\" has been defined.\n-  // The currently only available scheme is refresh, which requires a refresh token to be passed upon every workflow submission (see \"workflow options\" in cromwell documentation).\n-  // In that scheme, a client_id and client_secrets must be provided. They must be the ones that have been used to generate the above-mentioned refresh token.\n-  // userAuthenticationScheme = \"refresh\"\n-  // refreshTokenAuth = {\n-  //   client_id = \"\"\n-  //   client_secret = \"\"\n-  // }\n+backend {\n+  default = \"Local\"\n+  providers = [\n+    {\n+      name = \"Local\"\n+      class = \"cromwell.engine.backend.local.LocalBackend\"\n+      config {\n+        // Root directory where Cromwell writes job results.  This directory must be\n+        // visible and writeable by the Cromwell process as well as the jobs that Cromwell\n+        // launches.\n+        root: \"cromwell-executions\"\n+\n+        // Cromwell makes a link to your input files within <root>/<workflow UUID>/workflow-inputs\n+        // The following are strategies used to make those links.  They are ordered.  If one fails\n+        // The next one is tried:\n+        //\n+        // hard-link: attempt to create a hard-link to the file\n+        // copy: copy the file\n+        // soft-link: create a symbolic link to the file\n+        //\n+        // NOTE: soft-link will be skipped for Docker jobs\n+        localization: [\n+          \"hard-link\", \"soft-link\", \"copy\"\n+        ]\n+      }\n+    },\n+    {\n+      name = \"SGE\"\n+      class = \"cromwell.engine.backend.sge.SgeBackend\"\n+      config {\n+        // Root directory where Cromwell writes job results.  This directory must be\n+        // visible and writeable by the Cromwell process as well as the jobs that Cromwell\n+        // launches.\n+        root: \"cromwell-executions\"\n+\n+        // Cromwell makes a link to your input files within <root>/<workflow UUID>/workflow-inputs\n+        // The following are strategies used to make those links.  They are ordered.  If one fails\n+        // The next one is tried:\n+        //\n+        // hard-link: attempt to create a hard-link to the file\n+        // copy: copy the file\n+        // soft-link: create a symbolic link to the file\n+        //\n+        // NOTE: soft-link will be skipped for Docker jobs\n+        localization: [\n+          \"hard-link\", \"soft-link\", \"copy\"\n+        ]\n+      }\n+    },\n+    {\n+      name = \"JES\"\n+      class = \"cromwell.engine.backend.jes.JesBackend\"\n+      config {\n+        // Google project\n+        project = \"my-cromwell-workflows\"\n+\n+        // Base bucket for workflow executions\n+        baseExecutionBucket = \"gs://my-cromwell-workflows-bucket\"\n+\n+        // Endpoint for APIs, no reason to change this unless directed by Google.\n+        endpointUrl = \"https://genomics.googleapis.com/\"\n+\n+        // Polling for completion backs-off gradually for slower-running jobs.\n+        // This is the maximum polling interval (in seconds):\n+        maximumPollingInterval = 600\n+\n+        applicationName = \"cromwell\"\n+\n+        // Optional Dockerhub Credentials. Can be used to access private docker images.\n+        docker {","path":"engine/src/main/resources/application.conf","position":167,"original_position":167,"commit_id":"301d10b7a362f2cfe8c710f01976227e768bdea9","original_commit_id":"301d10b7a362f2cfe8c710f01976227e768bdea9","user":{"login":"geoffjentry","id":961771,"avatar_url":"https://avatars.githubusercontent.com/u/961771?v=3","gravatar_id":"","url":"https://api.github.com/users/geoffjentry","html_url":"https://github.com/geoffjentry","followers_url":"https://api.github.com/users/geoffjentry/followers","following_url":"https://api.github.com/users/geoffjentry/following{/other_user}","gists_url":"https://api.github.com/users/geoffjentry/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffjentry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffjentry/subscriptions","organizations_url":"https://api.github.com/users/geoffjentry/orgs","repos_url":"https://api.github.com/users/geoffjentry/repos","events_url":"https://api.github.com/users/geoffjentry/events{/privacy}","received_events_url":"https://api.github.com/users/geoffjentry/received_events","type":"User","site_admin":false},"body":"We'll probably see a future where we want this elsewhere but I wouldn't worry about it for now","created_at":"2016-03-29T18:27:47Z","updated_at":"2016-03-29T18:27:47Z","html_url":"https://github.com/broadinstitute/cromwell/pull/627#discussion_r57774745","pull_request_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/57774745"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/627#discussion_r57774745"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627","id":64498117,"html_url":"https://github.com/broadinstitute/cromwell/pull/627","diff_url":"https://github.com/broadinstitute/cromwell/pull/627.diff","patch_url":"https://github.com/broadinstitute/cromwell/pull/627.patch","issue_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/627","number":627,"state":"open","locked":false,"title":"Bringing in BackendConfiguration, beginning changes to config file.","user":{"login":"mcovarr","id":10790523,"avatar_url":"https://avatars.githubusercontent.com/u/10790523?v=3","gravatar_id":"","url":"https://api.github.com/users/mcovarr","html_url":"https://github.com/mcovarr","followers_url":"https://api.github.com/users/mcovarr/followers","following_url":"https://api.github.com/users/mcovarr/following{/other_user}","gists_url":"https://api.github.com/users/mcovarr/gists{/gist_id}","starred_url":"https://api.github.com/users/mcovarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcovarr/subscriptions","organizations_url":"https://api.github.com/users/mcovarr/orgs","repos_url":"https://api.github.com/users/mcovarr/repos","events_url":"https://api.github.com/users/mcovarr/events{/privacy}","received_events_url":"https://api.github.com/users/mcovarr/received_events","type":"User","site_admin":false},"body":"Warning: kind of a trainwreck.  This PR is aimed in the general direction of #580 but \"closes\" might be too strong a term for this.  \r\n\r\nThis has a DO NOT MERGE on it since it definitely shouldn't go into 0.19, and maybe also for the trainwreck comment above.\r\n\r\nNaughty list:\r\n\r\n- Might break GCS with Local and SGE backends\r\n- Doesn't cleanly deal with filesystems, so configuration is currently duplicated among backends.  Blech.\r\n\r\nNice list:\r\n\r\n- Does get the config closer to what it should look like for PBEs.\r\n- Might be able to plug in a backend type that isn't compiled in.  Maybe.\r\n- Might be able to do sneaky things like have the LocalBackend specified twice with two different names to test call-granular backends.  Again, maybe.","created_at":"2016-03-29T16:56:23Z","updated_at":"2016-03-29T18:27:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"40220597844b8ffe90c8b80ae62ae86f8def64dc","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/627/comments","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/301d10b7a362f2cfe8c710f01976227e768bdea9","head":{"label":"broadinstitute:mlc_pluggablesque_config#580","ref":"mlc_pluggablesque_config#580","sha":"301d10b7a362f2cfe8c710f01976227e768bdea9","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/cromwell/deployments","created_at":"2015-04-17T19:39:36Z","updated_at":"2016-03-17T20:09:43Z","pushed_at":"2016-03-29T18:02:17Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"","size":6042,"stargazers_count":42,"watchers_count":42,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":11,"mirror_url":null,"open_issues_count":42,"forks":11,"open_issues":42,"watchers":42,"default_branch":"develop"}},"base":{"label":"broadinstitute:develop","ref":"develop","sha":"3c110bf69ec09b2a75258a0181ab206f980b5570","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/cromwell/deployments","created_at":"2015-04-17T19:39:36Z","updated_at":"2016-03-17T20:09:43Z","pushed_at":"2016-03-29T18:02:17Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"","size":6042,"stargazers_count":42,"watchers_count":42,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":11,"mirror_url":null,"open_issues_count":42,"forks":11,"open_issues":42,"watchers":42,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/627"},"issue":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/627"},"comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/627/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/627/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/cromwell/statuses/301d10b7a362f2cfe8c710f01976227e768bdea9"}}}}