{"action":"created","comment":{"url":"https://api.github.com/repos/RackHD/specs/pulls/comments/47363936","id":47363936,"diff_hunk":"@@ -0,0 +1,15 @@\n+# Node Tag and Label System\n+\n+## Background\n+\n+Identified the need to assign labels to a node.  This would allow an Infrastructure M&O layer to manage the node by assigning or clearing labels which may trigger workflows.  Examples labels can include �quarantine�, �allocated�, �unallocated�, �provisioned�, etc�\n+\n+\n+## Goals\n+\n+* Add a key for an array of labels/tags to the node model.� \n+* Add API to POST/DELETE labels(tags).� Depending on Infra to apply/remove tags based on HW events.\n+* Register workflows to be run on label/tag add and remove events.","path":"proposed/node-tagging.md","position":12,"original_position":12,"commit_id":"be29eba6bc3a8a170c7ab5ca555b5ac1917abdd5","original_commit_id":"be29eba6bc3a8a170c7ab5ca555b5ac1917abdd5","user":{"login":"brianparry","id":13092640,"avatar_url":"https://avatars.githubusercontent.com/u/13092640?v=3","gravatar_id":"","url":"https://api.github.com/users/brianparry","html_url":"https://github.com/brianparry","followers_url":"https://api.github.com/users/brianparry/followers","following_url":"https://api.github.com/users/brianparry/following{/other_user}","gists_url":"https://api.github.com/users/brianparry/gists{/gist_id}","starred_url":"https://api.github.com/users/brianparry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brianparry/subscriptions","organizations_url":"https://api.github.com/users/brianparry/orgs","repos_url":"https://api.github.com/users/brianparry/repos","events_url":"https://api.github.com/users/brianparry/events{/privacy}","received_events_url":"https://api.github.com/users/brianparry/received_events","type":"User","site_admin":false},"body":"@zyoung51 Your API proposal sounds good.  It sounds like this basically boils down to having a model for tags which we'd create, read, update, delete using a /tags route.  This model would need to include some sort workflow association and possibly a list of associated nodes.  In addition we want a way to get/put tag associations for a specific node which references tag id.","created_at":"2015-12-11T15:07:16Z","updated_at":"2015-12-11T15:07:16Z","html_url":"https://github.com/RackHD/specs/pull/31#discussion_r47363936","pull_request_url":"https://api.github.com/repos/RackHD/specs/pulls/31","_links":{"self":{"href":"https://api.github.com/repos/RackHD/specs/pulls/comments/47363936"},"html":{"href":"https://github.com/RackHD/specs/pull/31#discussion_r47363936"},"pull_request":{"href":"https://api.github.com/repos/RackHD/specs/pulls/31"}}},"pull_request":{"url":"https://api.github.com/repos/RackHD/specs/pulls/31","id":53304768,"html_url":"https://github.com/RackHD/specs/pull/31","diff_url":"https://github.com/RackHD/specs/pull/31.diff","patch_url":"https://github.com/RackHD/specs/pull/31.patch","issue_url":"https://api.github.com/repos/RackHD/specs/issues/31","number":31,"state":"open","locked":false,"title":"Node Tag and Labeling System","user":{"login":"amymullins","id":14179370,"avatar_url":"https://avatars.githubusercontent.com/u/14179370?v=3","gravatar_id":"","url":"https://api.github.com/users/amymullins","html_url":"https://github.com/amymullins","followers_url":"https://api.github.com/users/amymullins/followers","following_url":"https://api.github.com/users/amymullins/following{/other_user}","gists_url":"https://api.github.com/users/amymullins/gists{/gist_id}","starred_url":"https://api.github.com/users/amymullins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amymullins/subscriptions","organizations_url":"https://api.github.com/users/amymullins/orgs","repos_url":"https://api.github.com/users/amymullins/repos","events_url":"https://api.github.com/users/amymullins/events{/privacy}","received_events_url":"https://api.github.com/users/amymullins/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-12-10T19:29:48Z","updated_at":"2015-12-11T15:07:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b7e3d79a61e8f9550269485808b9cbbb99faabf4","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/RackHD/specs/pulls/31/commits","review_comments_url":"https://api.github.com/repos/RackHD/specs/pulls/31/comments","review_comment_url":"https://api.github.com/repos/RackHD/specs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/RackHD/specs/issues/31/comments","statuses_url":"https://api.github.com/repos/RackHD/specs/statuses/be29eba6bc3a8a170c7ab5ca555b5ac1917abdd5","head":{"label":"RackHD:node-tagging","ref":"node-tagging","sha":"be29eba6bc3a8a170c7ab5ca555b5ac1917abdd5","user":{"login":"RackHD","id":13982662,"avatar_url":"https://avatars.githubusercontent.com/u/13982662?v=3","gravatar_id":"","url":"https://api.github.com/users/RackHD","html_url":"https://github.com/RackHD","followers_url":"https://api.github.com/users/RackHD/followers","following_url":"https://api.github.com/users/RackHD/following{/other_user}","gists_url":"https://api.github.com/users/RackHD/gists{/gist_id}","starred_url":"https://api.github.com/users/RackHD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RackHD/subscriptions","organizations_url":"https://api.github.com/users/RackHD/orgs","repos_url":"https://api.github.com/users/RackHD/repos","events_url":"https://api.github.com/users/RackHD/events{/privacy}","received_events_url":"https://api.github.com/users/RackHD/received_events","type":"Organization","site_admin":false},"repo":{"id":46371352,"name":"specs","full_name":"RackHD/specs","owner":{"login":"RackHD","id":13982662,"avatar_url":"https://avatars.githubusercontent.com/u/13982662?v=3","gravatar_id":"","url":"https://api.github.com/users/RackHD","html_url":"https://github.com/RackHD","followers_url":"https://api.github.com/users/RackHD/followers","following_url":"https://api.github.com/users/RackHD/following{/other_user}","gists_url":"https://api.github.com/users/RackHD/gists{/gist_id}","starred_url":"https://api.github.com/users/RackHD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RackHD/subscriptions","organizations_url":"https://api.github.com/users/RackHD/orgs","repos_url":"https://api.github.com/users/RackHD/repos","events_url":"https://api.github.com/users/RackHD/events{/privacy}","received_events_url":"https://api.github.com/users/RackHD/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RackHD/specs","description":"specs for roadmap and design discussions","fork":false,"url":"https://api.github.com/repos/RackHD/specs","forks_url":"https://api.github.com/repos/RackHD/specs/forks","keys_url":"https://api.github.com/repos/RackHD/specs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RackHD/specs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RackHD/specs/teams","hooks_url":"https://api.github.com/repos/RackHD/specs/hooks","issue_events_url":"https://api.github.com/repos/RackHD/specs/issues/events{/number}","events_url":"https://api.github.com/repos/RackHD/specs/events","assignees_url":"https://api.github.com/repos/RackHD/specs/assignees{/user}","branches_url":"https://api.github.com/repos/RackHD/specs/branches{/branch}","tags_url":"https://api.github.com/repos/RackHD/specs/tags","blobs_url":"https://api.github.com/repos/RackHD/specs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RackHD/specs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RackHD/specs/git/refs{/sha}","trees_url":"https://api.github.com/repos/RackHD/specs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RackHD/specs/statuses/{sha}","languages_url":"https://api.github.com/repos/RackHD/specs/languages","stargazers_url":"https://api.github.com/repos/RackHD/specs/stargazers","contributors_url":"https://api.github.com/repos/RackHD/specs/contributors","subscribers_url":"https://api.github.com/repos/RackHD/specs/subscribers","subscription_url":"https://api.github.com/repos/RackHD/specs/subscription","commits_url":"https://api.github.com/repos/RackHD/specs/commits{/sha}","git_commits_url":"https://api.github.com/repos/RackHD/specs/git/commits{/sha}","comments_url":"https://api.github.com/repos/RackHD/specs/comments{/number}","issue_comment_url":"https://api.github.com/repos/RackHD/specs/issues/comments{/number}","contents_url":"https://api.github.com/repos/RackHD/specs/contents/{+path}","compare_url":"https://api.github.com/repos/RackHD/specs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RackHD/specs/merges","archive_url":"https://api.github.com/repos/RackHD/specs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RackHD/specs/downloads","issues_url":"https://api.github.com/repos/RackHD/specs/issues{/number}","pulls_url":"https://api.github.com/repos/RackHD/specs/pulls{/number}","milestones_url":"https://api.github.com/repos/RackHD/specs/milestones{/number}","notifications_url":"https://api.github.com/repos/RackHD/specs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RackHD/specs/labels{/name}","releases_url":"https://api.github.com/repos/RackHD/specs/releases{/id}","created_at":"2015-11-17T19:50:21Z","updated_at":"2015-11-17T19:50:38Z","pushed_at":"2015-12-10T21:42:04Z","git_url":"git://github.com/RackHD/specs.git","ssh_url":"git@github.com:RackHD/specs.git","clone_url":"https://github.com/RackHD/specs.git","svn_url":"https://github.com/RackHD/specs","homepage":null,"size":50,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":3,"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"RackHD:master","ref":"master","sha":"bc2995d2102e35f932d8215de248a444b25f81f8","user":{"login":"RackHD","id":13982662,"avatar_url":"https://avatars.githubusercontent.com/u/13982662?v=3","gravatar_id":"","url":"https://api.github.com/users/RackHD","html_url":"https://github.com/RackHD","followers_url":"https://api.github.com/users/RackHD/followers","following_url":"https://api.github.com/users/RackHD/following{/other_user}","gists_url":"https://api.github.com/users/RackHD/gists{/gist_id}","starred_url":"https://api.github.com/users/RackHD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RackHD/subscriptions","organizations_url":"https://api.github.com/users/RackHD/orgs","repos_url":"https://api.github.com/users/RackHD/repos","events_url":"https://api.github.com/users/RackHD/events{/privacy}","received_events_url":"https://api.github.com/users/RackHD/received_events","type":"Organization","site_admin":false},"repo":{"id":46371352,"name":"specs","full_name":"RackHD/specs","owner":{"login":"RackHD","id":13982662,"avatar_url":"https://avatars.githubusercontent.com/u/13982662?v=3","gravatar_id":"","url":"https://api.github.com/users/RackHD","html_url":"https://github.com/RackHD","followers_url":"https://api.github.com/users/RackHD/followers","following_url":"https://api.github.com/users/RackHD/following{/other_user}","gists_url":"https://api.github.com/users/RackHD/gists{/gist_id}","starred_url":"https://api.github.com/users/RackHD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RackHD/subscriptions","organizations_url":"https://api.github.com/users/RackHD/orgs","repos_url":"https://api.github.com/users/RackHD/repos","events_url":"https://api.github.com/users/RackHD/events{/privacy}","received_events_url":"https://api.github.com/users/RackHD/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RackHD/specs","description":"specs for roadmap and design discussions","fork":false,"url":"https://api.github.com/repos/RackHD/specs","forks_url":"https://api.github.com/repos/RackHD/specs/forks","keys_url":"https://api.github.com/repos/RackHD/specs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RackHD/specs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RackHD/specs/teams","hooks_url":"https://api.github.com/repos/RackHD/specs/hooks","issue_events_url":"https://api.github.com/repos/RackHD/specs/issues/events{/number}","events_url":"https://api.github.com/repos/RackHD/specs/events","assignees_url":"https://api.github.com/repos/RackHD/specs/assignees{/user}","branches_url":"https://api.github.com/repos/RackHD/specs/branches{/branch}","tags_url":"https://api.github.com/repos/RackHD/specs/tags","blobs_url":"https://api.github.com/repos/RackHD/specs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RackHD/specs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RackHD/specs/git/refs{/sha}","trees_url":"https://api.github.com/repos/RackHD/specs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RackHD/specs/statuses/{sha}","languages_url":"https://api.github.com/repos/RackHD/specs/languages","stargazers_url":"https://api.github.com/repos/RackHD/specs/stargazers","contributors_url":"https://api.github.com/repos/RackHD/specs/contributors","subscribers_url":"https://api.github.com/repos/RackHD/specs/subscribers","subscription_url":"https://api.github.com/repos/RackHD/specs/subscription","commits_url":"https://api.github.com/repos/RackHD/specs/commits{/sha}","git_commits_url":"https://api.github.com/repos/RackHD/specs/git/commits{/sha}","comments_url":"https://api.github.com/repos/RackHD/specs/comments{/number}","issue_comment_url":"https://api.github.com/repos/RackHD/specs/issues/comments{/number}","contents_url":"https://api.github.com/repos/RackHD/specs/contents/{+path}","compare_url":"https://api.github.com/repos/RackHD/specs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RackHD/specs/merges","archive_url":"https://api.github.com/repos/RackHD/specs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RackHD/specs/downloads","issues_url":"https://api.github.com/repos/RackHD/specs/issues{/number}","pulls_url":"https://api.github.com/repos/RackHD/specs/pulls{/number}","milestones_url":"https://api.github.com/repos/RackHD/specs/milestones{/number}","notifications_url":"https://api.github.com/repos/RackHD/specs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RackHD/specs/labels{/name}","releases_url":"https://api.github.com/repos/RackHD/specs/releases{/id}","created_at":"2015-11-17T19:50:21Z","updated_at":"2015-11-17T19:50:38Z","pushed_at":"2015-12-10T21:42:04Z","git_url":"git://github.com/RackHD/specs.git","ssh_url":"git@github.com:RackHD/specs.git","clone_url":"https://github.com/RackHD/specs.git","svn_url":"https://github.com/RackHD/specs","homepage":null,"size":50,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":3,"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RackHD/specs/pulls/31"},"html":{"href":"https://github.com/RackHD/specs/pull/31"},"issue":{"href":"https://api.github.com/repos/RackHD/specs/issues/31"},"comments":{"href":"https://api.github.com/repos/RackHD/specs/issues/31/comments"},"review_comments":{"href":"https://api.github.com/repos/RackHD/specs/pulls/31/comments"},"review_comment":{"href":"https://api.github.com/repos/RackHD/specs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/RackHD/specs/pulls/31/commits"},"statuses":{"href":"https://api.github.com/repos/RackHD/specs/statuses/be29eba6bc3a8a170c7ab5ca555b5ac1917abdd5"}}}}