{"action":"created","comment":{"url":"https://api.github.com/repos/puppetlabs/packaging/pulls/comments/58268349","id":58268349,"diff_hunk":"@@ -0,0 +1,343 @@\n+# This rake task creates tickets in jira for removing a platform.\n+#\n+def get_platform_ticket_vars\n+  vars = {}\n+\n+  # configuration\n+  # Which tickets are we going to need for this platform?\n+  vars[:pe_only]      = Pkg::Util.boolean_value(Pkg::Util.get_var(\"PE_ONLY\"))\n+  vars[:server]       = Pkg::Util.boolean_value(Pkg::Util.get_var(\"SERVER\"))\n+\n+  # What information do we need about this platform?\n+  vars[:platform_tag] = Pkg::Util.get_var(\"PLATFORM_TAG\")\n+\n+  # Jira authentication - do this after validating other params, so user doesn't need to\n+  # enter password only to find out they typo'd one of the above\n+  vars.merge(Pkg::Util::Jira.get_auth_vars)\n+end\n+\n+def create_platform_tickets(jira, vars)\n+  description = {}\n+  description[:initial_email] = <<-DOC\n+Email should be sent out to puppet-users, puppet-dev, and puppet-announce notifying users the platform will no longer be supported.\n+DOC\n+\n+  description[:pe_pipeline] = <<-DOC\n+Platform needs to be removed from PE pipelines.\n+DOC\n+\n+  description[:pa_pipeline] = <<-DOC\n+Platform needs to be removed from puppet-agent pipelines.\n+DOC\n+\n+  description[:beaker_hostgenerator] = <<-DOC\n+The platform definition and any special tweaks need to be removed from https://github.com/puppetlabs/beaker-hostgenerator\n+DOC\n+\n+  description[:puppetlabs_release] = <<-DOC\n+Remove the platform from both PC* and pl-build-tools branch in puppetlabs-release\n+https://github.com/puppetlabs/puppetlabs-release/tree/PC1/configs/platforms\n+https://github.com/puppetlabs/puppetlabs-release/tree/pl-build-tools/configs/platforms\n+DOC\n+\n+  description[:puppet_agent] = <<-DOC\n+Remove platform definition and any special tweaks from puppet-agent https://github.com/puppetlabs/puppet-agent/tree/master/configs/platforms\n+DOC\n+\n+  description[:pl_build_tools_vanagon] = <<-DOC\n+Remove platform definition and any special tweaks from pl-build-tools-vanagon https://github.com/puppetlabs/pl-build-tools-vanagon/tree/master/configs/platforms\n+DOC\n+\n+  description[:packaging] = <<-DOC\n+Remove platform definition packaging hash https://github.com/puppetlabs/packaging/blob/master/lib/packaging/platforms.rb\n+DOC\n+\n+  description[:os_mirror] = <<-DOC\n+Remove platform from applicable os-mirror manifest in puppetlabs-modules\n+https://github.com/puppetlabs/puppetlabs-modules/tree/production/site/service/manifests/mrepo\n+https://github.com/puppetlabs/puppetlabs-modules/tree/production/site/service/files/mrepo\n+DOC\n+\n+  description[:vmpooler] = <<-DOC\n+Remove platform from vmpooler\n+DOC\n+\n+  description[:graphite_vmpooler] = <<-DOC\n+Remove platform from graphite\n+DOC\n+\n+  description[:repositories] = <<-DOC\n+Remove platform from public facing repositories.  At current there may not be a an archive location to store them.  Confirm within RE prior to action.\n+DOC\n+\n+  description[:final_email] = <<-DOC\n+Email should be sent out to puppet-users, puppet-dev, and puppet-announce confirming platform has been removed.\n+DOC\n+\n+  description[:server_pipeline] = <<-DOC\n+Platform needs to be removed from puppetserver pipelines.\n+DOC\n+\n+  description[:pdb_pipeline] = <<-DOC\n+Platform needs to be removed from puppetdb pipelines.\n+DOC\n+\n+  description[:ez] = <<-DOC\n+Platform needs to be removed from ezbake build targets.\n+DOC\n+\n+  # The subtickets to create for the individual tasks\n+  subtickets =\n+  [\n+    {\n+      :short_name   => 'initial_email',\n+      :project      => 'CPR',\n+      :summary      => \"Send email to community notifying of #{vars[:platform_tag]} removal\",\n+      :description  => description[:initial_email],\n+      :story_points => '1',\n+    },\n+    {\n+      :short_name   => 'pe_pipeline',\n+      :project      => 'PE',\n+      :summary      => \"Remove #{vars[:platform_tag]} from PE integration pipelines\",\n+      :description  => description[:pe_pipeline],\n+      :story_points => '3',\n+      :blocked_by   => ['initial_email'],\n+    },\n+    {\n+      :short_name   => 'pa_pipeline',\n+      :project      => 'PA',\n+      :summary      => \"Remove #{vars[:platform_tag]} from puppet-agent pipelines\",\n+      :description  => description[:pa_pipeline],\n+      :story_points => '3',\n+      :blocked_by   => ['pe_pipeline'],\n+    },\n+    {\n+      :short_name   => 'beaker_hostgenerator',\n+      :project      => 'QENG',\n+      :summary      => \"Remove #{vars[:platform_tag]} from beaker-hostgenerator\",\n+      :description  => description[:beaker_hostgenerator],\n+      :story_points => '1',\n+      :blocked_by   => ['pe_pipeline', 'pa_pipeline'],\n+    },\n+    {\n+      :short_name   => 'puppetlabs_release',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} from puppetlabs-release\",\n+      :description  => description[:puppetlabs_release],\n+      :story_points => '1',\n+      :blocked_by   => ['pa_pipeline'],\n+    },\n+    {\n+      :short_name   => 'puppet_agent',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} platform definition from puppet-agent\",\n+      :description  => description[:puppet_agent],\n+      :story_points => '1',\n+      :blocked_by   => ['pa_pipeline'],\n+    },\n+    {\n+      :short_name   => 'pl_build_tools_vanagon',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} platform definition from pl-build-tools-vanagon\",\n+      :description  => description[:pl_build_tools_vanagon],\n+      :story_points => '1',\n+      :blocked_by   => ['puppet_agent'],\n+    },\n+    {\n+      :short_name   => 'packaging',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} platform definition from packaging\",\n+      :description  => description[:packaging],\n+      :story_points => '1',\n+      :blocked_by   => ['puppet_agent'],\n+    },\n+    {\n+      :short_name   => 'os_mirror',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} from osmirror in puppetlabs-modules\",\n+      :description  => description[:os_mirror],\n+      :story_points => '1',\n+      :blocked_by   => ['puppet_agent'],\n+    },\n+    {\n+      :short_name   => 'vmpooler',\n+      :project      => 'RE',\n+      :summary      => \"Remove #{vars[:platform_tag]} from vmpooler\",\n+      :description  => description[:vmpooler],\n+      :story_points => '2',\n+      :blocked_by   => ['os_mirror'],\n+    },\n+    {\n+      :short_name   => 'graphite_vmpooler',\n+      :project      => 'OPS',\n+      :summary      => \"Remove #{vars[:platform_tag]} from graphite (vmpooler)\",\n+      :description  => description[:graphite_vmpooler],\n+      :story_points => '1',\n+      :blocked_by   => ['vmpooler'],\n+    },\n+    {\n+      :short_name   => 'repositories',\n+      :project      => 'CPR',\n+      :summary      => \"Remove #{vars[:platform_tag]} from repositories\",\n+      :description  => description[:repositories],\n+      :story_points => '1',\n+      :blocked_by   => ['packaging'],\n+    },\n+    {\n+      :short_name   => 'final_email',\n+      :project      => 'CPR',\n+      :summary      => \"Send email to community confirming #{vars[:platform_tag]} removal\",\n+      :description  => description[:final_email],\n+    },\n+  ]\n+\n+  # The subtickets for additonal server tasks\n+  if vars[:server]\n+    subtickets.push(\n+      {\n+        :short_name   => 'server_pipeline',\n+        :project      => 'SERVER',\n+        :summary      => \"Remove #{vars[:platform_tag]} from puppetserver pipelines\",\n+        :description  => description[:server_pipeline],\n+      },\n+      {\n+        :short_name   => 'pdb_pipeline',\n+        :project      => 'PDB',\n+        :summary      => \"Remove #{vars[:platform_tag]} from puppetdb pipelines\",\n+        :description  => description[:pdb_pipeline],\n+      },\n+      {\n+        :short_name   => 'ez',\n+        :project      => 'EZ',\n+        :summary      => \"Remove #{vars[:platform_tag]} from ezbake build targets\",\n+        :description  => description[:ez],\n+      },\n+    )\n+  end\n+  ## MAIN EPIC\n+\n+  summary = \"Remove #{vars[:platform_tag]}\"\n+  description[:top_level_ticket] = <<-DOC\n+It has come time to remove support for #{vars[:platform_tag]}. This epic is meant to track the effort to\n+remove the platform from applicable pipelines and support infrastructure.\n+DOC\n+\n+  # Values for the main ticket\n+  parent_project  = vars[:pe_only] ? 'RE' : 'CPR'\n+  parent_assignee = vars[:username]\n+\n+  jira.user(parent_assignee)\n+  jira.project(parent_project)\n+\n+  main_ticket = {\n+    :summary => summary,\n+    :description => description[:top_level_ticket],\n+    :project => parent_project,\n+    :assignee => parent_assignee,\n+    :type => 'Epic',\n+  }\n+\n+  parent_key, _ = jira.create_issue(main_ticket)\n+\n+  puts \"Main epic: #{parent_key} (#{parent_assignee}) - #{summary}\"\n+\n+\n+  ## SUPPORTING TICKETS\n+\n+  # We want to keep track of the tickets we've already created so that we can define\n+  # relationships between them in a human-readable way.\n+  subticket_hash = {}\n+\n+  # Create subtasks for each step of the release process\n+  subtickets.each do |subticket|\n+\n+    jira.user(subticket[:assignee]) if subticket[:assignee]\n+    jira.project(subticket[:project])\n+\n+    # Is this ticket a subtask with a parent ticket? If so, we need to figure out the parent key\n+    # and pass that information in during the ticket creation process\n+    if subticket[:parent]\n+      subticket[:parent] = subticket_hash[subticket[:parent]]['key']\n+      subticket[:type] = 'Sub-task'\n+      unless subticket[:parent].match(subticket[:project])\n+        fail \"Subtickets must be in the same project as their parent ticket. Did you mean to have ticket ##{subticket[:index]} block #{subticket[:parent]}?\"\n+      end\n+    end\n+\n+    # Define the relationship of all tickets that this ticket is blocked by\n+    # so we can pass in the key of the blocking ticket\n+    blocked_by = []\n+    if subticket[:blocked_by]\n+      subticket[:blocked_by].each do |linked_ticket|\n+        blocked_by << subticket_hash[linked_ticket]['key']\n+      end\n+    end\n+\n+    # Define the relationship of all tickets this ticket blocks so we can\n+    # pass in the key of the blocked ticket\n+    blocks = []\n+    if subticket[:blocks]\n+      subticket[:blocks].each do |linked_ticket|\n+        blocks << subticket_hash[linked_ticket]['key']\n+      end\n+    end\n+\n+    # If this ticket already has an epic parent, we don't want to link it against the main epic\n+    # since the epic parent *should* already be linked against the main ticket\n+    if subticket[:epic_parent]\n+      subticket[:epic_parent] = subticket_hash[subticket[:epic_parent]]['key']\n+    else # otherwise, we definitely need to link it to the main epic ticket somehow\n+      if subticket[:project] == 'RE' && (!subticket[:type] || subticket[:type] != 'Epic')","path":"tasks/platform-removal.rake","position":291,"original_position":291,"commit_id":"72eab55dfc64a7ed42da11cdc41ef8158802ae76","original_commit_id":"72eab55dfc64a7ed42da11cdc41ef8158802ae76","user":{"login":"melissa","id":4473089,"avatar_url":"https://avatars.githubusercontent.com/u/4473089?v=3","gravatar_id":"","url":"https://api.github.com/users/melissa","html_url":"https://github.com/melissa","followers_url":"https://api.github.com/users/melissa/followers","following_url":"https://api.github.com/users/melissa/following{/other_user}","gists_url":"https://api.github.com/users/melissa/gists{/gist_id}","starred_url":"https://api.github.com/users/melissa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/melissa/subscriptions","organizations_url":"https://api.github.com/users/melissa/orgs","repos_url":"https://api.github.com/users/melissa/repos","events_url":"https://api.github.com/users/melissa/events{/privacy}","received_events_url":"https://api.github.com/users/melissa/received_events","type":"User","site_admin":false},"body":"you should also add the `CPR` project to this list","created_at":"2016-04-01T21:12:33Z","updated_at":"2016-04-01T21:12:33Z","html_url":"https://github.com/puppetlabs/packaging/pull/527#discussion_r58268349","pull_request_url":"https://api.github.com/repos/puppetlabs/packaging/pulls/527","_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/comments/58268349"},"html":{"href":"https://github.com/puppetlabs/packaging/pull/527#discussion_r58268349"},"pull_request":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/527"}}},"pull_request":{"url":"https://api.github.com/repos/puppetlabs/packaging/pulls/527","id":64873175,"html_url":"https://github.com/puppetlabs/packaging/pull/527","diff_url":"https://github.com/puppetlabs/packaging/pull/527.diff","patch_url":"https://github.com/puppetlabs/packaging/pull/527.patch","issue_url":"https://api.github.com/repos/puppetlabs/packaging/issues/527","number":527,"state":"open","locked":false,"title":"(RE-5816) Add a task for platform removal tickets","user":{"login":"shermdog","id":3383063,"avatar_url":"https://avatars.githubusercontent.com/u/3383063?v=3","gravatar_id":"","url":"https://api.github.com/users/shermdog","html_url":"https://github.com/shermdog","followers_url":"https://api.github.com/users/shermdog/followers","following_url":"https://api.github.com/users/shermdog/following{/other_user}","gists_url":"https://api.github.com/users/shermdog/gists{/gist_id}","starred_url":"https://api.github.com/users/shermdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shermdog/subscriptions","organizations_url":"https://api.github.com/users/shermdog/orgs","repos_url":"https://api.github.com/users/shermdog/repos","events_url":"https://api.github.com/users/shermdog/events{/privacy}","received_events_url":"https://api.github.com/users/shermdog/received_events","type":"User","site_admin":false},"body":"Added a rake task to facilitate the removal of supported platforms.\r\n\r\nUsage:\r\n```\r\nPE_ONLY=true SERVER=true PLATFORM_TAG=remove_x86 JIRA_USER=user JIRA_INSTANCE=https://jira.host rake pl:platform_removal\r\n```\r\nPE_ONLY is for platforms that are only contained in PE\r\nSERVER is for platforms that are also puppetserver / puppetdb hosts","created_at":"2016-03-31T23:04:19Z","updated_at":"2016-04-01T21:12:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8645b6699c41c42abd8a2ed40332e95d57de1690","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/puppetlabs/packaging/pulls/527/commits","review_comments_url":"https://api.github.com/repos/puppetlabs/packaging/pulls/527/comments","review_comment_url":"https://api.github.com/repos/puppetlabs/packaging/pulls/comments{/number}","comments_url":"https://api.github.com/repos/puppetlabs/packaging/issues/527/comments","statuses_url":"https://api.github.com/repos/puppetlabs/packaging/statuses/72eab55dfc64a7ed42da11cdc41ef8158802ae76","head":{"label":"shermdog:RE-5816","ref":"RE-5816","sha":"72eab55dfc64a7ed42da11cdc41ef8158802ae76","user":{"login":"shermdog","id":3383063,"avatar_url":"https://avatars.githubusercontent.com/u/3383063?v=3","gravatar_id":"","url":"https://api.github.com/users/shermdog","html_url":"https://github.com/shermdog","followers_url":"https://api.github.com/users/shermdog/followers","following_url":"https://api.github.com/users/shermdog/following{/other_user}","gists_url":"https://api.github.com/users/shermdog/gists{/gist_id}","starred_url":"https://api.github.com/users/shermdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shermdog/subscriptions","organizations_url":"https://api.github.com/users/shermdog/orgs","repos_url":"https://api.github.com/users/shermdog/repos","events_url":"https://api.github.com/users/shermdog/events{/privacy}","received_events_url":"https://api.github.com/users/shermdog/received_events","type":"User","site_admin":false},"repo":{"id":43393980,"name":"packaging","full_name":"shermdog/packaging","owner":{"login":"shermdog","id":3383063,"avatar_url":"https://avatars.githubusercontent.com/u/3383063?v=3","gravatar_id":"","url":"https://api.github.com/users/shermdog","html_url":"https://github.com/shermdog","followers_url":"https://api.github.com/users/shermdog/followers","following_url":"https://api.github.com/users/shermdog/following{/other_user}","gists_url":"https://api.github.com/users/shermdog/gists{/gist_id}","starred_url":"https://api.github.com/users/shermdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shermdog/subscriptions","organizations_url":"https://api.github.com/users/shermdog/orgs","repos_url":"https://api.github.com/users/shermdog/repos","events_url":"https://api.github.com/users/shermdog/events{/privacy}","received_events_url":"https://api.github.com/users/shermdog/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/shermdog/packaging","description":"","fork":true,"url":"https://api.github.com/repos/shermdog/packaging","forks_url":"https://api.github.com/repos/shermdog/packaging/forks","keys_url":"https://api.github.com/repos/shermdog/packaging/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shermdog/packaging/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shermdog/packaging/teams","hooks_url":"https://api.github.com/repos/shermdog/packaging/hooks","issue_events_url":"https://api.github.com/repos/shermdog/packaging/issues/events{/number}","events_url":"https://api.github.com/repos/shermdog/packaging/events","assignees_url":"https://api.github.com/repos/shermdog/packaging/assignees{/user}","branches_url":"https://api.github.com/repos/shermdog/packaging/branches{/branch}","tags_url":"https://api.github.com/repos/shermdog/packaging/tags","blobs_url":"https://api.github.com/repos/shermdog/packaging/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shermdog/packaging/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shermdog/packaging/git/refs{/sha}","trees_url":"https://api.github.com/repos/shermdog/packaging/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shermdog/packaging/statuses/{sha}","languages_url":"https://api.github.com/repos/shermdog/packaging/languages","stargazers_url":"https://api.github.com/repos/shermdog/packaging/stargazers","contributors_url":"https://api.github.com/repos/shermdog/packaging/contributors","subscribers_url":"https://api.github.com/repos/shermdog/packaging/subscribers","subscription_url":"https://api.github.com/repos/shermdog/packaging/subscription","commits_url":"https://api.github.com/repos/shermdog/packaging/commits{/sha}","git_commits_url":"https://api.github.com/repos/shermdog/packaging/git/commits{/sha}","comments_url":"https://api.github.com/repos/shermdog/packaging/comments{/number}","issue_comment_url":"https://api.github.com/repos/shermdog/packaging/issues/comments{/number}","contents_url":"https://api.github.com/repos/shermdog/packaging/contents/{+path}","compare_url":"https://api.github.com/repos/shermdog/packaging/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shermdog/packaging/merges","archive_url":"https://api.github.com/repos/shermdog/packaging/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shermdog/packaging/downloads","issues_url":"https://api.github.com/repos/shermdog/packaging/issues{/number}","pulls_url":"https://api.github.com/repos/shermdog/packaging/pulls{/number}","milestones_url":"https://api.github.com/repos/shermdog/packaging/milestones{/number}","notifications_url":"https://api.github.com/repos/shermdog/packaging/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shermdog/packaging/labels{/name}","releases_url":"https://api.github.com/repos/shermdog/packaging/releases{/id}","deployments_url":"https://api.github.com/repos/shermdog/packaging/deployments","created_at":"2015-09-29T20:55:27Z","updated_at":"2015-09-29T20:55:28Z","pushed_at":"2016-03-31T23:11:19Z","git_url":"git://github.com/shermdog/packaging.git","ssh_url":"git@github.com:shermdog/packaging.git","clone_url":"https://github.com/shermdog/packaging.git","svn_url":"https://github.com/shermdog/packaging","homepage":null,"size":1831,"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":"puppetlabs:master","ref":"master","sha":"47097671c658df144d82cae8dd8c6aeadaa0a221","user":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":5209001,"name":"packaging","full_name":"puppetlabs/packaging","owner":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/puppetlabs/packaging","description":"","fork":false,"url":"https://api.github.com/repos/puppetlabs/packaging","forks_url":"https://api.github.com/repos/puppetlabs/packaging/forks","keys_url":"https://api.github.com/repos/puppetlabs/packaging/keys{/key_id}","collaborators_url":"https://api.github.com/repos/puppetlabs/packaging/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/puppetlabs/packaging/teams","hooks_url":"https://api.github.com/repos/puppetlabs/packaging/hooks","issue_events_url":"https://api.github.com/repos/puppetlabs/packaging/issues/events{/number}","events_url":"https://api.github.com/repos/puppetlabs/packaging/events","assignees_url":"https://api.github.com/repos/puppetlabs/packaging/assignees{/user}","branches_url":"https://api.github.com/repos/puppetlabs/packaging/branches{/branch}","tags_url":"https://api.github.com/repos/puppetlabs/packaging/tags","blobs_url":"https://api.github.com/repos/puppetlabs/packaging/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/puppetlabs/packaging/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/puppetlabs/packaging/git/refs{/sha}","trees_url":"https://api.github.com/repos/puppetlabs/packaging/git/trees{/sha}","statuses_url":"https://api.github.com/repos/puppetlabs/packaging/statuses/{sha}","languages_url":"https://api.github.com/repos/puppetlabs/packaging/languages","stargazers_url":"https://api.github.com/repos/puppetlabs/packaging/stargazers","contributors_url":"https://api.github.com/repos/puppetlabs/packaging/contributors","subscribers_url":"https://api.github.com/repos/puppetlabs/packaging/subscribers","subscription_url":"https://api.github.com/repos/puppetlabs/packaging/subscription","commits_url":"https://api.github.com/repos/puppetlabs/packaging/commits{/sha}","git_commits_url":"https://api.github.com/repos/puppetlabs/packaging/git/commits{/sha}","comments_url":"https://api.github.com/repos/puppetlabs/packaging/comments{/number}","issue_comment_url":"https://api.github.com/repos/puppetlabs/packaging/issues/comments{/number}","contents_url":"https://api.github.com/repos/puppetlabs/packaging/contents/{+path}","compare_url":"https://api.github.com/repos/puppetlabs/packaging/compare/{base}...{head}","merges_url":"https://api.github.com/repos/puppetlabs/packaging/merges","archive_url":"https://api.github.com/repos/puppetlabs/packaging/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/puppetlabs/packaging/downloads","issues_url":"https://api.github.com/repos/puppetlabs/packaging/issues{/number}","pulls_url":"https://api.github.com/repos/puppetlabs/packaging/pulls{/number}","milestones_url":"https://api.github.com/repos/puppetlabs/packaging/milestones{/number}","notifications_url":"https://api.github.com/repos/puppetlabs/packaging/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/puppetlabs/packaging/labels{/name}","releases_url":"https://api.github.com/repos/puppetlabs/packaging/releases{/id}","deployments_url":"https://api.github.com/repos/puppetlabs/packaging/deployments","created_at":"2012-07-27T20:18:19Z","updated_at":"2016-03-21T15:56:49Z","pushed_at":"2016-04-01T20:02:30Z","git_url":"git://github.com/puppetlabs/packaging.git","ssh_url":"git@github.com:puppetlabs/packaging.git","clone_url":"https://github.com/puppetlabs/packaging.git","svn_url":"https://github.com/puppetlabs/packaging","homepage":null,"size":2038,"stargazers_count":31,"watchers_count":31,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":51,"mirror_url":null,"open_issues_count":4,"forks":51,"open_issues":4,"watchers":31,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/527"},"html":{"href":"https://github.com/puppetlabs/packaging/pull/527"},"issue":{"href":"https://api.github.com/repos/puppetlabs/packaging/issues/527"},"comments":{"href":"https://api.github.com/repos/puppetlabs/packaging/issues/527/comments"},"review_comments":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/527/comments"},"review_comment":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/puppetlabs/packaging/pulls/527/commits"},"statuses":{"href":"https://api.github.com/repos/puppetlabs/packaging/statuses/72eab55dfc64a7ed42da11cdc41ef8158802ae76"}}}}