{"action":"created","comment":{"url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/comments/47611430","id":47611430,"diff_hunk":"@@ -307,6 +307,42 @@ def default_fs=(value)\n     @node[\"crowbar_wall\"][\"default_fs\"] = value\n   end\n \n+  def disk_roles=(value)\n+    @node.set[\"crowbar_wall\"] ||= {}\n+    @node.set[\"crowbar_wall\"][\"disk_roles\"] = value\n+  end\n+\n+  # remove devices that were claimed after their role was set\n+  def drop_claimed_disks_from_roles\n+    crowbar_wall[\"disk_roles\"].keys.each do |name|\n+      if crowbar_wall[:claimed_disks][name]\n+        crowbar_wall[\"disk_roles\"].delete(name)\n+      end\n+    end\n+  end\n+\n+  def add_unclaimed_disks_to_roles\n+    # Check for current unclaimed disks, and add unclaimed disk to\n+    # disk_roles hash if it is not there yet.\n+    # (New disk could have been added to the node)\n+    unclaimed_physical_drives.each do |d|\n+      unique_name = unique_device_for(d.first)\n+      unless crowbar_wall[\"disk_roles\"][unique_name]\n+        crowbar_wall[\"disk_roles\"][unique_name] = \"\"\n+      end\n+    end\n+  end\n+\n+  def disk_roles(options = {})\n+    @node[\"crowbar_wall\"] ||= {}\n+    crowbar_wall[\"disk_roles\"] ||= {}\n+    if (options.fetch :refresh, false)","path":"crowbar_framework/app/models/node_object.rb","position":33,"original_position":33,"commit_id":"4280c0309c2ab931e49fd04bb669005565345825","original_commit_id":"4280c0309c2ab931e49fd04bb669005565345825","user":{"login":"houndci","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=3","gravatar_id":"","url":"https://api.github.com/users/houndci","html_url":"https://github.com/houndci","followers_url":"https://api.github.com/users/houndci/followers","following_url":"https://api.github.com/users/houndci/following{/other_user}","gists_url":"https://api.github.com/users/houndci/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci/subscriptions","organizations_url":"https://api.github.com/users/houndci/orgs","repos_url":"https://api.github.com/users/houndci/repos","events_url":"https://api.github.com/users/houndci/events{/privacy}","received_events_url":"https://api.github.com/users/houndci/received_events","type":"User","site_admin":false},"body":"Style/ParenthesesAroundCondition: Don't use parentheses around the condition of an `if`. (https://github.com/bbatsov/ruby-style-guide#no-parens-if)","created_at":"2015-12-15T09:04:18Z","updated_at":"2015-12-15T09:04:18Z","html_url":"https://github.com/crowbar/crowbar-core/pull/161#discussion_r47611430","pull_request_url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161","_links":{"self":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/comments/47611430"},"html":{"href":"https://github.com/crowbar/crowbar-core/pull/161#discussion_r47611430"},"pull_request":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161"}}},"pull_request":{"url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161","id":53094409,"html_url":"https://github.com/crowbar/crowbar-core/pull/161","diff_url":"https://github.com/crowbar/crowbar-core/pull/161.diff","patch_url":"https://github.com/crowbar/crowbar-core/pull/161.patch","issue_url":"https://api.github.com/repos/crowbar/crowbar-core/issues/161","number":161,"state":"open","locked":false,"title":"Allow to define roles for disks owned by nodes","user":{"login":"jsuchome","id":910000,"avatar_url":"https://avatars.githubusercontent.com/u/910000?v=3","gravatar_id":"","url":"https://api.github.com/users/jsuchome","html_url":"https://github.com/jsuchome","followers_url":"https://api.github.com/users/jsuchome/followers","following_url":"https://api.github.com/users/jsuchome/following{/other_user}","gists_url":"https://api.github.com/users/jsuchome/gists{/gist_id}","starred_url":"https://api.github.com/users/jsuchome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsuchome/subscriptions","organizations_url":"https://api.github.com/users/jsuchome/orgs","repos_url":"https://api.github.com/users/jsuchome/repos","events_url":"https://api.github.com/users/jsuchome/events{/privacy}","received_events_url":"https://api.github.com/users/jsuchome/received_events","type":"User","site_admin":false},"body":"When such role (ceph,swift, sbd etc.) for each device exists,\r\nother barclamps should use it when claiming devices for themselves.\r\n\r\nThis is based on https://github.com/crowbar/barclamp-crowbar/pull/1306 and https://github.com/crowbar/barclamp-deployer/pull/248\r\n\r\nSome screenshots:\r\n\r\n- Selecting new role (can be changed even after Save)\r\n![crowbar-node-disk-roles-selecting](https://cloud.githubusercontent.com/assets/910000/11684092/795f33c2-9e6f-11e5-9819-2b06209f2c29.png)\r\n\r\n- All roles already selected AND claimed (no further change possible, but we can see the info)\r\n![crowbar-node-disk-roles-swift](https://cloud.githubusercontent.com/assets/910000/11684109/8f87a36e-9e6f-11e5-8a77-c85207d13c05.png)\r\n","created_at":"2015-12-09T09:27:10Z","updated_at":"2015-12-15T09:04:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a4213fba33da560c06d5d31afe7ea76508a49412","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161/commits","review_comments_url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161/comments","review_comment_url":"https://api.github.com/repos/crowbar/crowbar-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/crowbar/crowbar-core/issues/161/comments","statuses_url":"https://api.github.com/repos/crowbar/crowbar-core/statuses/4280c0309c2ab931e49fd04bb669005565345825","head":{"label":"jsuchome:disk_roles","ref":"disk_roles","sha":"4280c0309c2ab931e49fd04bb669005565345825","user":{"login":"jsuchome","id":910000,"avatar_url":"https://avatars.githubusercontent.com/u/910000?v=3","gravatar_id":"","url":"https://api.github.com/users/jsuchome","html_url":"https://github.com/jsuchome","followers_url":"https://api.github.com/users/jsuchome/followers","following_url":"https://api.github.com/users/jsuchome/following{/other_user}","gists_url":"https://api.github.com/users/jsuchome/gists{/gist_id}","starred_url":"https://api.github.com/users/jsuchome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsuchome/subscriptions","organizations_url":"https://api.github.com/users/jsuchome/orgs","repos_url":"https://api.github.com/users/jsuchome/repos","events_url":"https://api.github.com/users/jsuchome/events{/privacy}","received_events_url":"https://api.github.com/users/jsuchome/received_events","type":"User","site_admin":false},"repo":{"id":44730679,"name":"crowbar-core","full_name":"jsuchome/crowbar-core","owner":{"login":"jsuchome","id":910000,"avatar_url":"https://avatars.githubusercontent.com/u/910000?v=3","gravatar_id":"","url":"https://api.github.com/users/jsuchome","html_url":"https://github.com/jsuchome","followers_url":"https://api.github.com/users/jsuchome/followers","following_url":"https://api.github.com/users/jsuchome/following{/other_user}","gists_url":"https://api.github.com/users/jsuchome/gists{/gist_id}","starred_url":"https://api.github.com/users/jsuchome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsuchome/subscriptions","organizations_url":"https://api.github.com/users/jsuchome/orgs","repos_url":"https://api.github.com/users/jsuchome/repos","events_url":"https://api.github.com/users/jsuchome/events{/privacy}","received_events_url":"https://api.github.com/users/jsuchome/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jsuchome/crowbar-core","description":"Core deployment for Crowbar","fork":true,"url":"https://api.github.com/repos/jsuchome/crowbar-core","forks_url":"https://api.github.com/repos/jsuchome/crowbar-core/forks","keys_url":"https://api.github.com/repos/jsuchome/crowbar-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jsuchome/crowbar-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jsuchome/crowbar-core/teams","hooks_url":"https://api.github.com/repos/jsuchome/crowbar-core/hooks","issue_events_url":"https://api.github.com/repos/jsuchome/crowbar-core/issues/events{/number}","events_url":"https://api.github.com/repos/jsuchome/crowbar-core/events","assignees_url":"https://api.github.com/repos/jsuchome/crowbar-core/assignees{/user}","branches_url":"https://api.github.com/repos/jsuchome/crowbar-core/branches{/branch}","tags_url":"https://api.github.com/repos/jsuchome/crowbar-core/tags","blobs_url":"https://api.github.com/repos/jsuchome/crowbar-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jsuchome/crowbar-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jsuchome/crowbar-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/jsuchome/crowbar-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jsuchome/crowbar-core/statuses/{sha}","languages_url":"https://api.github.com/repos/jsuchome/crowbar-core/languages","stargazers_url":"https://api.github.com/repos/jsuchome/crowbar-core/stargazers","contributors_url":"https://api.github.com/repos/jsuchome/crowbar-core/contributors","subscribers_url":"https://api.github.com/repos/jsuchome/crowbar-core/subscribers","subscription_url":"https://api.github.com/repos/jsuchome/crowbar-core/subscription","commits_url":"https://api.github.com/repos/jsuchome/crowbar-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/jsuchome/crowbar-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/jsuchome/crowbar-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/jsuchome/crowbar-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/jsuchome/crowbar-core/contents/{+path}","compare_url":"https://api.github.com/repos/jsuchome/crowbar-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jsuchome/crowbar-core/merges","archive_url":"https://api.github.com/repos/jsuchome/crowbar-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jsuchome/crowbar-core/downloads","issues_url":"https://api.github.com/repos/jsuchome/crowbar-core/issues{/number}","pulls_url":"https://api.github.com/repos/jsuchome/crowbar-core/pulls{/number}","milestones_url":"https://api.github.com/repos/jsuchome/crowbar-core/milestones{/number}","notifications_url":"https://api.github.com/repos/jsuchome/crowbar-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jsuchome/crowbar-core/labels{/name}","releases_url":"https://api.github.com/repos/jsuchome/crowbar-core/releases{/id}","created_at":"2015-10-22T07:59:41Z","updated_at":"2015-10-22T07:59:49Z","pushed_at":"2015-12-15T09:04:06Z","git_url":"git://github.com/jsuchome/crowbar-core.git","ssh_url":"git@github.com:jsuchome/crowbar-core.git","clone_url":"https://github.com/jsuchome/crowbar-core.git","svn_url":"https://github.com/jsuchome/crowbar-core","homepage":null,"size":103744,"stargazers_count":0,"watchers_count":0,"language":"Ruby","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":"crowbar:master","ref":"master","sha":"5335192f11f7d6cf2e59ced243eb7cab2ab283d3","user":{"login":"crowbar","id":2910205,"avatar_url":"https://avatars.githubusercontent.com/u/2910205?v=3","gravatar_id":"","url":"https://api.github.com/users/crowbar","html_url":"https://github.com/crowbar","followers_url":"https://api.github.com/users/crowbar/followers","following_url":"https://api.github.com/users/crowbar/following{/other_user}","gists_url":"https://api.github.com/users/crowbar/gists{/gist_id}","starred_url":"https://api.github.com/users/crowbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crowbar/subscriptions","organizations_url":"https://api.github.com/users/crowbar/orgs","repos_url":"https://api.github.com/users/crowbar/repos","events_url":"https://api.github.com/users/crowbar/events{/privacy}","received_events_url":"https://api.github.com/users/crowbar/received_events","type":"Organization","site_admin":false},"repo":{"id":39003227,"name":"crowbar-core","full_name":"crowbar/crowbar-core","owner":{"login":"crowbar","id":2910205,"avatar_url":"https://avatars.githubusercontent.com/u/2910205?v=3","gravatar_id":"","url":"https://api.github.com/users/crowbar","html_url":"https://github.com/crowbar","followers_url":"https://api.github.com/users/crowbar/followers","following_url":"https://api.github.com/users/crowbar/following{/other_user}","gists_url":"https://api.github.com/users/crowbar/gists{/gist_id}","starred_url":"https://api.github.com/users/crowbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crowbar/subscriptions","organizations_url":"https://api.github.com/users/crowbar/orgs","repos_url":"https://api.github.com/users/crowbar/repos","events_url":"https://api.github.com/users/crowbar/events{/privacy}","received_events_url":"https://api.github.com/users/crowbar/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/crowbar/crowbar-core","description":"Core deployment for Crowbar","fork":false,"url":"https://api.github.com/repos/crowbar/crowbar-core","forks_url":"https://api.github.com/repos/crowbar/crowbar-core/forks","keys_url":"https://api.github.com/repos/crowbar/crowbar-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/crowbar/crowbar-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/crowbar/crowbar-core/teams","hooks_url":"https://api.github.com/repos/crowbar/crowbar-core/hooks","issue_events_url":"https://api.github.com/repos/crowbar/crowbar-core/issues/events{/number}","events_url":"https://api.github.com/repos/crowbar/crowbar-core/events","assignees_url":"https://api.github.com/repos/crowbar/crowbar-core/assignees{/user}","branches_url":"https://api.github.com/repos/crowbar/crowbar-core/branches{/branch}","tags_url":"https://api.github.com/repos/crowbar/crowbar-core/tags","blobs_url":"https://api.github.com/repos/crowbar/crowbar-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/crowbar/crowbar-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/crowbar/crowbar-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/crowbar/crowbar-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/crowbar/crowbar-core/statuses/{sha}","languages_url":"https://api.github.com/repos/crowbar/crowbar-core/languages","stargazers_url":"https://api.github.com/repos/crowbar/crowbar-core/stargazers","contributors_url":"https://api.github.com/repos/crowbar/crowbar-core/contributors","subscribers_url":"https://api.github.com/repos/crowbar/crowbar-core/subscribers","subscription_url":"https://api.github.com/repos/crowbar/crowbar-core/subscription","commits_url":"https://api.github.com/repos/crowbar/crowbar-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/crowbar/crowbar-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/crowbar/crowbar-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/crowbar/crowbar-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/crowbar/crowbar-core/contents/{+path}","compare_url":"https://api.github.com/repos/crowbar/crowbar-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/crowbar/crowbar-core/merges","archive_url":"https://api.github.com/repos/crowbar/crowbar-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/crowbar/crowbar-core/downloads","issues_url":"https://api.github.com/repos/crowbar/crowbar-core/issues{/number}","pulls_url":"https://api.github.com/repos/crowbar/crowbar-core/pulls{/number}","milestones_url":"https://api.github.com/repos/crowbar/crowbar-core/milestones{/number}","notifications_url":"https://api.github.com/repos/crowbar/crowbar-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/crowbar/crowbar-core/labels{/name}","releases_url":"https://api.github.com/repos/crowbar/crowbar-core/releases{/id}","created_at":"2015-07-13T09:31:28Z","updated_at":"2015-12-15T08:40:05Z","pushed_at":"2015-12-15T09:04:06Z","git_url":"git://github.com/crowbar/crowbar-core.git","ssh_url":"git@github.com:crowbar/crowbar-core.git","clone_url":"https://github.com/crowbar/crowbar-core.git","svn_url":"https://github.com/crowbar/crowbar-core","homepage":null,"size":118810,"stargazers_count":5,"watchers_count":5,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":21,"mirror_url":null,"open_issues_count":27,"forks":21,"open_issues":27,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161"},"html":{"href":"https://github.com/crowbar/crowbar-core/pull/161"},"issue":{"href":"https://api.github.com/repos/crowbar/crowbar-core/issues/161"},"comments":{"href":"https://api.github.com/repos/crowbar/crowbar-core/issues/161/comments"},"review_comments":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161/comments"},"review_comment":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/crowbar/crowbar-core/pulls/161/commits"},"statuses":{"href":"https://api.github.com/repos/crowbar/crowbar-core/statuses/4280c0309c2ab931e49fd04bb669005565345825"}}}}