{"action":"created","issue":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/135","labels_url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/135/labels{/name}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/135/comments","events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/135/events","html_url":"https://github.com/spring-cloud/spring-cloud-dataflow/pull/135","id":115067869,"number":135,"title":"[Do not merge yet] XD-3616 Pass module resolver props via dataflow admin","user":{"login":"ilayaperumalg","id":151690,"avatar_url":"https://avatars.githubusercontent.com/u/151690?v=3","gravatar_id":"","url":"https://api.github.com/users/ilayaperumalg","html_url":"https://github.com/ilayaperumalg","followers_url":"https://api.github.com/users/ilayaperumalg/followers","following_url":"https://api.github.com/users/ilayaperumalg/following{/other_user}","gists_url":"https://api.github.com/users/ilayaperumalg/gists{/gist_id}","starred_url":"https://api.github.com/users/ilayaperumalg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ilayaperumalg/subscriptions","organizations_url":"https://api.github.com/users/ilayaperumalg/orgs","repos_url":"https://api.github.com/users/ilayaperumalg/repos","events_url":"https://api.github.com/users/ilayaperumalg/events{/privacy}","received_events_url":"https://api.github.com/users/ilayaperumalg/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/labels/current%20iteration","name":"current iteration","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"ericbottard","id":313494,"avatar_url":"https://avatars.githubusercontent.com/u/313494?v=3","gravatar_id":"","url":"https://api.github.com/users/ericbottard","html_url":"https://github.com/ericbottard","followers_url":"https://api.github.com/users/ericbottard/followers","following_url":"https://api.github.com/users/ericbottard/following{/other_user}","gists_url":"https://api.github.com/users/ericbottard/gists{/gist_id}","starred_url":"https://api.github.com/users/ericbottard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericbottard/subscriptions","organizations_url":"https://api.github.com/users/ericbottard/orgs","repos_url":"https://api.github.com/users/ericbottard/repos","events_url":"https://api.github.com/users/ericbottard/events{/privacy}","received_events_url":"https://api.github.com/users/ericbottard/received_events","type":"User","site_admin":false},"milestone":null,"comments":7,"created_at":"2015-11-04T14:45:41Z","updated_at":"2015-11-19T23:26:15Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/pulls/135","html_url":"https://github.com/spring-cloud/spring-cloud-dataflow/pull/135","diff_url":"https://github.com/spring-cloud/spring-cloud-dataflow/pull/135.diff","patch_url":"https://github.com/spring-cloud/spring-cloud-dataflow/pull/135.patch"},"body":" - This PR adds the ability to pass `module-resolver` properties from `spring-cloud-dataflow-admin`.\r\nThe module resolver properties would have a prefix `moduleResolver.` in the deployment properties when provided during `deploy` operation.\r\nFor instance, a stream deployment command could override the module resolver properties like this:\r\n  `stream deploy <stream> --properties \"module.time.moduleResolver.remoteRepositories=repo1,module.time.moduleResolver.localRepository=/tmp/m2,module.log.moduleResolver.offline=true\"`\r\n\r\nSince the `moduleResolver` configuration is setup at the dataflow-admin `startup` itself, we can not rely to simple property override for the `moduleResolver` properties.\r\n - There were few road blocks while addressing this in few different approaches (especially in local deployer):\r\n   - Spawning separate process for `ModuleLauncherApplication` from `LocalModuleDeployer` needed to have its own classpath and process management (for deploying/un-deploy/destroy)\r\n   - The oracle-tools runtime library seemed to be a better option; but the classpath management within the dataflow-admin -> module-launcher -> oracle-tools gets complicated.\r\n\r\nThe current approach explicitly sets the module resolver properties via `ModuleResolver` implementation.\r\n\r\nThis resolves spring-cloud/spring-cloud-dataflow#161"},"comment":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/comments/158232609","html_url":"https://github.com/spring-cloud/spring-cloud-dataflow/pull/135#issuecomment-158232609","issue_url":"https://api.github.com/repos/spring-cloud/spring-cloud-dataflow/issues/135","id":158232609,"user":{"login":"markfisher","id":140784,"avatar_url":"https://avatars.githubusercontent.com/u/140784?v=3","gravatar_id":"","url":"https://api.github.com/users/markfisher","html_url":"https://github.com/markfisher","followers_url":"https://api.github.com/users/markfisher/followers","following_url":"https://api.github.com/users/markfisher/following{/other_user}","gists_url":"https://api.github.com/users/markfisher/gists{/gist_id}","starred_url":"https://api.github.com/users/markfisher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markfisher/subscriptions","organizations_url":"https://api.github.com/users/markfisher/orgs","repos_url":"https://api.github.com/users/markfisher/repos","events_url":"https://api.github.com/users/markfisher/events{/privacy}","received_events_url":"https://api.github.com/users/markfisher/received_events","type":"User","site_admin":false},"created_at":"2015-11-19T23:26:15Z","updated_at":"2015-11-19T23:26:15Z","body":"The `ModuleDeploymentRequest` already has deployment properties:\r\n\r\n```\r\npublic Map<String, String> getDeploymentProperties() {\r\n    return deploymentProperties;\r\n}\r\n```\r\n\r\nI'm thinking we could add `AdminConfigurationProperties` that includes something like `defaultDeploymentProperties`. Those would be overridable, but the full set of deployment properties should be passed along in the appropriate way for any deployment environment anyways (e.g. env vars for a cloud or container based runtime)."}}