{"action":"closed","number":100,"pull_request":{"url":"https://api.github.com/repos/emccode/rexray/pulls/100","id":46330061,"html_url":"https://github.com/emccode/rexray/pull/100","diff_url":"https://github.com/emccode/rexray/pull/100.diff","patch_url":"https://github.com/emccode/rexray/pull/100.patch","issue_url":"https://api.github.com/repos/emccode/rexray/issues/100","number":100,"state":"closed","locked":false,"title":"Config Data is Now Secure & Plain-Text","user":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"body":"This patch is in response to issue #50. The configuration data in REX-Ray is now stored separately as secure & plain-text. The plain-text version of the data is serialized and sent to the server when necessary to provide credentials. However, when executing commands like `rexray service module types`, the produced output will be secure by default and no longer include the following configuration keys:\r\n\r\n  * AwsSecretKey\r\n  * RackspacePassword\r\n  * ScaleIoPassword\r\n  * XtremIoPassword\r\n\r\nFor example:\r\n\r\n    [0]akutz@poppy:rexray$ rexray service module types\r\n    [\r\n      {\r\n        \"id\": 1,\r\n        \"name\": \"AdminModule\",\r\n        \"defaultConfigs\": [\r\n          {\r\n            \"address\": \"tcp://:7979\"\r\n          }\r\n        ]\r\n      },\r\n      {\r\n        \"id\": 2,\r\n        \"name\": \"DockerRemoteVolumeDriverModule\",\r\n        \"defaultConfigs\": [\r\n          {\r\n            \"address\": \"unix:///run/docker/plugins/rexray-remote.sock\",\r\n            \"config\": {\r\n              \"LogLevel\": \"info\",\r\n              \"StorageDrivers\": [],\r\n              \"VolumeDrivers\": [\r\n                \"docker\"\r\n              ],\r\n              \"OsDrivers\": [\r\n                \"linux\"\r\n              ],\r\n              \"MinVolSize\": 0,\r\n              \"RemoteManagement\": false,\r\n              \"DockerVolumeType\": \"\",\r\n              \"DockerIops\": 0,\r\n              \"DockerSize\": 0,\r\n              \"DockerAvailabilityZone\": \"\",\r\n              \"AwsAccessKey\": \"\",\r\n              \"AwsRegion\": \"\",\r\n              \"RackspaceAuthUrl\": \"\",\r\n              \"RackspaceUserId\": \"\",\r\n              \"RackspaceUserName\": \"\",\r\n              \"RackspaceTenantId\": \"\",\r\n              \"RackspaceTenantName\": \"\",\r\n              \"RackspaceDomainId\": \"\",\r\n              \"RackspaceDomainName\": \"\",\r\n              \"ScaleIoEndpoint\": \"\",\r\n              \"ScaleIoInsecure\": false,\r\n              \"ScaleIoUseCerts\": true,\r\n              \"ScaleIoUserName\": \"\",\r\n              \"ScaleIoSystemId\": \"\",\r\n              \"ScaleIoSystemName\": \"\",\r\n              \"ScaleIoProtectionDomainId\": \"\",\r\n              \"ScaleIoProtectionDomainName\": \"\",\r\n              \"ScaleIoStoragePoolId\": \"\",\r\n              \"ScaleIoStoragePoolName\": \"\",\r\n              \"XtremIoEndpoint\": \"\",\r\n              \"XtremIoUserName\": \"\",\r\n              \"XtremIoInsecure\": false,\r\n              \"XtremIoDeviceMapper\": \"\",\r\n              \"XtremIoMultipath\": \"\",\r\n              \"XtremIoRemoteManagement\": false\r\n            }\r\n          }\r\n        ]\r\n      },\r\n      {\r\n        \"id\": 3,\r\n        \"name\": \"DockerVolumeDriverModule\",\r\n        \"defaultConfigs\": [\r\n          {\r\n            \"address\": \"unix:///run/docker/plugins/rexray.sock\",\r\n            \"config\": {\r\n              \"LogLevel\": \"info\",\r\n              \"StorageDrivers\": [],\r\n              \"VolumeDrivers\": [\r\n                \"docker\"\r\n              ],\r\n              \"OsDrivers\": [\r\n                \"linux\"\r\n              ],\r\n              \"MinVolSize\": 0,\r\n              \"RemoteManagement\": false,\r\n              \"DockerVolumeType\": \"\",\r\n              \"DockerIops\": 0,\r\n              \"DockerSize\": 0,\r\n              \"DockerAvailabilityZone\": \"\",\r\n              \"AwsAccessKey\": \"\",\r\n              \"AwsRegion\": \"\",\r\n              \"RackspaceAuthUrl\": \"\",\r\n              \"RackspaceUserId\": \"\",\r\n              \"RackspaceUserName\": \"\",\r\n              \"RackspaceTenantId\": \"\",\r\n              \"RackspaceTenantName\": \"\",\r\n              \"RackspaceDomainId\": \"\",\r\n              \"RackspaceDomainName\": \"\",\r\n              \"ScaleIoEndpoint\": \"\",\r\n              \"ScaleIoInsecure\": false,\r\n              \"ScaleIoUseCerts\": true,\r\n              \"ScaleIoUserName\": \"\",\r\n              \"ScaleIoSystemId\": \"\",\r\n              \"ScaleIoSystemName\": \"\",\r\n              \"ScaleIoProtectionDomainId\": \"\",\r\n              \"ScaleIoProtectionDomainName\": \"\",\r\n              \"ScaleIoStoragePoolId\": \"\",\r\n              \"ScaleIoStoragePoolName\": \"\",\r\n              \"XtremIoEndpoint\": \"\",\r\n              \"XtremIoUserName\": \"\",\r\n              \"XtremIoInsecure\": false,\r\n              \"XtremIoDeviceMapper\": \"\",\r\n              \"XtremIoMultipath\": \"\",\r\n              \"XtremIoRemoteManagement\": false\r\n            }\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n\r\nThe data is still available on the server-side in the same locations, it's just not serialized for transport unless specifically requested.\r\n\r\nI would ask @clintonskitson, @kacole2, and @jonasrosland to please review the fields that I categorized as *secure* and note whether any others should be placed into that category as well. ","created_at":"2015-09-29T20:49:50Z","updated_at":"2015-09-29T21:09:11Z","closed_at":"2015-09-29T21:09:11Z","merged_at":"2015-09-29T21:09:11Z","merge_commit_sha":"07274005ca46759da8d1095ac04c50a6e7eafee0","assignee":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/emccode/rexray/milestones/1","html_url":"https://github.com/emccode/rexray/milestones/0.2.0","labels_url":"https://api.github.com/repos/emccode/rexray/milestones/1/labels","id":1266459,"number":1,"title":"0.2.0","description":"","creator":{"login":"clintonskitson","id":1395761,"avatar_url":"https://avatars.githubusercontent.com/u/1395761?v=3","gravatar_id":"","url":"https://api.github.com/users/clintonskitson","html_url":"https://github.com/clintonskitson","followers_url":"https://api.github.com/users/clintonskitson/followers","following_url":"https://api.github.com/users/clintonskitson/following{/other_user}","gists_url":"https://api.github.com/users/clintonskitson/gists{/gist_id}","starred_url":"https://api.github.com/users/clintonskitson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clintonskitson/subscriptions","organizations_url":"https://api.github.com/users/clintonskitson/orgs","repos_url":"https://api.github.com/users/clintonskitson/repos","events_url":"https://api.github.com/users/clintonskitson/events{/privacy}","received_events_url":"https://api.github.com/users/clintonskitson/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":59,"state":"open","created_at":"2015-08-21T15:02:32Z","updated_at":"2015-09-29T21:09:11Z","due_on":"2015-09-30T05:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/emccode/rexray/pulls/100/commits","review_comments_url":"https://api.github.com/repos/emccode/rexray/pulls/100/comments","review_comment_url":"https://api.github.com/repos/emccode/rexray/pulls/comments{/number}","comments_url":"https://api.github.com/repos/emccode/rexray/issues/100/comments","statuses_url":"https://api.github.com/repos/emccode/rexray/statuses/6a5dd34f93e66f5fa1917b23937d232b3f3ebaca","head":{"label":"akutz:feature/config-refactor","ref":"feature/config-refactor","sha":"6a5dd34f93e66f5fa1917b23937d232b3f3ebaca","user":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"repo":{"id":39155671,"name":"rexray","full_name":"akutz/rexray","owner":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/akutz/rexray","description":"A guest based storage introspection tool that allows local visibility and management from cloud and storage platforms","fork":true,"url":"https://api.github.com/repos/akutz/rexray","forks_url":"https://api.github.com/repos/akutz/rexray/forks","keys_url":"https://api.github.com/repos/akutz/rexray/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akutz/rexray/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akutz/rexray/teams","hooks_url":"https://api.github.com/repos/akutz/rexray/hooks","issue_events_url":"https://api.github.com/repos/akutz/rexray/issues/events{/number}","events_url":"https://api.github.com/repos/akutz/rexray/events","assignees_url":"https://api.github.com/repos/akutz/rexray/assignees{/user}","branches_url":"https://api.github.com/repos/akutz/rexray/branches{/branch}","tags_url":"https://api.github.com/repos/akutz/rexray/tags","blobs_url":"https://api.github.com/repos/akutz/rexray/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akutz/rexray/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akutz/rexray/git/refs{/sha}","trees_url":"https://api.github.com/repos/akutz/rexray/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akutz/rexray/statuses/{sha}","languages_url":"https://api.github.com/repos/akutz/rexray/languages","stargazers_url":"https://api.github.com/repos/akutz/rexray/stargazers","contributors_url":"https://api.github.com/repos/akutz/rexray/contributors","subscribers_url":"https://api.github.com/repos/akutz/rexray/subscribers","subscription_url":"https://api.github.com/repos/akutz/rexray/subscription","commits_url":"https://api.github.com/repos/akutz/rexray/commits{/sha}","git_commits_url":"https://api.github.com/repos/akutz/rexray/git/commits{/sha}","comments_url":"https://api.github.com/repos/akutz/rexray/comments{/number}","issue_comment_url":"https://api.github.com/repos/akutz/rexray/issues/comments{/number}","contents_url":"https://api.github.com/repos/akutz/rexray/contents/{+path}","compare_url":"https://api.github.com/repos/akutz/rexray/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akutz/rexray/merges","archive_url":"https://api.github.com/repos/akutz/rexray/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akutz/rexray/downloads","issues_url":"https://api.github.com/repos/akutz/rexray/issues{/number}","pulls_url":"https://api.github.com/repos/akutz/rexray/pulls{/number}","milestones_url":"https://api.github.com/repos/akutz/rexray/milestones{/number}","notifications_url":"https://api.github.com/repos/akutz/rexray/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akutz/rexray/labels{/name}","releases_url":"https://api.github.com/repos/akutz/rexray/releases{/id}","created_at":"2015-07-15T19:03:53Z","updated_at":"2015-07-15T19:03:53Z","pushed_at":"2015-09-29T20:48:18Z","git_url":"git://github.com/akutz/rexray.git","ssh_url":"git@github.com:akutz/rexray.git","clone_url":"https://github.com/akutz/rexray.git","svn_url":"https://github.com/akutz/rexray","homepage":"","size":838,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"emccode:master","ref":"master","sha":"970e79e171053faf3bd9b875951be16967c194c1","user":{"login":"emccode","id":8659750,"avatar_url":"https://avatars.githubusercontent.com/u/8659750?v=3","gravatar_id":"","url":"https://api.github.com/users/emccode","html_url":"https://github.com/emccode","followers_url":"https://api.github.com/users/emccode/followers","following_url":"https://api.github.com/users/emccode/following{/other_user}","gists_url":"https://api.github.com/users/emccode/gists{/gist_id}","starred_url":"https://api.github.com/users/emccode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emccode/subscriptions","organizations_url":"https://api.github.com/users/emccode/orgs","repos_url":"https://api.github.com/users/emccode/repos","events_url":"https://api.github.com/users/emccode/events{/privacy}","received_events_url":"https://api.github.com/users/emccode/received_events","type":"Organization","site_admin":false},"repo":{"id":33909634,"name":"rexray","full_name":"emccode/rexray","owner":{"login":"emccode","id":8659750,"avatar_url":"https://avatars.githubusercontent.com/u/8659750?v=3","gravatar_id":"","url":"https://api.github.com/users/emccode","html_url":"https://github.com/emccode","followers_url":"https://api.github.com/users/emccode/followers","following_url":"https://api.github.com/users/emccode/following{/other_user}","gists_url":"https://api.github.com/users/emccode/gists{/gist_id}","starred_url":"https://api.github.com/users/emccode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emccode/subscriptions","organizations_url":"https://api.github.com/users/emccode/orgs","repos_url":"https://api.github.com/users/emccode/repos","events_url":"https://api.github.com/users/emccode/events{/privacy}","received_events_url":"https://api.github.com/users/emccode/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/emccode/rexray","description":"A guest based storage introspection tool that allows local visibility and management from cloud and storage platforms","fork":false,"url":"https://api.github.com/repos/emccode/rexray","forks_url":"https://api.github.com/repos/emccode/rexray/forks","keys_url":"https://api.github.com/repos/emccode/rexray/keys{/key_id}","collaborators_url":"https://api.github.com/repos/emccode/rexray/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/emccode/rexray/teams","hooks_url":"https://api.github.com/repos/emccode/rexray/hooks","issue_events_url":"https://api.github.com/repos/emccode/rexray/issues/events{/number}","events_url":"https://api.github.com/repos/emccode/rexray/events","assignees_url":"https://api.github.com/repos/emccode/rexray/assignees{/user}","branches_url":"https://api.github.com/repos/emccode/rexray/branches{/branch}","tags_url":"https://api.github.com/repos/emccode/rexray/tags","blobs_url":"https://api.github.com/repos/emccode/rexray/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/emccode/rexray/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/emccode/rexray/git/refs{/sha}","trees_url":"https://api.github.com/repos/emccode/rexray/git/trees{/sha}","statuses_url":"https://api.github.com/repos/emccode/rexray/statuses/{sha}","languages_url":"https://api.github.com/repos/emccode/rexray/languages","stargazers_url":"https://api.github.com/repos/emccode/rexray/stargazers","contributors_url":"https://api.github.com/repos/emccode/rexray/contributors","subscribers_url":"https://api.github.com/repos/emccode/rexray/subscribers","subscription_url":"https://api.github.com/repos/emccode/rexray/subscription","commits_url":"https://api.github.com/repos/emccode/rexray/commits{/sha}","git_commits_url":"https://api.github.com/repos/emccode/rexray/git/commits{/sha}","comments_url":"https://api.github.com/repos/emccode/rexray/comments{/number}","issue_comment_url":"https://api.github.com/repos/emccode/rexray/issues/comments{/number}","contents_url":"https://api.github.com/repos/emccode/rexray/contents/{+path}","compare_url":"https://api.github.com/repos/emccode/rexray/compare/{base}...{head}","merges_url":"https://api.github.com/repos/emccode/rexray/merges","archive_url":"https://api.github.com/repos/emccode/rexray/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/emccode/rexray/downloads","issues_url":"https://api.github.com/repos/emccode/rexray/issues{/number}","pulls_url":"https://api.github.com/repos/emccode/rexray/pulls{/number}","milestones_url":"https://api.github.com/repos/emccode/rexray/milestones{/number}","notifications_url":"https://api.github.com/repos/emccode/rexray/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/emccode/rexray/labels{/name}","releases_url":"https://api.github.com/repos/emccode/rexray/releases{/id}","created_at":"2015-04-14T03:53:58Z","updated_at":"2015-09-29T06:01:18Z","pushed_at":"2015-09-29T21:09:11Z","git_url":"git://github.com/emccode/rexray.git","ssh_url":"git@github.com:emccode/rexray.git","clone_url":"https://github.com/emccode/rexray.git","svn_url":"https://github.com/emccode/rexray","homepage":"","size":1464,"stargazers_count":34,"watchers_count":34,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":16,"forks":9,"open_issues":16,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/emccode/rexray/pulls/100"},"html":{"href":"https://github.com/emccode/rexray/pull/100"},"issue":{"href":"https://api.github.com/repos/emccode/rexray/issues/100"},"comments":{"href":"https://api.github.com/repos/emccode/rexray/issues/100/comments"},"review_comments":{"href":"https://api.github.com/repos/emccode/rexray/pulls/100/comments"},"review_comment":{"href":"https://api.github.com/repos/emccode/rexray/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/emccode/rexray/pulls/100/commits"},"statuses":{"href":"https://api.github.com/repos/emccode/rexray/statuses/6a5dd34f93e66f5fa1917b23937d232b3f3ebaca"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"comments":12,"review_comments":0,"commits":1,"additions":346,"deletions":43,"changed_files":4}}